安卓开发 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();
    }
上一篇 下一篇

猜你喜欢

热点阅读