Ich möchte überprüfen, wie neues Erlaubnismodell so in den Einstellungen der Anwendung funktioniert, die ich Contacts
abstelle. Dann gehe ich App und versuchen Contacts
zu lesen und ... es funktioniert irgendwie:Android 6.0 (Marshmallow) READ_CONTACTS Erlaubnis erlaubt, Name des Kontakts zu lesen, wenn Erlaubnis verweigert wird
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
}
- Ich bin in der Lage Kontakt Namen
- zu lesen, wenn ich versuche, Contact Nummer zu lesen
SecurityException
geworfen wird
java.lang.SecurityException: Permission Denial: Lesen com.android.providers.contacts.HtcContactsProvider2 uri Inhalt: //com.android.contacts/data/phones von pid = 20123, uid = 10593 erfordert android. Genehmigung. READ_CONTACTS oder grantUriPermission()
Warum ist das?
Related stuff: Contact data leakage via pick activities
Beachten Sie, dass Sie nicht die ContactsContract von Google verwenden, wie Sie sehen können, sehen wir, dass Sie com.android.providers.contacts.HtcContractsProvider, vielleicht HTC zugreifst hat ein Problem mit der Validierung von Berechtigungen. Mein Vorschlag wäre, ein AOSP-Gerät zu überprüfen und zu sehen, ob das Gleiche wahr ist. Wenn es nicht wahr ist, dann bedeutet es, dass es sich um ein Problem mit der Lizenzverletzung in HTC handelt. Wenn sie gleich sind, klingt es wie ein AOSP-Problem mit. – JoxTraex
Es reproduziert auch auf Nexus. –