【问题标题】:Custom ContactsDirectoryProvider is not called for some operations某些操作不调用自定义 ContactsDirectoryProvider
【发布时间】:2017-09-30 04:29:32
【问题描述】:

我已经实现了自定义 ContactsDirectoryProvider,当联系人或拨号器应用程序使用 content://com.android.contacts/data/phones/filter形式的 URI 搜索联系人时,它可以正常工作>

但是,当 InCallUI 或 CallLog 尝试使用 URis content:/contacts/phone_lookup 未调用我的提供者的 query 方法。

请给点建议....

附: 我没有实现单独的同步提供程序,也许这是问题所在?

【问题讨论】:

  • 我也遇到过这种情况。 phone_lookup URI 在 Nexus 5x(模拟器)、Pixel 2XL、LG 6 上运行良好。但是,当我在三星 S6 或 Note 8 上尝试它时,phone_lookup 永远不会被调用。它适用于过滤,但不会像在其他设备上那样调用 phone_lookup(来电或通话记录)查询。
  • 有同样的问题。你找到解决方案了吗@themichaelscott?
  • Nope @wast... 我放弃了三星设备的 toast callerId 方法

标签: android android-contentprovider android-contacts


【解决方案1】:

我们正在使用的解决方法是使用 BroadcastReceiver 来收听来电:

<receiver android:name=".domain.callerid.CallerIdBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>

然后在BroadcastReceiver的onReceive方法中就可以得到传入的号码:

intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)

(这需要从 Android Pie 开始的 READ_CALL_LOG 权限)

然后您可以使用来电号码匹配一个人并显示敬酒和/或通知

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 2013-01-14
    • 1970-01-01
    • 2019-03-02
    • 2018-03-07
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多