【问题标题】:Can't open activity onPushOpen(parse.com)无法打开活动 onPushOpen(parse.com)
【发布时间】:2015-09-17 14:45:44
【问题描述】:

对不起我的英语。我创建自定义通知(使用 parse.com 和 lib)。我想要这样:我收到通知->单击此->打开新活动。我花了很多时间来解决这个问题,但没有成功。我的代码:

public class Receiver extends ParsePushBroadcastReceiver {

    NotificationCompat.Builder mBuilder;
    int mNotificationId = 001;


    @Override
    public void onPushOpen(Context context, Intent intent) {
        ParseAnalytics.trackAppOpenedInBackground(intent);

        Intent i = new Intent(context, Main.class);
        i.putExtras(intent.getExtras());
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }


    @Override
    public void onReceive(Context context, Intent intent) {

        PendingIntent resultPendingIntent = PendingIntent.getActivity(context,
                0, intent, PendingIntent.FLAG_UPDATE_CURRENT);


        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
        wl.acquire(15000);

        mBuilder = new NotificationCompat.Builder(context);
        mBuilder.setVibrate(new long[]{1000, 1000});
        mBuilder.setSmallIcon(R.drawable.icon); //You can change your icon
        mBuilder.setContentText("Content");
        mBuilder.setContentTitle("Title");
        mBuilder.setSound(Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.beep1));
        mBuilder.setAutoCancel(true);

        mBuilder.setContentIntent(resultPendingIntent);

        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(context.NOTIFICATION_SERVICE);

        notificationManager.notify(mNotificationId, mBuilder.build());


    }
}

清单

<receiver android:name=".Receiver"
    android:exported="false">
    <intent-filter>
        <action android:name="com.parse.push.intent.RECEIVE" />
        <action android:name="com.parse.push.intent.DELETE" />
        <action android:name="com.parse.push.intent.OPEN" />
    </intent-filter>
</receiver>

【问题讨论】:

    标签: android parse-platform push


    【解决方案1】:

    您可以启动一个新活动,该活动可以在单独的屏幕/布局上显示新通知。

    为此,转到您的 ParseApplication.java

    public class ParseApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            Parse.initialize(this, keys.applicationId, keys.clientKey);
            PushService.setDefaultPushCallback(this, NewActivity.java);
            ParseInstallation.getCurrentInstallation().saveEventually();
        }
    

    基本上,当您收到通知并且用户单击时,它会加载 NewActivity.java 进而打开 xml 文件。

    现在在NewActivity.java 中转到它的onCreatesetContentView

    setContentView(R.layout.**layout name**);
    

    输入你的xml文件。

    不要忘记在清单中添加活动。

    【讨论】:

      【解决方案2】:

      我可以使用以下代码 sn-p 来打开预期的活动!

      @Override
          protected void onPushOpen(Context context, Intent intent) {
              try {
                  super.onPushOpen(context, intent);
                  ParseAnalytics.trackAppOpenedInBackground(intent);
                  PushService.setDefaultPushCallback(context, NewFragment.class);
                  ParseAnalytics.trackAppOpenedInBackground(intent);
                  Intent i = new Intent(context, NewFragment.class);
                  i.putExtras(intent.getExtras());
                  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                  context.startActivity(i);
              } catch (Exception e) {
                  Log.d(TAG, "onPushOpen Error : " + e);
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-24
        • 1970-01-01
        • 2016-05-08
        • 2018-08-03
        • 1970-01-01
        • 2014-09-22
        • 2019-03-08
        • 2016-08-13
        相关资源
        最近更新 更多