6

Applico le autorizzazioni di runtime di Android 6.0 in un'app che ascolta le modifiche allo stato della connessione dati del gestore. Per prima cosa ho provato a rimuovere READ_PHONE_STATE dal manifest per controllare dove l'app richiede l'autorizzazione. Con mia sorpresa l'app non si è schiantata affatto.Dal momento che Android 6.0 ascolta le modifiche PhoneStateListener.LISTEN_DATA_CONNECTION_STATE sembra non richiedere più l'autorizzazione READ_PHONE_STATE

Dopo questo ho provato la stessa installazione su due dispositivi pre 6.0 che effettivamente si sono bloccati su di esso. A me sembra che Android 6.0 non richieda più il permesso. C'è un modo per confermare questo?

La riga sotto è quello in cui le pre 6.0 dispositivi crash:

tm(TelephonyManager).listen(this, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 

risposta

13

Esiste un modo per confermare questo?

Sì, questo commit rimuove la richiesta di READ_PHONE_STATE quando registrare il tipo di evento LISTEN_CALL_STATE, LISTEN_DATA_ACTIVITY e LISTEN_DATA_CONNECTION_STATE:

Do not enforce PHONE_STATE_PERMISSION to register listener PHONE_STATE_PERMISSION should not be required to register to the following event types: 
- PhoneStateListener.LISTEN_CALL_STATE 
- PhoneStateListener.LISTEN_DATA_ACTIVITY 
- PhoneStateListener.LISTEN_DATA_CONNECTION_STATE 

In case of LISTEN_CALL_STATE, an empty string should be passed instead of incomingNumber, when caller has no PHONE_STATE_PERMISSION. 

Bug: 21588537 Change-Id: I5b6d0308924f7e4cd13a983b8e0c9b3a5bbb119b 

La documentazione relativa developer.android.com è stata aggiornata e mostra che il permesso non è richiesto in modo corretto.

Se il codice non ha bisogno del permesso di READ_PHONE_STATE per altra ragione a parte LISTEN_DATA_CONNECTION_STATE è possibile modificare la AndroidManifest.xml aggiungendo maxSdkVersion al uses-permission:

<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="22" /> 
+0

Impressionante! Grazie per avermi segnalato il commit! –

+1

Grazie ... sarebbe bello se lasciassero una nota che ANCORA ha bisogno dell'autorizzazione su Android <6.0 mentre rilasciavo un aggiornamento aggiungendo questa funzionalità e non avevo idea di LISTEN_CALL_STATE richiede un'autorizzazione prima di Marshmallow. – Flyview

Problemi correlati