마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Service 에서 최소화된 App을 다시 상태그대로 화면에 띄우는 코드가 있나요?

0 추천
App이 최소화되면 onPause 에서 서비스가 실행되고 서비스에서 생성된 View를 클릭을 하면 다시 내려갔던 App이 띄워지고싶습니다.. (Fragment 를 사용한 App입니다.)

   Intent i = new Intent(getApplicationContext(), MainActivity.class);
//                        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                        startActivity(i);

이런식으로 FLAG를 이용하여 띄우려니

 

 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

 

이런 에러를남기고 죽어버리는군요 ㅠㅠ...

Service 에서 최소화된 App을 다시 상태그대로 화면에 띄우는 코드가 있나요?

검색 할 수 있는 키워드라도 알려주시면 감사드리겠습니다.
R0R0 (2,610 포인트) 님이 2017년 1월 31일 질문

2개의 답변

+1 추천
 
채택된 답변
PendingIntent를 사용해 보시기 바랍미다.
Development Guy (70,570 포인트) 님이 2017년 1월 31일 답변
R0R0님이 2017년 2월 1일 채택됨
Pending Intent 를 사용해서 아래와같이 만들어봤습니다.                  
 stopSelf();
 Intent i = new Intent(getApplicationContext(), MainActivity.class);
 i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
 PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, i, 0);
 try{
     pendingIntent.send();
 }catch (PendingIntent.CanceledException e){
     e.printStackTrace();
 }
헌데 새로운Activity가 하나더 떠서 이걸 꺼야지만 이전에 띄워졌던 App의 Activity가나오고, 블루투스 App인데 블루투스도 끊어져 버리네요 ㅠㅠ.. 제가했는 방법이 맞는지 알수있을까요?
자답입니다
manifest에서 Activity에 속성추가해주니 잘되네요
  android:launchMode="singleTask"
  android:clearTaskOnLaunch="true"
감사합니다~
0 추천
service와 broadcastreceiver에서는 start activity시에 FLAG_ACTIVITY_NEW_TASK를 해주셔야 합니다.

저기 주석 처리하신걸 다시 풀어보세요
prague (26,200 포인트) 님이 2017년 2월 1일 답변
그렇게 해봤었는데 새로운 Activity가 떠버리더군요..
제가원하는건 내려갔던 Activity가 상태를 그대로 유지하고 그대로 다시 띄우는건데.. 너무어렵네요
...