2016-02-29 12 views
13

Lavoro nel dipartimento IT della mia università e lavoriamo su un'app che installa la configurazione corretta per il WiFi eduroam (forse ne hai sentito parlare).L'app Android non chiede permessi durante l'installazione di

Tuttavia, ho un problema con il mio LG G4 con Android 6.0. Quando si installa * .apk compilato, non richiede alcuna autorizzazione sebbene siano impostati in AndroidManifest.xml. Stava lavorando su tutte le precedenti versioni di Android.

È obbligatorio ora chiedere le autorizzazioni in fase di esecuzione?

+0

Qual è il 'targetSdkVersion' della tua app? – CommonsWare

+0

Ho pensato che lo farebbe solo se le tue impostazioni di sicurezza fossero impostate su "fonti sconosciute = false". Ogni volta che installi qualcosa da una fonte conosciuta, come Play, non lo vedrai. – durbnpoisn

+0

Mi sono appena reso conto che Android non richiede il permesso di stato Wi-Fi durante l'installazione da apk anziché da Play Store. Puoi vedere la differenza qui: http://imgur.com/a/rg2IV –

risposta

28

Se la versione di SDK di destinazione è 23, è necessario chiedere autorizzazioni "pericolose" in fase di esecuzione.

Se questo è il caso, dovresti essere in grado di vedere che non sono state concesse autorizzazioni se vai a Settings > Apps > "Your app" > Permissions.

Se non si desidera implementare il nuovo sistema, è possibile ridurre la versione di sdk di destinazione a 22 per ottenere il vecchio sistema di autorizzazione. Puoi comunque compilare con la versione 23 di sdk.

Vedere the documentation per ulteriori informazioni.

+0

Grazie per il consiglio, sebbene utilizziamo solo ACCESS_WIFI_STATE e CHANGE_WIFI_STATE, che non sono elencati come autorizzazioni pericolose. Ma proverò a impostare l'SDK target su 22. –

1

se si desidera eseguire il runtime delle autorizzazioni, è necessario scrivere una richiesta speciale nella propria app. Qualcosa del genere:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     createPermissions(); 
} 
public void createPermissions(){ 
    String permission = Manifest.permission.READ_SMS; 
    if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED){  
     if(!ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), permission)){ 
       requestPermissions(new String[]{permission}), 
         SMS_PERMISSION); 
     } 
    } 
} 
Problemi correlati