【发布时间】:2022-01-13 06:46:01
【问题描述】:
我想在我的应用程序未运行时检测来电/去电电话号码,它被杀死了。我已经实现了以下代码,它仅在应用程序正在运行或在后台检测调用,但在应用程序被终止时不工作。
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
String outgoingPhoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
showToast(context,"Call Outgoing to "+outgoingPhoneNumber);
}else if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)){
String callEndedNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
showToast(context,"Call Ended to "+callEndedNumber);
}else if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)){
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
showToast(context, "Incoming call from "+ incomingNumber);
}
}
private void showToast(Context context, String message){
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
}
清单
<receiver android:name=".CallReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
【问题讨论】:
-
“它死了,戴夫”。死物不显示生命体征,Android 要求用户手动启动应用程序以使所有接收器工作。除非用户友好地重新启动应用程序,否则您可能会死机
-
这是否回答了您的问题? stackoverflow.com/a/63352467/6419026
-
trueCaller 在不将其设为默认通话应用的情况下如何做到这一点?
-
“它被杀死了”——确切地说是什么意思?而且,您在什么设备/模拟器上测试过这种行为?
标签: android broadcastreceiver phone-call