android - 某些操作不调用自定义 ContactsDirectoryProvider

标签 android android-contentprovider android-contacts

我已经实现了自定义 ContactsDirectoryProvider,当联系人或拨号器应用程序使用 content://com.android.contacts/data/phones/filter

然而,当 InCallUI 或 CallLog 试图检索联系信息时 UR 是 content:/contacts/phone_lookup 未调用我的提供商的query 方法。

有什么建议....

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

最佳答案

我们正在使用的解决方法是使用 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 权限)

然后你可以使用传入的号码来匹配一个人并显示 toast 和/或通知

关于android - 某些操作不调用自定义 ContactsDirectoryProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43741444/

相关文章:

java.lang.IllegalArgumentException : Log tag "okhttp3.mockwebserver.MockWebServer" exceeds limit of 23 characters

Android sqlite 查询给出列不存在的错误,而实际上该列确实存在

android - ContactsContract.Contacts.Entity IllegalArgumentException异常

java - 使用联系人电话号码打开联系人列表中的联系人信息 Android Studio

android - 过渡动画中共享元素溢出导航栏

java - 同步 Android sqlite 数据库和 GAE 数据存储

android - 没有 SQL 的 ContentProvider

android - 如何在 android 中查找第三方应用程序内容提供商 URI?

java - 检查是否有任何日历事件/媒体文件已更新

android - 如何使用复选框将 Android 联系人添加到 ListView 中