如何在应用程序被杀死时检测 Android 中的来电 phone 号码?
How to detect incoming call phone number in Android when app is killed?
我想检测 incoming/outgoing 调用 phone 号码时我的应用程序不是 运行,它被杀死了。我已经实现了以下代码,它仅在应用程序处于 运行 或在后台但在应用程序被终止时不工作时检测调用。
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>
不完全是答案,但您可以创建自定义呼叫应用程序,然后通过请求许可将其设为默认。可以找到演示应用 on this repository。看看这个应用程序代码,你可能会明白。
我想检测 incoming/outgoing 调用 phone 号码时我的应用程序不是 运行,它被杀死了。我已经实现了以下代码,它仅在应用程序处于 运行 或在后台但在应用程序被终止时不工作时检测调用。
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>
不完全是答案,但您可以创建自定义呼叫应用程序,然后通过请求许可将其设为默认。可以找到演示应用 on this repository。看看这个应用程序代码,你可能会明白。