在Android API29+中检测来电和去电 [英] Detecting incoming and outgoing calls in android API29+

查看:0
本文介绍了在Android API29+中检测来电和去电的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Android中检测来电和呼出电话有很多问题,但这些问题都很旧,而且Android不支持有用的功能,Google Play拒绝我的应用程序,因为我正在使用它们。

用于检测我使用的去电:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

并收听android.intent.action.NEW_OUTGOING_CALL广播监听程序。

根据Google文档(this),我们应该使用CallRedirectionServiceCallScreeningService。但这些服务可以在API 29+上运行。

那么有什么方法可以检测不建议使用且不使用敏感权限的传入和传出呼叫?

如果有任何调用,我想关闭套接字连接,如果没有,则重新打开它。

推荐答案

您需要ACTION_PHONE_STATE_CHANGED的BroadCastReceiver 只要电话状态从空闲、振铃、摘机变为以前的值和您可以检测这是来电/去电的新值,这就会呼叫您的已接收。

所需权限为"android.permission.READ_PHONE_STATE"

但如果您还希望接收该广播中的EXTRA_INCOMING_NUMBER,则需要另一个权限:"android.permission.READ_CALL_LOG"

以下是清单的接收方定义:

<receiver android:name="PhoneStateReceiver"> 
     <intent-filter>
          <action android:name="android.intent.action.PHONE_STATE"/>    
     </intent-filter>
</receiver>

代码如下:

public class PhoneStateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        ...
    }
}

这篇关于在Android API29+中检测来电和去电的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆