Android 即使在开机后也可以收听手机状态
在我的应用程序中,我使用Android 即使在开机后也可以收听手机状态,android,broadcastreceiver,phone-state-listener,Android,Broadcastreceiver,Phone State Listener,在我的应用程序中,我使用广播接收器收听手机状态事件(即收到的呼叫、空闲等)。代码如下: public class PhoneCallreceiver extends BroadcastReceiver { private boolean ringing; private boolean received; public PhoneCallreceiver() { } @Override public void onReceive(Context context
广播接收器
收听手机状态事件(即收到的呼叫、空闲等)。代码如下:
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>
<receiver
android:name=".backend.BootStarter"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
代码:
找到了我问题的答案,接收phonestate的intentfilter操作是android.telephony.TelephonyManager.action\u PHONE\u STATE\u CHANGED 我的更新代码如下:
public class BootStarter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PhoneCallreceiver callreceiver = new PhoneCallreceiver();
context.registerReceiver(new PhoneCallreceiver(), new IntentFilter(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED));
}
}
BootStarter是否未分层或未正确注册电话状态广播接收器?BootStarter正在启动,但如何在BootStarter的onReceive内启动PhoneCallReceiver?是否尝试将引导完成的意图筛选器添加到.PhoneCallReceiver?如果我这样做,则会在引导后调用PhoneCallReceiver,但只有在接收到调用时才需要执行该代码
public class BootStarter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PhoneCallreceiver callreceiver = new PhoneCallreceiver();
context.registerReceiver(new PhoneCallreceiver(), new IntentFilter(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED));
}
}