-1

我的Android應用程序通過GCM偵聽推送通知。 在消息中,我把一些信息放在應用程序中處理一個json對象,所以我可以根據它開始不同的活動。 下面的代碼開始的PendingIntent:Android推送通知。 App開始主要活動

@Override 
    public void onMessageReceived(String from, Bundle data) { 

... 
... 
// here i create the pending intent object based on json sent in the notification message from server side 
... 
... 
// add the notification 
      NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
        .setSmallIcon(defaultIcon) 
        .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_my_icon)) 
        .setContentTitle("My Application") 
        .setContentText(body) 
        .setAutoCancel(true) 
        .setSound(defaultSoundUri) 
        .setVibrate(vibrate) 
        .setContentIntent(pendingIntent); 

什麼是我不明白是爲什麼呢,如果應用程序沒有運行,應用程序啓動的主要活動。我想要的是,它關閉reamins直到用戶點擊通知。那可能嗎?有一種方法?

感謝 達維德

回答

0

我要的是,它reamins封閉,直到上通知的用戶點擊。

應該可以的。不要給你的「主要活動」佈局,做你的工作來顯示通知,並將onClick通知行爲的意圖放入到NotificationBuilder中。之後直接關閉活動。 用另一個活動捕捉這個意圖(將另一個 活動類加入到意圖中),它有一個佈局。

編輯:

你也可以應用透明應用主題的主要活動,以避免 彈出黑屏幾毫秒。

<style name="AppTheme.Transparent"> 
    <item name="android:windowBackground">@color/transparent</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowShowWallpaper">true</item> 
    </style> 

用它在你的清單:

android:theme="@style/AppTheme.Transparent" 
+0

謝謝JasksOnF1re!這是一個很好的解決方案,我接受它。我在做的是Whatsapp messenger這樣着名的應用程序如何實現它。事實上,在聊天中的新消息上,應用程序未啓動。只有當我點擊通知時,它纔會被打開。由於我可以「連接」通知消息上的特定活動(有一個特定的方法「setContentIntent」),這聽起來很奇怪,因此我們必須爲此實施「解決方法」。這仍然不清楚:-) – Davide

+0

我敢打賭,他們已經實施了一項服務,在後臺偵聽推送。我不確定,但我認爲你可以配置gcm來使服務得到推動。 – JacksOnF1re