我正在制作一个用于管理联系人的应用程序。在大多数手机上,一切正常,但是在某些小米设备上,尝试删除联系人时出现错误
` 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" />
并在运行时要求它们。
该问题仅出现在某些小米设备上。在其他制造商上,一切正常。我还检查了来自Playstore的其他应用,并且在某些联系人管理器中不存在此问题,因此肯定应该有一种解决方法
答案 0 :(得分:1)
转到应用程序权限>联系人,然后查看是否已选中 AutoPhoner 。如果未选中(不允许),请进行检查。并且是,您的用户需要亲手执行此操作(手动允许权限)。
对于小米设备,我也遇到了像您这样的问题。我的应用需要坐姿的应用许可屏幕上的用户许可(我的应用允许自动启动)。我只是以编程方式向用户显示了 App权限屏幕,从而为他提供了更大的灵活性,因为手动打开 App权限屏幕对于用户来说是麻烦而糟糕的UX。 This将帮助您做到这一点。
然后,如果它不起作用,那么我非常确定在小米中是不可能的(从电话簿中删除联系人),因为小米使用的是Android的自定义操作系统,并且他们可能会限制从第三方应用程序中删除联系人,因为安全问题。