如何在已经运行的活动中处理PendingIntent

时间:2018-02-12 19:02:00

标签: android android-pendingintent

我有一个小应用,其中主要活动已经在前面并且可能会显示通知。当用户点击通知时,我希望主要活动获取意图附加内容并对其进行操作,但不确定它是如何运行的。

我的代码返回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会重新启动,但它不是

我该怎么做?

3 个答案:

答案 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);
        }


}