2016-02-29 7 views
13

Pracuję w dziale IT na mojej uczelni i pracujemy nad aplikacją, która instaluje poprawną konfigurację dla sieci eduroam WiFi (być może słyszałeś o tym).Aplikacja Android nie pyta o uprawnienia podczas instalacji

Jednak mam problem z uruchomieniem go na moim własnym LG G4 z systemem Android 6.0. Podczas instalacji skompilowanego * .apk nie pyta o żadne uprawnienia, mimo że są ustawione w AndroidManifest.xml. Pracował nad wszystkimi poprzednimi wersjami Androida.

Czy obowiązkowe jest teraz pytanie o uprawnienia w czasie wykonywania?

+0

Co to jest "targetSdkVersion" swojej aplikacji? – CommonsWare

+0

Myślałem, że zrobi to tylko jeśli twoje ustawienia bezpieczeństwa będą ustawione na "unknown sources = false". Za każdym razem, gdy zainstalujesz coś ze znanego źródła, takiego jak Play, tego nie zobaczysz. – durbnpoisn

+0

Właśnie zdałem sobie sprawę, że Android nie pyta o zezwolenie na stan Wi-Fi podczas instalowania z apk zamiast ze Sklepu Play. Możesz zobaczyć różnicę tutaj: http://imgur.com/a/rg2IV –

Odpowiedz

28

Jeśli docelowa wersja pakietu SDK to 23, musisz zapytać o "niebezpieczne" uprawnienia w czasie wykonywania.

Jeśli tak jest, to powinieneś zobaczyć, że nie przyznano żadnych uprawnień, jeśli przejdziesz na stronę Settings > Apps > "Your app" > Permissions.

Jeśli nie chcesz jeszcze wdrożyć nowego systemu, możesz zmniejszyć docelową wersję sdk do 22, aby uzyskać stary system uprawnień. Nadal możesz kompilować z wersją SDK w wersji 23.

Aby uzyskać więcej informacji, patrz the documentation.

+0

Dzięki za radę, chociaż używamy tylko ACCESS_WIFI_STATE i CHANGE_WIFI_STATE, które nie są wymienione jako niebezpieczne uprawnienia. Ale spróbuję ustawić docelowy pakiet SDK na 22. –

1

Jeśli chcesz uruchomić środowisko uprawnień dla uprawnień, powinieneś wpisać w swojej aplikacji specjalne żądanie. Coś takiego:

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); 
     } 
    } 
} 
Powiązane problemy