안녕하세요 내가 들어오는 호출을들을 수있는 수신기와 응용 프로그램을했습니다 때 중지 . 앱을 열거 나 배경 인 경우에만수신기</p> <p>내 문제는 내가 (응용 프로그램의 목록에서 떨어져 슬쩍) 닫을 때 수신기가 더 이상 작동하지 않는다는 것입니다,
이<receiver
android:name=".demo.CallReceiver"
android:exported="true"
android:enabled="true">
<intent-filter android:priority="999">
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
<intent-filter android:priority="999">
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
이 작동 : 내가 시도
우선과 같이 안드로이드 매니페스트에 정의 된 수신기 자체입니다.
내가 온라인 모습이보고 - (매니페스트에) https://stackoverflow.com/a/46889335/7079340 그래서 난과 같이 내 자신의 서비스를 만들어 :
<service android:name=".Service.CallService" android:enabled="true"
android:exported="false"> <intent-filter>
<action android:name="com.package.name.IRemoteConnection" />
</intent-filter>
</service>
과 클래스 :
public class CallService extends Service {
private static BroadcastReceiver m_Receiver;
@Override
public IBinder onBind(Intent arg0)
{
Log.e("SERVICELOG","bind");
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("SERVICELOG","start command");
return START_STICKY;
}
@Override
public void onCreate()
{
Log.e("SERVICELOG","create");
Receiver();
}
@Override
public void onDestroy()
{
Log.e("SERVICELOG","destroy");
try{
unregisterReceiver(m_Receiver);}catch (Exception e){
Log.e("SERVICELOG"," "+e.getMessage());
}
}
private void Receiver()
{
m_Receiver = new CallReceiver();
}
}
는 그것을 시작 내 Splashscreen의 oncreate 및 로그를 인쇄하고 작동합니다! 서비스없이이 작업을 수행 할 수있는 방법은 무엇입니까? 배터리 문제가 걱정되는 등의 문제가 있습니까? 감사 !
예 나는 내 질문을 편집하고 ondestroy를 제거하고 작동하지만 항상 서비스를 유지하는 데 대한 비용이 걱정됩니다. 다른 방법이 있습니까? – yanivtwin
필자는 서비스가 필요할 때까지 중단해야한다고 생각합니다. 예를 들어 SMS 메시지를 수신하여 보관하려면 (어쩌면 whatsapp과 같은 앱에 알림을 제공하는 등) 메시지를 열어 둘 수 있지만 앱이 실행되는 동안 서비스를 사용하려는 경우 중지 할 수 있습니다 앱이 닫힐 때. –
또한 서비스를 실행하기 위해 값이 필요하다고 가정하고, 값이 null이면 "앱이 중지되었습니다."라는 메시지를 항상 표시합니다. 내 배경 응용 프로그램 중 일부에서 그것을 경험했다. –