我在我大學的IT部門工作,我們正在爲安裝正確設置的eduroam WiFi應用程序工作(也許您已經聽說過)。Android應用程序在安裝時沒有要求權限
但是,我有一個問題,在我自己的LG G4與Android 6.0上運行它。在安裝編譯的* .apk時,雖然它們在AndroidManifest.xml中設置,但它並不要求任何權限。它正在處理所有以前的Android版本。
現在是否需要在運行時詢問權限?
我在我大學的IT部門工作,我們正在爲安裝正確設置的eduroam WiFi應用程序工作(也許您已經聽說過)。Android應用程序在安裝時沒有要求權限
但是,我有一個問題,在我自己的LG G4與Android 6.0上運行它。在安裝編譯的* .apk時,雖然它們在AndroidManifest.xml中設置,但它並不要求任何權限。它正在處理所有以前的Android版本。
現在是否需要在運行時詢問權限?
如果您的目標SDK版本是23,那麼您需要在運行時詢問「危險」權限。
如果是這種情況,那麼你應該能夠看到,如果你去Settings > Apps > "Your app" > Permissions
沒有授予任何權限。
如果您不想執行新系統,那麼您可以將目標sdk版本降低到22以獲得舊的權限系統。儘管如此,仍然可以使用sdk版本23進行編譯。
有關更多信息,請參閱the documentation。
感謝您的建議,儘管我們只使用ACCESS_WIFI_STATE和CHANGE_WIFI_STATE,它們沒有列爲危險權限。但我會嘗試將目標SDK設置爲22。 –
如果您想查詢權限運行時,您應該在您的應用程序中編寫特殊請求。就像這樣:
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);
}
}
}
什麼是你的應用程序的'targetSdkVersion'? – CommonsWare
我認爲只有在您的安全設置設置爲「unknown sources = false」時纔會這樣做。任何時候你從一個已知的來源安裝某些東西,比如Play,你就不會看到這個。 – durbnpoisn
我剛剛意識到,Android在安裝時不會要求獲得Wi-Fi狀態許可,而不是從Play商店安裝。你可以在這裏看到區別:http://imgur.com/a/rg2IV –