点击Parse的推送通知打开活动

我想从Parse接收一个推送通知并打开一个List活动,并在开始活动之前使用intent.putextra(“dataFromParse”)。 我能够接收推,但只能通过使用这个打开MainActivity:

PushService.setDefaultPushCallback(this, MainActivity.class); ParseInstallation.getCurrentInstallation().saveInBackground(); 

我想要这个作为默认,但也应该能够启动列表活动。 我也尝试使用客户接收器,但是我只能在接收推送时直接打开活动,而不是点击它。

manifest.xml文件:

 <receiver android:name="com.example.Push android:exported="false"> <intent-filter> <action android:name="com.example.UPDATE_STATUS" /> </intent-filter> </receiver> 

Push.java:

 public class Push extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //Start activity } } 

我不知道的是我应该如何在后台捕获推送,并说当用户单击通知时,它应该打开带有特定intent.putExtra(“dataFromParse”)的List活动。 我应该在哪里编码,如何? 在MainActivity中,在List活动中,还是与客户接收者做其他事情?

Related of "点击Parse的推送通知打开活动"

解决了它,有默认的活动作为MainActivity,但检查意图,如果有“com.parse.Data”中的东西,我会开始一个新的意图。

 Intent intent = getIntent(); Bundle extras = intent.getExtras(); String jsonData = extras.getString("com.parse.Data"); JSONObject json = new JSONObject(jsonData); String pushStore = json.getString("data"); if(pushStore!=null) { Intent pushIntent = new Intent(); pushIntent.setClassName(MainActivity.this, "package.name.List"); pushIntent.putExtra("store", pushStore); startActivity(pushIntent); } 

然后用json发送一个推送:{“alert”:“Test”,“data”:“store1”}

@arvindwill希望这会有所帮助。

试试这个…它完美的作品….

 try { Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { String jsonData = extras.getString("com.parse.Data"); JSONObject json; json = new JSONObject(jsonData); String pushStore = json.getString("alert"); data.setText(pushStore); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

根据https://www.parse.com/docs/android/guide#push-notifications-customizing-notifications上的官方Parse文档&#xFF1A;

如果您的推送没有“uri”参数,onPushOpen将调用您的应用程序的启动器活动。

所以,目前接受的答案只考虑到你的推无“uri”,并打开你的MainActivity的情况。 如果你想打开一个具体的活动,你可以为该活动定义一个intent-filter ,并在推送过程中发送该意图filteruri。

您应该在接收器类中重写onPushOpen(…)方法:

 import com.parse.ParsePushBroadcastReceiver; public class PushIntentReceiver extends ParsePushBroadcastReceiver { @Override protected void onPushOpen(Context context, Intent intent) { JSONObject pushData = null; try { pushData = new JSONObject(intent.getStringExtra(KEY_PUSH_DATA)); Intent pushIntent = new Intent(context, YourActivity.class); pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); pushIntent.putExtra("store", pushData.getString("data")); context.startActivity(pushIntent); } catch (JSONException e) { e.printStackTrace(); } } }