打开指定路径
传入的路径格式为path为andriod文件管理里的路径,直接传在文件管理器中的路径即可.
如果是通过context.getExternalFilesDir(null)获取的路径需要删除前面的/storage/emulated/0
private final String EXTERNAL_STORAGE_DIR = "/storage/emulated/0";
/**
* 跳转到指定文件夹
*
* @param absolutePath 文件夹路径
*/
public void openSpecifyFolder(@NonNull Context activity, @NonNull String absolutePath) {
String path;
if (isExternalStoragePath(absolutePath)) {
path = buildPath(absolutePath);
} else {
path = absolutePath.replace("/", "%2f");
}
Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary:"
+ path);
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
//返回以后获得uri把它转换成内存卡地址就能读取想要的文件了
activity.startActivityForResult(intent, 1223);
}
private String buildPath(String absolutePath) {
return absolutePath
.substring(EXTERNAL_STORAGE_DIR.length())
.replace("/", "%2f");
}
private boolean isExternalStoragePath(String path) {
return path.startsWith(EXTERNAL_STORAGE_DIR);