2017-10-28 11 views
0

사용자가 Google 내비게이션 앱 (위치 업데이트를 위해 백그라운드 서비스 사용)을 탐색하는 동안 POI (Point of Interest)에 대한 알림을받는 기능을 개발하고 있습니다.알림 도착 내 앱을 배경에 넣으십시오.

시나리오

1) 사용자가 클릭 내 응용 프로그램에서 버튼을 탐색

2) 그는 이제 사용자는, POI에 대한 Notification를 수신)

3를 탐색하는 데이터를 구글 탐색로 이동합니다 그는 그것을 클릭하고 내 앱으로 가져갑니다 (내 앱은 전경으로 가져 왔고 백그라운드에서 여전히 Google 내비게이션 i).

4) 이제 사용자가 내 앱을보고 있으며 이제 그 사용은 이제 Google 탐색 내가 전경 내 응용 프로그램이 달성 가져 오는, 그러나에 배경에 내 응용 프로그램을 넣어

을 시도 무엇

를 볼 수 있도록 같은 알림,이 경우에 나는, 배경 내 응용 프로그램을 삽입해야합니다 알림 클릭이 이루어지지 않습니다. (참)

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 (true)가 모든 앱에 홈 버튼을 눌러 본 경험이 없다고 생각합니다. 방금 테스트 했어. 그것은 호출 응용 프로그램에서만 작동합니다. – 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); 

알림을 클릭하면 브로드 캐스트를 보냅니다. 이 방송을 받게됩니다 활동은 당신이 활동에서이 작업을 위해 로컬 방송 수신기를 등록해야

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); 

(만 forground에서의 경우) 배경에 작업을 넣어 것입니다.

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

PendingIntent 브로드 캐스트를 제작하는 것에 대한 아이디어는 나를 도왔다. .. 고마워. 답변 허용됨 :) –