BroadcastReceiverを使用して着信を傍受するプログラムを作成しました。アプリを起動すると、アプリが機能し始めます。問題は、Androidフォンを再起動すると、このBroadcastReceiverが機能しないことです。そのため、このためのサービスを作成する必要があると想定しています。しかし、いつサービスを開始し、BroadcastReceiver をどこで開始するかはわかりません。
BroadcastReceiver コード -
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" />
は働いているとは思わない。
また、サービスなしでこれを行うことは可能ですか?いつでも(再起動後でも)通話を傍受するのに役立つアプローチを提案してください。