我有一个小应用,其中主要活动已经在前面并且可能会显示通知。当用户点击通知时,我希望主要活动获取意图附加内容并对其进行操作,但不确定它是如何运行的。
我的代码返回PendingInent以便在NotificationCompat.Builder中使用:
private static PendingIntent getPendingIntent(Context ctx, String brandId) {
Intent showIntent = new Intent(ctx, MainActivity.class);
showIntent.setAction(Intent.ACTION_MAIN);
showIntent.addCategory(Intent.CATEGORY_LAUNCHER);
showIntent.putExtra(PUSH_NOTIFICATION, true);
showIntent.putExtra(BRAND_ID, brandId);
return PendingIntent.getActivity(ctx, 0, showIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
我认为也许我的MainActivity会重新启动,但它不是
我该怎么做?
答案 0 :(得分:0)
执行类似onResume()....{ if(intent.getExtras().get("your_required_thing")!=null){ // do your stuff}
之类的操作,或者您也无法使用 broadCastReceiver 并在onResume中注册接收器...并获取广播onReceive
的意图附加内容
答案 1 :(得分:0)
您是否尝试覆盖MainActivity类中的“onNewIntent”方法?
例如:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//handle new intent here
}
由于您的活动已在运行,因此新的意图应该在这里。
答案 2 :(得分:0)
private static PendingIntent getPendingIntent(Context ctx, String brandId) {
Intent showIntent = new Intent(ctx, MainActivity.class);
showIntent.setAction(Intent.ACTION_MAIN);
showIntent.addCategory(Intent.CATEGORY_LAUNCHER);
showIntent.putExtra(PUSH_NOTIFICATION, true);
showIntent.putExtra(BRAND_ID, brandId);
return PendingIntent.getBroadcast(this, 0, showIntent, 0);;
}
然后创建广播类
public static class myNotificationCloseButtonHandler extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Close Clicked", Toast.LENGTH_SHORT).show();
Intent startIntent = new Intent(context, PlayerForegroundService.class);
startIntent.setAction(PlayerForegroundService.STOP_FOREGROUND_ACTION);
context.startService(startIntent);
}
}