访问呼叫者号码的 READ_CALL_LOG 的替代方案?

Posted

技术标签:

【中文标题】访问呼叫者号码的 READ_CALL_LOG 的替代方案?【英文标题】:Alternatives to READ_CALL_LOG for accessing a caller's number? 【发布时间】:2019-09-11 07:29:57 【问题描述】:

由于最近的政策变化,很难获得在 Google Play 上使用 READ_CALL_LOG 权限的权限。我们的应用程序在我们的应用程序中搜索来电者的号码,如果匹配,则显示在我们的应用程序中输入的来电显示信息。因此,我们不是默认的电话应用程序,而只需要访问来电者的号码。 READ_CALL_LOG 是否有其他方法可以获取来电者的号码?

【问题讨论】:

不,这是您需要的权限。 你找到解决这个问题的办法了吗? 我也在寻找答案。您是否尝试过使用默认的通话/短信应用? 【参考方案1】:

我是如何做到这一点的 -

第 1 步: 创建了一个 CallActivity 并读取了onCreate 中的所有通话记录,并在列表视图中显示了一个按钮Call

第 2 步: 当用户点击按钮 Call 时,此代码会被触发

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", "1234567890", null));
context.startActivity(intent);

第 3 步: 在 androidManifest 文件中更新此内容(仅适用于新创建的活动 - CallActivity

<activity
        android:name=".CallActivity"
        android:screenOrientation="portrait" >

        <intent-filter>
            <action android:name="android.intent.action.DIAL" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:mimeType="vnd.android.cursor.item/phone" />
            <data android:mimeType="vnd.android.cursor.item/person" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.DIAL" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="voicemail" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.DIAL" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.DIAL" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="tel" />
        </intent-filter>

    </activity>

你已经完成了。

我还可以使用 CALL_READ_PERMISSION 在 Play 商店中发布我的应用,并在 Google 政策表格中填写 CALLER ID 应用部分。在我的情况下,我需要用户身份验证才能推送演示帐户凭据。

【讨论】:

【参考方案2】:

Android 9 引入了 CALL_LOG 权限组,并将 READ_CALL_LOG、WRITE_CALL_LOG 和 PROCESS_OUTGOING_CALLS 权限移至该组。在以前的 Android 版本中,这些权限位于 PHONE 权限组中。

请通过此链接

https://developer.android.com/about/versions/pie/android-9.0-changes-all

【讨论】:

以上是关于访问呼叫者号码的 READ_CALL_LOG 的替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中以编程方式呼叫号码时显示联系人姓名

Twilio,如何将正在进行的呼叫转移到另一个号码

Twilio告诉排队的呼叫者他们在队列中的哪个号码,

在呼叫结束广播接收器中获取电话号码?

如何在其他呼叫运行时以编程方式合并呼叫(电话会议)

J2ME Nokia 中带有特殊字符的呼叫号码