2015-08-20 27 views
8

Sono ancora un po 'confuso riguardo al nuovo modello di autorizzazioni runtime. Qualunque delle seguenti autorizzazioni richieste per le notifiche push Parse (GCM) richiede un'autorizzazione di runtime?Autorizzazioni M Android con notifiche push Parse

<uses-permission android:name="android.permission.INTERNET" /> 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

<uses-permission android:name="android.permission.VIBRATE" /> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

<permission android:protectionLevel="signature"   android:name="com.parse.starter.permission.C2D_MESSAGE" /> 

<uses-permission android:name="com.parse.starter.permission.C2D_MESSAGE" /> 
+0

non è necessario richiedere il permesso GET_ACCOUNTS su 6.0+ per fare il parsing spingere al lavoro. Viene dichiarato nel manifest, quindi può supportare Android 4.04 e versioni precedenti. Su 6.0+, questa autorizzazione è dichiarata ma non è necessario che sia "concessa" – jiawen

risposta

-3

Secondo i documenti sviluppatori di Android, a patto che si definiscono tali autorizzazioni nel manifesto, il sistema automaticamente vi concedere tali autorizzazioni e non permetterà all'utente di revocare loro. Pertanto, non è necessario controllare queste autorizzazioni in fase di esecuzione.

https://developer.android.com/preview/features/runtime-permissions.html

questo è detto nella parte inferiore della pagina nella sezione autorizzazioni normali.

+0

L'argomento non è valido. Alcuni di questi non sono elencati in normali permessi. –

1

L'autorizzazione GET_ACCOUNTS richiede l'autorizzazione per il controllo in fase di runtime, poiché appartiene al gruppo di autorizzazioni pericolose (https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous).

Gli altri sono permessi normali, e sarà concesso a condizione che siano dichiarati sul file manifesto (https://developer.android.com/guide/topics/security/normal-permissions.html)

Se ti rendi conto che non si ha il permesso in fase di esecuzione, è necessario richiedere utilizzando il metodo requestPermissions (Activity yourActivity, String [] permissions, int requestCode). Successivamente verrà mostrata all'utente una finestra di dialogo non personalizzabile, che richiede l'autorizzazione.

Infine, è necessario eseguire l'override del onRequestPermissionsResult (int requestCode, permessi String [], int [] grantResults) metodo sulla vostra attività, verificando che la requestCode è lo stesso requestCode hai mandato su requestPermissions e se l'autorizzazione obiettivo era scontato.

Ci sono altri casi da considerare, come quando l'utente non concede l'autorizzazione per la prima volta, e lo vuoi ancora chiedere. Per sapere come gestire questi casi, ti suggerisco di leggere questo: http://developer.android.com/intl/pt-br/training/permissions/requesting.html. Dispone inoltre di codici di esempio per la richiesta di autorizzazioni e il controllo dei risultati

+0

Quindi, come suggerisci di andare se il permesso viene negato? –

+0

Ho modificato la mia risposta precedente con una spiegazione migliore su quello –

+0

Capisco tutto questo, ma come potrei disabilitare le notifiche push parse per questo utente? –

5

Tra le autorizzazioni elencate in precedenza, GET_ACCOUNTS richiede il controllo di runtime perché il suo livello di protezione è pericoloso.

Ma la cosa è, mentre GET_ACCOUNTS il permesso non è più necessaria per GCM al lavoro (a partire da 7,5 Play Services, immagino), è ancora necessario se si sta utilizzando Analizza le notifiche push.

Sembra che Parse fornisca la piena compatibilità a tutta la gamma di dispositivi Android (ovvero dispositivi non basati su GCM come Kindle Fires, in cui GCM non è supportato e devono ricorrere alla propria implementazione di socket persistente e naturalmente i dispositivi con 4.0.3 e seguenti), Parse ha ancora bisogno di questa autorizzazione e di alcuni altri.

Un ragazzo da Parse dicono che:

Abbiamo bisogno che venga richiesto, alias essendo in AndroidManifest.xml, ma non richiedono che venga concesso.

la questione è in discussione, si potrebbe desiderare di dare un'occhiata a questi temi:

https://github.com/ParsePlatform/Parse-SDK-Android/issues/129 https://parse.com/questions/android-use-only-gcm-dont-require-additional-permissions