java - 如何获得在小米(MIUI)设备中删除联系人的权限?
问题描述
我正在制作一个用于管理联系人的应用程序。在大多数手机上,一切正常,但在某些小米设备上,尝试删除联系人时出现错误。
这是我删除联系人的代码-
final ArrayList ops = new ArrayList();
final ContentResolver cr = getContext().getContentResolver();
ops.add(ContentProviderOperation
.newDelete(ContactsContract.RawContacts.CONTENT_URI)
.withSelection(ContactsContract.RawContacts.CONTACT_ID + " = ?",
new String[]{contact.getContactId()})
.build());
try {
cr.applyBatch(ContactsContract.AUTHORITY, ops);
LogUtil.log(getString(R.string.log_msg_delete, contact.getDisplayName()));
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}
我在清单文件中有权限-
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
并在运行时询问它们。
该问题仅出现在部分小米设备上。在其他制造商上,一切正常。另外,我检查了 Play 商店的其他应用程序,并且在某些联系人管理器中不存在此问题,因此肯定有办法解决它
解决方案
转到应用程序权限 > 联系人,看看是否选中了AutoPhoner。如果未选中(不允许),请检查它。是的,您的用户需要手动执行此操作(手动允许权限)。
对于小米设备,我也遇到过像你这样的问题。我的应用程序需要来自Sittings的应用程序权限屏幕的用户权限(允许我的应用程序自动启动)。我只是以编程方式向我的用户展示了应用程序权限屏幕,以便为他提供额外的灵活性,因为手动打开应用程序权限屏幕对于用户来说既麻烦又糟糕。这将帮助您做到这一点。
然后,如果它不起作用,那么我很确定在小米中不可能(从电话簿中删除联系人),因为小米使用定制的 Android 操作系统,并且由于安全问题,他们可能会限制从第三方应用程序中删除联系人.
推荐阅读
- javascript - 如何修复服务器端 socket.io 错误?
- python - 使用 Python 使用 netCDF4 从 NETCDF 文件中提取名称
- javascript - 移动设备上的 HTML 布局无法正常工作
- python - 在 Pandas 中将数值转换为分类
- c - 有没有办法提取作为给定 c 代码中的参数传递给特定函数的变量?
- pdf - 如何将带有我不关心的图像的 PDF 转换为文本?
- python - 如何在 re.search Python 中忽略返回 None
- bash - Bash 在两个字符串之间打印文件内容
- dns - 更改名称服务器后 Bigrock 子域无法正常工作
- javascript - 如何使用 window.open 将在 HTML 中创建的窗口调整为显示器的全宽并限制高度