我在我大学的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 –