Chcę sprawdzić, jak działa nowy model uprawnień, więc w ustawieniach aplikacji wyłączam Contacts
. Potem przejdź do aplikacji i spróbować odczytać Contacts
i ... to trochę działa:Android 6.0 (Marshmallow) uprawnienie READ_CONTACTS zezwala na odczytanie nazwy kontaktu, gdy odmówiono zgody.
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
}
- jestem w stanie odczytać nazwę kontaktu
- gdy próbuję odczytać numer kontaktowy za
SecurityException
jest wyrzucane
java.lang.SecurityException: Odmowa zgody: odczyt com.android.providers.contacts.HtcContactsProvider2 URI zawartość: //com.android.contacts/data/phones od PID = 20123, UID = 10593 wymaga androida. pozwolenie. READ_CONTACTS lub grantUriPermission()
Dlaczego tak jest?
Powiązane rzeczy: Contact data leakage via pick activities
pamiętać, że nie używasz ContactsContract z Google, jak widać, widzimy, że masz dostęp com.android.providers.contacts.HtcContractsProvider, może HTC ma problem z sprawdzaniem poprawności. Moja sugestia polegałaby na sprawdzeniu urządzenia AOSP i sprawdzeniu, czy to samo jest prawdą. Jeśli nie jest to prawda, oznacza to, że jest to problem z wyciekiem uprawnień wewnątrz HTC. Jeśli są takie same, brzmi to jak problem z AOSP. – JoxTraex
Powtarza się również na Nexusie. –