저는 안드로이드 프로그래밍에 익숙하지 않습니다. BroacastReciever를 사용하여 들어오는 호출을 가로 채는 프로그램을 작성했습니다. 내 앱을 시작하면 작동하기 시작합니다. 이제 문제는 안드로이드 폰을 다시 시작할 때 BroadcastReciever가 작동하지 않는다는 것입니다. 그래서 나는 이것을 위해 봉사 할 필요가 있다고 가정하고 있습니다. 그러나 언제 서비스를 시작할 것인지, BroadcastReciever를 어디에서 시작해야할지 모르겠습니다.재부팅 후 BroadcastReciever 작업을 수행하는 방법은 무엇입니까?
BroadcastReciever 코드 -
public class CallInterceptor extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Service started", Toast.LENGTH_LONG).show();
Bundle extras = intent.getExtras();
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
Toast.makeText(context, "Phone is " + state, Toast.LENGTH_LONG).show();
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
String phoneNumber = extras
.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
Toast.makeText(context, "Call from " + phoneNumber, Toast.LENGTH_LONG).show();
//sendSMS(phoneNumber);
//toggle ringer mode
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
toggleMode(am);
}
}
}
AndroidManifest를 파일 -
<receiver android:name="com.nagarro.service.CallInterceptor" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</action>
</intent-filter>
</receiver>
나는 <action android:name="android.intent.action.BOOT_COMPLETED" />
이 작동 생각하지 않습니다.
또한 서비스가 없어도 가능합니까? 재부팅 후에도 통화 연장 시간을 가로 챌 수있는 방법을 제안하십시오.
태그를 수정 해 주셔서 감사합니다 ... 서비스를 사용하고 있지는 않지만 제 질문은이 코드가 충분한 지 또는 서비스를 받아야합니까? –
감사합니다 마이크. 내 코드가 올바르게 태그를 닫은 후 작동 중입니다. –
실제로이 BroacastReciever를 백그라운드에서 영원히 실행할 계획입니다 ... 문제입니까? –