본문 바로가기

개발 관련 지식/안드로이드(Android)

[안드로이드] 액티비티(Activity)가 아닌 곳에서 Intent 호출 방법

* 액티비티(Activity)가 아닌 곳에서 Intent 호출 방법

 

안녕하세요 송군함대입니다~!^-^/

오늘의 포스팅 내용은 액티비티가 아닌 곳에서 Intent를 호출해야 될 경우가 있는데, 런타임 에러가 나타나게 됩니다~!

이를 해결할 수 있는 방법에 대해 적어볼까 합니다~!^-^

 

먼저 액티비티가 아닌 곳에서 Intent를 호출할 경우, 에러가 나는 것을 확인할 수 있습니다.

아래와 같은 문구를 확인할 수 있는데, Intent 를 띄워야 하는 Task를 정확히 알지 못해 발생하는 에러입니다.

Task 는 Activity 를 관리하는 것으로 액티비티를 띄우려면 해당 Task 를 띄워야 합니다.

액티비티가 아닌 Service, BroadcastReceiver, baseAdapter 등은 액티비티가 아니므로,

Intent 속성을 넣어 새로운 Task 를 만들겠다고 해야 합니다.

 [에러문구(런타임에러)]

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

 

해결 방법은 아래와 같습니다.

 [해결 방법(Intent 의 flag값 설정)]

Intent intentCall = new Intent(Intent.ACTION_CALL, uri);
intentCall.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentCall);