【问题标题】:howto get startActivityForResult within GCM receiver如何使用 GCM 接收器获取 startActivityForResult
【发布时间】:2013-12-23 06:33:28
【问题描述】:

请帮助我。我需要从 GCM 接收器获取活动结果,代码如下

在 MainActivity.class 上

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       super.onActivityResult(requestCode, resultCode, data);
      //PARSE RESULT CODE
       if (resultCode == RESULT_OK){
           Toast.makeText(_context,"WAS LOGIN", Toast.LENGTH_LONG).show();
           mainProgram();
        }else if(resultCode == RESULT_CANCELED){
           Toast.makeText(_context,"WAS NOT LOGIN", Toast.LENGTH_LONG).show();
           showLoginForm();
        }
  }


@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(SampleList.THEME); // Used for theme switching in samples
    super.onCreate(savedInstanceState);
    Intent intent = new Intent(MainActivity.this, LoginProc.class);
    startActivityForResult(intent, 0);      
}
private void mainProgram(){
 setContentView(R.layout.mainlayout);
}

在 LoginProc.class 中

@Override
protected void onCreate(Bundle savedInstanceState) {    
     GCMRegistrar.checkDevice(this);
     GCMRegistrar.checkManifest(this);  
     GCMRegistrar.register(this, SENDER_ID);
     registerReceiver(mHandleMessageReceiver,new IntentFilter(DISPLAY_MESSAGE_ACTION));
     this.regId = GCMRegistrar.getRegistrationId(this);
     GCMRegistrar.register(this, SENDER_ID);
}

private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
        // Waking up mobile if it is sleeping
        WakeLocker.acquire(getApplicationContext());
        Toast.makeText(getApplicationContext(),"New Message On MHandled:"+newMessage, Toast.LENGTH_LONG).show();

        // Releasing wake lock
        WakeLocker.release();

        //hide progress
        showProgress(false); 

        //set result vars for this intent
        Intent i=new Intent();
    LoginProc.this.setResult(RESULT_OK,i);
        //Intent i = new Intent();
    //setResult(RESULT_CANCELED, i);
    finish();
    }
};

即使在事件 GCM 成功后,结果也始终显示 ToastText“WAS NOT LOGIN”(Toas“在 Mhandled 上显示新消息”)。

这里需要正确的方向,非常感谢

【问题讨论】:

    标签: java android android-intent broadcast google-cloud-messaging


    【解决方案1】:

    确保您已授予所有需要的权限,并且它通过 GCMIntentService 接收消息,这些消息必须在 Manifest 中注册。

    检查一下 link

    这将说明 GCM 注册和从服务器获取推送消息的步骤。

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      相关资源
      最近更新 更多