android - Android-9 CallLog:CACHED_NAME 和 CACHED_PHOTO_URI 始终从 CallLog 返回 NULL
问题描述
我有一个应用程序,我可以在其中获取通话记录和联系人列表并将它们显示在 RecyclerView 中。一切都很好,直到 android-8。突然,我发现名称没有显示在 Android-9 设备上。然后调试显示 CACHED_NAME 和 CACHED_PHOTO_URI 在 andorid-9 上总是返回 null。我很好地得到了 NUMBER、DURATION 和其他所有内容,只有 CACHED_NAME 和 CACHED_PHOTO_URI 丢失了。
我已经检查了 android-9 的更改日志,正确处理了调用日志权限,我正在从清单中附加我的权限和这个问题。我的应用程序也正确地获取了运行时权限。我还在设备的设置中检查了它。此外,我的应用程序也设置为默认电话应用程序。
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
Log.d("tag", "name: " + (name == null ? "null": name));
String date = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DATE));
String duration = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION));
String photoUri = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_PHOTO_URI));
Log.d("tag", "photoUri: " + (photoUri == null ? "null": photoUri));
String subscription_id = cursor.getString(cursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_ID));
String subscription_component_name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_COMPONENT_NAME));
它在android 8及更低版本上运行良好,谁能告诉我android-9的问题在哪里?
解决方案
首先,从 Contacts.Contract 中获取联系人,然后从数据库中获取姓名、电话号码照片或联系人 ID。
推荐阅读
- r - 使用 survminer::ggsurvplot 在 r 中以编程方式绘制许多生存曲线的问题
- python - 读取被检测为一列的文件
- unix - 启用对 Informix v2.0 的网络访问
- excel - 根据单元格值将单元格值复制到上面的行
- c - 内存拷贝基准的吞吐量分析
- python - 熊猫按滚动窗口的比例分组
- javascript - Jquery ajax request done and fail with Axios
- javascript - request.get_data(), request.form etc are always empty
- java - 使用正确的数据类型在java中转换c++方法逻辑
- arrays - How to save an array of data that can be accessed whenever required?