在低于marshmallow的Android版本中,我可以运行将文件写入外部存储的应用程序。在这些系统中,在安装应用程序时授予权限。但是当我试图在棉花糖中运行我的应用程序时,它说"应用程序不需要权限"在安装时。并且在我执行写入功能时,应用程序意外退出。
通常,设备要求在第一次打开时为每个应用授予权限。但在我的应用程序中,这也没有发生。
答案 0 :(得分:2)
在Android M及更高版本中,您必须要求分类为“危险”的权限。您可以找到需要请求的完整权限列表here。
但是,您可以通过将compileSDK和targetSDK设置为<来避免请求。 23.请注意,这会阻止您使用任何API 23+功能。
您请求这样的权限:
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},//Your permissions here
1);//Random request code
通过执行以下操作检查用户是否正在运行API 23+:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
//Request: Use a method or add the permission asking directly into here.
}
如果您需要检查结果,可以这样做:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
答案 1 :(得分:0)
您必须自己为Android 6.0+(Marshmallow)提供运行时权限处理。有关详细信息,请参阅here。