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

안드로이드 앱 전화걸기 (포어그라운드 서비스)

0 추천
안드로이드에서 전화를 거는 방법을 intent를 시작하는걸로 알고있습니다. StartActivity(intent)의 방식으로 전화를 걸게 되는데, 혹시 MainActivity가 존재하지 않는 상태(내려간상태) 즉 포어그라운드 서비스를 운용하고있어서 메인 화면을 날려버린 상태에서도 필요하면 전화를 걸수가 있나요. startActivity 자체가 서비스에서도 (onCreate 제외) 먹히지 않아서 질문 드립니다.

이의 목적은 앱이 백그라운드에서 조용히 잘 동작하고있다가, 화면을 위로 띄울 필요없이 갑자기 어떠한 컨디션이 충족되면 전화를 거는 기능을 추가 하고 싶습니다.
DroidNoob (200 포인트) 님이 2023년 10월 4일 질문

1개의 답변

0 추천

액티비티가 없는 곳(서비스 등)에서 Activity를 띄울 때는 Intent에 FLAG_ACTIVITY_NEW_TASK를 추가해 주시면 됩니다.
 

Intent activityIntent = new Intent(getApplicationContext(), YourActivity.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 액티비티 context가 아닌 곳에서는 반드시 필요.
startActivity(activityIntent); 

 

spark (227,830 포인트) 님이 2023년 10월 5일 답변
이 부분은 이해했습니다.
service class 내에서 함수 a
public void tmp(){

} 내에서 전화 걸기 intent를 작성했습니다.
문제는 이를 다른 클래스에서 불러들이고 싶을 때입니다.
해당 함수를 static으로 만들어 다른 클래스에서 불러들여서 쓰고 싶었는데
startActivity가 static 함수내에서 작동하지 않네요. 이를 해결할 방법이 있나요?

Non-static method 'startActivity(android.content.Intent)' cannot be referenced from a static context
혹시 작성하신 코드를 올려보시겠어요?
해결했습니다!. 답변감사합니다!.

임의로 생성된 클래스 내에서


Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + PhoneNumber ));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ContextCompat.startActivity(context,intent, intent.getExtras());

정상 작동합니다!
...