当前位置: 首页 > 知识库问答 >
问题:

当应用程序被关闭时,如何在Android中检测来电号码?

郑旭
2023-03-14

我想检测传入/传出电话号码时,我的应用程序不运行,它被杀死。我已经实现了以下代码,它只检测呼叫,如果应用程序正在运行或在后台,但不工作时,应用程序被杀死。

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>

共有1个答案

羊和光
2023-03-14

不完全是一个答案,但是你可以创建你的自定义调用应用程序,然后通过请求许可使其默认。在这个存储库中可以找到一个演示应用程序。看看这个应用程序代码,你可能会得到它。

 类似资料: