无法打开 activity onPushOpen(parse.com)
Can't open activity onPushOpen(parse.com)
对不起我的英语。我创建自定义通知(使用 parse.com 和 lib)。我想要这样:我收到通知 -> 单击此 -> 打开新 activity。我花了很多时间来解决这个问题,但没有成功。我的代码:
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>
我可以使用以下代码片段打开预期的 activity!
@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);
}
}
您可以启动一个新的 activity,它可以单独显示新的通知 screen/layout。
为此去你的 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
中转到它在 setContentView
中的 onCreate
setContentView(R.layout.**layout name**);
把你的xml文件。
不要忘记在清单中添加 activity。
对不起我的英语。我创建自定义通知(使用 parse.com 和 lib)。我想要这样:我收到通知 -> 单击此 -> 打开新 activity。我花了很多时间来解决这个问题,但没有成功。我的代码:
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>
我可以使用以下代码片段打开预期的 activity!
@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);
}
}
您可以启动一个新的 activity,它可以单独显示新的通知 screen/layout。
为此去你的 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
中转到它在 setContentView
onCreate
setContentView(R.layout.**layout name**);
把你的xml文件。
不要忘记在清单中添加 activity。