Android选文件

125 阅读1分钟

1、权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

2、调用系统文件选择

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT)//这个SDK在19及以下要用GET_CONTENT
        .addCategory(Intent.CATEGORY_OPENABLE)
        .setType("*/*")
        .putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);//true和false看需求
if ( android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N){
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION |
            Intent.FLAG_GRANT_WRITE_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件
}
startActivityForResult(intent, RESULT_CODE);

3、文件处理 通过返回的data拿到uri

ContentResolver resolver = context.getContentResolver();
resolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
cursor = resolver.query(uri, null, null, null, null);

如果你应用是在Activity1中获取文件uri,Activity2中使用uri,这个takePersistableUriPermission最好还是加下。