我是Android编程新手。我有一个程序,它使用BroacastReciever截取来电。当我启动我的应用程序时,它开始工作。现在问题是当我重新启动我的Android手机时,这个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" />
无效。
此外,没有服务可以这样做吗?请建议一些方法,它可以帮助我拦截电话转接(即使重启后)。
答案 0 :(得分:1)
您未正确关闭了第一个操作代码。您的接收器部分应如下所示:
<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" />
</intent-filter>
</receiver>
此外,您没有使用服务。您正在使用广播接收器。 有关基础知识Application Fundamentals.
,请参阅此页面