安卓开发 Android studio 读取外部存储上的数据目录
2019-06-20 本文已影响0人
ZONG丶
第(1)步: 声明权限
在 AndroidManifest.xml里添加
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
通常为了简单起见,我们只声明 WRITE_EXTERNAL_STORAGE 就够了,因为能WRITE就包含了READ的权限。
第(2)步:申请权限
从安卓6.0开始,加强了权限策略,不但要声明权限,还要在应用启动时手工向用户申请批准才行。
// 检查和申请权限
final int PERMISSION_REQ_CODE = 1;
public void checkPermissions()
{
// 要申请的权限列表
final String[] permissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
// 检查本应用是否有了 WRITE_EXTERNAL_STORAGE 权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
{
// 系统将弹出一个对话框,询问用户是否授权
ActivityCompat.requestPermissions(this, permissions, PERMISSION_REQ_CODE);
}
}
// 权限申请的结果 // requestCode:请求码 // permissions: 申请的N个权限 // grantResults: 每个权限是否被授权
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
{
if(requestCode == PERMISSION_REQ_CODE)
{
for(int i=0; i<permissions.length;i++)
{
if(grantResults[i] != PackageManager.PERMISSION_GRANTED)
{
// 如果用户没给我们授权...这意味着有此功能就不能用了
}
}
}
}
在这里调用checkPermissions()来请用户给予授权!
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkPermissions();
}