2016-02-29 67 views
13

我在我大学的IT部门工作,我们正在为安装正确设置的eduroam WiFi应用程序工作(也许您已经听说过)。Android应用程序在安装时没有要求权限

但是,我有一个问题,在我自己的LG G4与Android 6.0上运行它。在安装编译的* .apk时,虽然它们在AndroidManifest.xml中设置,但它并不要求任何权限。它正在处理所有以前的Android版本。

现在是否需要在运行时询问权限?

+0

什么是你的应用程序的'targetSdkVersion'? – CommonsWare

+0

我认为只有在您的安全设置设置为“unknown sources = false”时才会这样做。任何时候你从一个已知的来源安装某些东西,比如Play,你就不会看到这个。 – durbnpoisn

+0

我刚刚意识到,Android在安装时不会要求获得Wi-Fi状态许可,而不是从Play商店安装。你可以在这里看到区别:http://imgur.com/a/rg2IV –

回答

28

如果您的目标SDK版本是23,那么您需要在运行时询问“危险”权限。

如果是这种情况,那么你应该能够看到,如果你去Settings > Apps > "Your app" > Permissions没有授予任何权限。

如果您不想执行新系统,那么您可以将目标sdk版本降低到22以获得旧的权限系统。尽管如此,仍然可以使用sdk版本23进行编译。

有关更多信息,请参阅the documentation

+0

感谢您的建议,尽管我们只使用ACCESS_WIFI_STATE和CHANGE_WIFI_STATE,它们没有列为危险权限。但我会尝试将目标SDK设置为22。 –

1

如果您想查询权限运行时,您应该在您的应用程序中编写特殊请求。就像这样:

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); 
     } 
    } 
} 
相关问题