2017-10-28 85 views
0

我上的功能,我得到通知的POI(興趣點),而用戶瀏覽通過谷歌導航應用(用於後臺服務來獲得位置更新)工作。點擊通知後把我的應用程序的背景

場景

1)用戶單擊我的應用程序導航鍵

2)他被帶到谷歌導航數據導航

3)現在,用戶將收到Notification的POI,然後他點擊了它,他被帶到我的應用程序(我的應用程序帶到前臺,還是谷歌導航我在後臺)

4)現在用戶是看到我的應用程序,現在他點擊相同的通知,在這種情況下,我必須把我的應用程序的背景,使得在使用現在看到谷歌導航

我試圖

將我的應用前景實現的,但把我的應用程序的背景上通知點擊未實現。

moveTaskToBack(真)這是我碰到的,但我怎麼能在通知點擊實現這個

代碼

Intent intent = new Intent(); 
     intent.setComponent(new ComponentName(getPackageName(), B_Activity.class.getName())); 
     intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     intent.putExtra("toFront", toFront); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
+0

** moveTaskToBack(boolean bool)**是一個Actvity類的方法。所以你只能用活動引用來調用它。我不知道有什麼辦法可以做到這一點。您可以執行的操作以通知方式調用活動,然後驗證活動中的意圖是否在前臺。 – ADM

+0

moveTaskToBack(true)給出按下主頁按鈕的體驗。即每個應用程序都放在後臺。我想只有我在BG的應用程序,使用戶看到導航應用 –

+0

我不認爲moveTaskToBack(真)給按home鍵所有的應用程序的經驗。我只是測試它。它僅適用於調用應用程序。 – ADM

回答

1

moveTaskToBack(布爾布爾)是一種方法,活動類。所以你只能用活動引用來調用它。我不知道有什麼辦法可以做到這一點。你可以做什麼以通知爲目的發送廣播,然後驗證活動中的意圖,如果它在前臺 - >調用movetaskBack()。

如果您B_Activity沒有UI。然後只需在Pending Intent中設置null組件。 使用本地廣播通知您當前正在運行的活動來調用moveTaskToBack()。

Intent intent = new Intent(); 
intent.setAction("com.settaskback");//Your custom action goes here 
LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 

然後發送廣播通知點擊。這將收到該廣播的活動將把任務背景(僅當它在forground)

final Intent broadcastIntent = new Intent("com.settaskback"); 
     PendingIntent intent = PendingIntent.getBroadcast(getApplicationContext(), 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
     notificationBuilder.setContentIntent(intent); 
     notification = notificationBuilder.build(); 
     notification.flags |= Notification.FLAG_AUTO_CANCEL; 
     NotificationManager mNotificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(1, notification); 

您需要註冊一個本地廣播接收器在活動這一行動。

@Override 
    public void onReceive(Context context, Intent intent) { 
      if(somecondition){ 
       moveTaskToBack(true); 
      } 
    } 
+0

您的想法創造PendingIntent廣播heped我..謝謝。接受的答案:) –