2017-10-28 86 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我..谢谢。接受的答案:) –