0

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" />は働いているとは思わない。

また、サービスなしでこれを行うことは可能ですか?いつでも(再起動後でも)通話を傍受するのに役立つアプローチを提案してください。

4

1 に答える 1