【发布时间】:2015-02-11 19:57:35
【问题描述】:
在我的应用程序中,我使用Broadcast Receiver 收听电话状态事件(即接听电话、空闲等)。代码如下:
public class PhoneCallreceiver extends BroadcastReceiver {
private boolean ringing;
private boolean received;
public PhoneCallreceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Log.v("ranjith", "enterted receiver");
Bundle bundle = intent.getExtras();
String incomingnumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
String state = bundle.getString(TelephonyManager.EXTRA_STATE);
Log.v("ranjapp", state);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
ringing = true;
received = false;
}
}
Manifest.xml
<receiver
android:name=".PhoneCallreceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
我的问题是我想在设备重新启动后自动启动BroadCast Receiver。我有一个BroadCast Receiver 来收听开机,但我不确定如何启动PhoneCallreceiver BroadCast 接收器。
Manifest.xml
<receiver
android:name=".backend.BootStarter"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
代码:
public class BootStarter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PhoneCallreceiver callreceiver = new PhoneCallreceiver();
context.registerReceiver(callreceiver,new IntentFilter(**what to put here**));
}
}
【问题讨论】:
-
BootStarter 是否没有分层或没有正确注册手机状态广播接收器?
-
BootStarter正在启动,但是如何在BootStarter的onReceive中启动PhoneCallReceiver?
-
您是否尝试将启动完成的意图过滤器添加到您的 .PhoneCallReceiver 中?
-
如果我这样做,PhonecallReceiver 将在启动后被调用,但只有在收到调用时才会执行代码
标签: android broadcastreceiver phone-state-listener