Desidero controllare come funziona il nuovo modello di autorizzazione nelle impostazioni dell'applicazione. Disabilita Contacts
. Poi vado a app e provare a leggere Contacts
e ... funziona un pò:L'autorizzazione READ_CONTACTS di Android 6.0 (Marshmallow) consente di leggere il nome del contatto quando viene negata l'autorizzazione
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
}
- sono in grado di leggere di contatto Nome
- quando provo a leggere di contatto Numero
SecurityException
viene gettato
java.lang.SecurityException: autorizzazione Denial: lettura com.android.providers.contacts.HtcContactsProvider2 contenuti uri: //com.android.contacts/data/phones da pid = 20123, uid = 10593 richiede Android. autorizzazione. READ_CONTACTS, o grantUriPermission()
Perché è?
roba correlati: Contact data leakage via pick activities
Si noti che non si utilizza il ContactsContract da Google, come si può vedere, si vede che si sta accedendo com.android.providers.contacts.HtcContractsProvider, forse HTC ha un problema con la convalida del permesso. Il mio suggerimento sarebbe quello di controllare un dispositivo AOSP e vedere se la stessa cosa è vera. Se non è vero, significa che si tratta di un problema di perdita di autorizzazioni all'interno di HTC. Se sono uguali, sembra un problema con AOSP. – JoxTraex
Si riproduce anche su Nexus. –