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);
        }
    }
相關文章
相關標籤/搜索