我想检查新的权限模型是如何工作的,所以在应用程序的设置中我禁用了Contacts
。然后我去应用程序并尝试读取Contacts
和...它有点工作:
try {
Uri result = data.getData();
int contentIdx;
cursor = getContentResolver().query(result, null, null, null, null);
contentIdx = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
if(cursor.moveToFirst()) {
content = cursor.getInt(contentIdx);
}
if(content > 0) {
contentIdx = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
if(cursor.moveToFirst()) {
name = cursor.getString(contentIdx);
}
contentIdx = cursor.getColumnIndex(BaseColumns._ID);
if(cursor.moveToFirst()) {
content = cursor.getLong(contentIdx);
}
cursor = managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[] { Phone.NUMBER }, Data.CONTACT_ID + "=?", new String[] { String.valueOf(content) }, null);
if(cursor.moveToFirst()) {
number = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
}
}
} catch (Exception e) {
//SecurityException
}
- 我能读到联系人的名字
- 当我尝试读取联系人的号码时,抛出
SecurityException
java.lang.SecurityException:权限拒绝:从pid=20123,uid=10593阅读com.android.providers.contacts.HtcContactsProvider2 URI内容://com.android.联系人/数据/电话需要android.permission.READ_CONTACTS或grantUriPermission()
为什么会这样?
相关内容:Contact data leakage via pick activities
1条答案
按热度按时间pxy2qtax1#
Android棉花糖有新的权限系统。你需要在运行时请求权限,使用如下代码-其中一部分我从http://developer.android.com/training/permissions/requesting.html复制过来-