Android 响应notification事件

两种状况,第三种状况,相似于微信,点击消息,跳到聊天框,退出后回到主页android

第一种状况就是:数组

点击Notification ——>进入secActivity ——> back键 ——> 退出应用微信

PendingIntent contentIntent = PendingIntent.getActivity(context, 0,  intent, PendingIntent.FLAG_CANCEL_CURRENT);  

第二种状况:ide

点击Notification ——>进入secActivity ——> back键 ——> 退到mainActivity ——>back键 ——>退出应用this

须要添加intent数组,这里是两个单位,因此先打开的是secActivity(intent[1]),spa

须要在Manifest中对指定的Activity设置属性code

<activity android:name=".secActivityl"
        android:launchMode="singleTask"
        android:taskAffinity=""
        android:excludeFromRecents="true">
</activity>

PendingIntent提供了个静态方法getActivities,里面能够设置一个Intent数组,用来指定一系列的Activity。blog

Intent[] makeIntentStack(Context context) {
    Intent[] intents = new Intent[2];
    intents[0] = Intent.makeRestartActivityTask(new ComponentName(context, com.example.notificationtest.MainActivity.class));
    intents[1] = new Intent(context,  com.example.notificationtest.SubActivity.class);
    return intents;
}

其中须要注意的是Intent.makeRestartActivityTask方法,这个方法用来建立activity栈的根activityget

接下来,建立并显示Notification:it

void showNotification(Intent intent) {
    Notification notification = new Notification(
            R.drawable.status_icon, 
            "消息栏顶部标题",
            System.currentTimeMillis());

    PendingIntent contentIntent = PendingIntent.getActivities(
            this,
            0,
            makeIntentStack(this), 
            PendingIntent.FLAG_CANCEL_CURRENT);
    notification.setLatestEventInfo(
            this, 
            "下拉消息栏标题",
            "消息内容", 
            contentIntent);
    notification.flags |= Notification.DEFAULT_ALL;

    mNM.notify(1, notification);
}

 第三种:

点击Notification ——>进入mainActivity——>根据bundle信息——>进入secActivity ——> back键 ——> 退到 mainActivity——>back键 ——>退出应用  

这里须要注意的是,当点击notification的时候,应用是否已经在栈中

1.若是应用不在,也就是未打开状态,那么使用singltask模式打开,bundle消息能够在onstart中获取

2.若是应用已经在前台,那么点击notification是不会出发onstart更新intent消息的,须要使用

@Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Log.e("tag", "onNewINtent执行了");
        setIntent(intent);
        String ringName = intent.getStringExtra("ringName");
        Log.e("tag", ringName+"传过来的值");
        if (ringName != null) {
            pager.setCurrentItem(1);
        }
    }
相关文章
相关标签/搜索