我编写了一个使用 BroadcastReceiver 拦截来电的程序。当我启动我的应用程序时,它开始工作。现在的问题是当我重新启动我的 android 手机时,这个 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" />
是工作。
另外,是否可以在没有服务的情况下做到这一点?请建议可以帮助我随时拦截呼叫的方法(即使在重新启动后)。