检查Document Uri是否为外部SD卡根目录

时间:2016-09-19 15:33:01

标签: android storage-access-framework

我们如何检查使用ACTION_OPEN_DOCUMENT_TREE的所选文档是否是外部SD卡根目录?

1 个答案:

答案 0 :(得分:3)

以下是我用来确定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。这些功能存在于this file