检查文档 URI 是否为外部 SD 卡根目录
Check if a Document Uri is of External SD Card Root
如何判断使用ACTION_OPEN_DOCUMENT_TREE
选择的文件是否为外置SD卡根目录?
这是我用来确定 Uri 是否来自外部 SD 卡以及它是否位于 SD 卡的根目录的函数
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static boolean checkIfSDCardRoot(Uri uri) {
return isExternalStorageDocument(uri) && isRootUri(uri) && !isInternalStorage(uri);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private static boolean isRootUri(Uri uri) {
String docId = DocumentsContract.getTreeDocumentId(uri);
return docId.endsWith(":");
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public static boolean isInternalStorage(Uri uri) {
return isExternalStorageDocument(uri) && DocumentsContract.getTreeDocumentId(uri).contains("primary");
}
public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri.getAuthority());
}
这些方法取自我为处理存储访问框架而创建的库。该库是开源的,出现在 Github - NoobFileChooser. The functions are present in this file.
如何判断使用ACTION_OPEN_DOCUMENT_TREE
选择的文件是否为外置SD卡根目录?
这是我用来确定 Uri 是否来自外部 SD 卡以及它是否位于 SD 卡的根目录的函数
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static boolean checkIfSDCardRoot(Uri uri) {
return isExternalStorageDocument(uri) && isRootUri(uri) && !isInternalStorage(uri);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private static boolean isRootUri(Uri uri) {
String docId = DocumentsContract.getTreeDocumentId(uri);
return docId.endsWith(":");
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public static boolean isInternalStorage(Uri uri) {
return isExternalStorageDocument(uri) && DocumentsContract.getTreeDocumentId(uri).contains("primary");
}
public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri.getAuthority());
}
这些方法取自我为处理存储访问框架而创建的库。该库是开源的,出现在 Github - NoobFileChooser. The functions are present in this file.