6

Używam uprawnień uruchomieniowych Androida 6.0 do aplikacji, która słucha zmian stanu połączenia danych operatora. Najpierw próbowałem po prostu usunąć READ_PHONE_STATE z manifestu, aby sprawdzić, gdzie aplikacja wymaga pozwolenia. Ku mojemu zaskoczeniu aplikacja wcale się nie zawiesiła.Od czasu wprowadzenia zmian w Androidzie 6.0 zmiany PhoneStateListener.LISTEN_DATA_CONNECTION_STATE nie jest już wymagane READ_PHONE_STATE pozwolenie

Po tym wypróbowałem tę samą instalację na dwóch urządzeniach z wersji 6.0, które faktycznie się zepsuły. Wydaje mi się, że Android 6.0 nie wymaga już zezwolenia. Czy jest jakiś sposób, aby to potwierdzić?

Poniższy wiersz jest jeden, na którym wstępnie 6.0 Urządzenia awarii:

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

Odpowiedz

13

Czy istnieje jakiś sposób, aby to potwierdzić?

Tak, to commit usuwa wniosku READ_PHONE_STATE gdy zarejestrować typ zdarzenia LISTEN_CALL_STATE, LISTEN_DATA_ACTIVITY i 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 

Dokumentacja na developer.android.com została zaktualizowana i poprawnie pokazuje, że pozwolenie nie jest wymagane.

Jeżeli kod nie potrzebuje zgody READ_PHONE_STATE dla innego powodu oprócz LISTEN_DATA_CONNECTION_STATE można zmienić AndroidManifest.xml dodanie maxSdkVersion do uses-permission:

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

Awesome! Dzięki za skierowanie mnie do zatwierdzenia! –

+1

Dzięki ... byłoby miło, gdyby zostawili notatkę, że STILL wymaga pozwolenia na Androida <6.0, ponieważ wydałem aktualizację dodającą tę funkcję i nie miałem pojęcia, że ​​LISTEN_CALL_STATE wymaga pozwolenia przed Marshmallow. – Flyview

Powiązane problemy