我想写一个只有2个要求的非常简单的应用程序。支持材料设计并使用手机内部存储。
因此,当我创建Android工作室项目时,我的minSdkVersion设置为21,而我的targetSdkVersion设置为26.
这给了我以下问题。当我想访问内部存储时,由于新的运行时权限系统,我无法访问。我想我需要编写请求持久化的代码,但后来我遇到了requestPermissions函数需要minSdkVersion为23的问题。
所以,这就是我想要的。我想确保我的应用程序适用于任何高于5的Android版本。解决此权限问题的正确方法是什么,我的minSdk和targetSdk应该是什么?
我想将我的minSdkVersion设置为21并完成它,但我不知道可能会带来什么问题。
答案 0 :(得分:1)
您应该使用支持库请求权限。官方文档很好地解释了整个过程:Requesting Permissions at Run Time。 正如本指南所说:
使用支持库更简单,因为您的应用程序在调用方法之前无需检查其运行的Android版本
答案 1 :(得分:0)
public boolean haveStoragePermission() {
if (Build.VERSION.SDK_INT >= 23) {
if (getApplicationContext().checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
getApplicationContext().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
ActivityCompat.requestPermissions(AddPostActivity.this , new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return false;
}
}
else {
return true;
}
}
在onCreate()
方法的开头添加此方法,不要忘记将这两个权限添加到mainifest文件中。