android.provider.DocumentsContract#getDocumentId ( )源码实例Demo

下面列出了android.provider.DocumentsContract#getDocumentId ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: HeartBeat   文件: FileUtils.java
@SuppressLint("NewApi")
public static String uriToPath(Context context, Uri uri) {
    boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
        final String docId = DocumentsContract.getDocumentId(uri);
        Log.d("maxiee", "docID:" + docId);
        final String[] split = docId.split(":");
        final String type = split[0];
        Uri contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        final String selection = "_id=?";
        final String[] selectionArgs = new String[] {split[1]};
        return getDataColumn(context, contentUri, selection, selectionArgs);
    } else if ("content".equalsIgnoreCase(uri.getScheme())){
        return getDataColumn(context, uri, null, null);
    } else if ("file".equalsIgnoreCase(uri.getScheme())) {
        return uri.getPath();
    }
    return null;
}
 
源代码2 项目: BetterWay   文件: SettingPresenterImpel.java
@Override
    public String handleImageOnKitKat(Intent data) {
        LogUtil.d(TAG, "handleImageOnkitKat");
        String imagePath = null;
        Uri uri = data.getData();
        if (DocumentsContract.isDocumentUri(mSettingView.getSettingActivity().getApplicationContext(), uri)) {
        //如果是document类型的Uri,则通过documentid处理
        String docId = DocumentsContract.getDocumentId(uri);
        if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
            String id = docId.split(":")[1]; //解析出数字格式的id
            String selection = MediaStore.Images.Media._ID + '=' + id;
            imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);
        } else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {
            Uri contenUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
                    Long.valueOf(docId));
            imagePath = getImagePath(contenUri, null);
        }
    } else if ("content".equalsIgnoreCase(uri.getScheme())) {
            imagePath = getImagePath(uri, null);
    } else if ("file".equalsIgnoreCase(uri.getScheme())) {
            imagePath = uri.getPath();
    }
        return imagePath;
}
 
源代码3 项目: UniFile   文件: DocumentsContractApi21.java
public static Uri prepareTreeUri(Uri treeUri) {
    String documentId;
    try {
        documentId = DocumentsContract.getDocumentId(treeUri);
        if (documentId == null) {
            throw new IllegalArgumentException();
        }
    } catch (Exception e) {
        // IllegalArgumentException will be raised
        // if DocumentsContract.getDocumentId() failed.
        // But it isn't mentioned the document,
        // catch all kinds of Exception for safety.
        documentId = DocumentsContract.getTreeDocumentId(treeUri);
    }
    return DocumentsContract.buildDocumentUriUsingTree(treeUri, documentId);
}
 
源代码4 项目: imsdk-android   文件: SelectAlbumUtils.java
/**
 * 4.4以上的处理
 *
 * @param data
 * @return
 */
@TargetApi(19)
private static String getPicOnKitKatAfter(Context context, Intent data) {
    String imagePath = null;
    Uri uri = data.getData();
    if (DocumentsContract.isDocumentUri(context, uri)) {
        String docId = DocumentsContract.getDocumentId(uri);
        if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
            String id = docId.split(":")[1];
            String selection = MediaStore.Images.Media._ID + "=" + id;
            imagePath = getImagePath(context, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);
        } else if ("com.android.provider.downloads.documents".equals(uri.getAuthority())) {
            Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));
            imagePath = getImagePath(context, contentUri, null);
        }
    } else if ("content".equalsIgnoreCase(uri.getScheme())) {
        imagePath = getImagePath(context, uri, null);
    } else if ("file".equalsIgnoreCase(uri.getScheme())) {
        imagePath = uri.getPath();
    }
    return imagePath;
}
 
源代码5 项目: GenerateQRCode   文件: MainActivity.java
/**
 * 4.4以后
 *
 * @param data
 */
@SuppressLint("NewApi")
private void handleImageOnKitKat(Intent data) {
    String imagePath = null;
    Uri uri = data.getData();
    Log.d("TAG", "handleImageOnKitKat: uri is " + uri);
    if (DocumentsContract.isDocumentUri(this, uri)) {
        // 如果是document类型的Uri,则通过document id处理
        String docId = DocumentsContract.getDocumentId(uri);
        if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
            String id = docId.split(":")[1]; // 解析出数字格式的id
            String selection = MediaStore.Images.Media._ID + "=" + id;
            imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);
        } else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {
            Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));
            imagePath = getImagePath(contentUri, null);
        }
    } else if ("content".equalsIgnoreCase(uri.getScheme())) {
        // 如果是content类型的Uri,则使用普通方式处理
        imagePath = getImagePath(uri, null);
    } else if ("file".equalsIgnoreCase(uri.getScheme())) {
        // 如果是file类型的Uri,直接获取图片路径即可
        imagePath = uri.getPath();
    }
    displayImage(imagePath); // 根据图片路径显示图片
}
 
源代码6 项目: BaseProject   文件: CameraUtils.java
@TargetApi(19)
public static void handleImageOnKitKat(Activity activity, Intent data) {
    Uri uri = data.getData();
    if (DocumentsContract.isDocumentUri(activity, uri)) {
        // 如果是document类型的Uri,则通过document id进行处理
        String docId = DocumentsContract.getDocumentId(uri);
        if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
            String id = docId.split(":")[1]; // 解析出数字格式的id
            String selection = MediaStore.Images.Media._ID + "=" + id;
            albumPhotonUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        } else if ("com.android.provides.downloads.documents".equals(uri.getAuthority())) {
            Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
                    Long.valueOf(docId));
            albumPhotonUri = contentUri;
        }
    } else if ("content".equalsIgnoreCase(uri.getScheme())) {
        // 如果不是document类型的uri,则使用普通方式处理
        albumPhotonUri = uri;
    }

    albumChooseZoom(activity, uri);
}
 
源代码7 项目: YZxing   文件: UriUtils.java
private static String getPicturePathFromUriAboveApi19(Context context, Uri uri) {
    String filePath = null;
    if (DocumentsContract.isDocumentUri(context, uri)) {
        // 如果是document类型的 uri, 则通过document id来进行处理
        String documentId = DocumentsContract.getDocumentId(uri);
        if (isMediaDocument(uri)) { // MediaProvider
            // 使用':'分割
            String id = documentId.split(":")[1];

            String selection = MediaStore.Images.Media._ID + "=?";
            String[] selectionArgs = {id};
            filePath = getDataColumn(context, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection, selectionArgs);
        } else if (isDownloadsDocument(uri)) { // DownloadsProvider
            Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(documentId));
            filePath = getDataColumn(context, contentUri, null, null);
        }
    } else if ("content".equalsIgnoreCase(uri.getScheme())) {
        // 如果是 content 类型的 Uri
        filePath = getDataColumn(context, uri, null, null);
    } else if ("file".equals(uri.getScheme())) {
        // 如果是 file 类型的 Uri,直接获取图片对应的路径
        filePath = uri.getPath();
    }
    return filePath;
}
 
源代码8 项目: mvvm-template   文件: FileHelper.java
@Nullable public static String getPath(@NonNull Context context, @NonNull Uri uri) {
    String filePath = null;
    try {
        String wholeID = DocumentsContract.getDocumentId(uri);
        String id = wholeID.split(":")[1];
        String[] column = {MediaStore.Images.Media.DATA};
        String sel = MediaStore.Images.Media._ID + "=?";
        try (Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                column, sel, new String[]{id}, null)) {
            if (cursor != null) {
                int columnIndex = cursor.getColumnIndex(column[0]);
                if (cursor.moveToFirst()) {
                    filePath = cursor.getString(columnIndex);
                }
            }
        }
    } catch (Exception ignored) {}
    return filePath;
}
 
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private static String getKitKatPathFromMediaUri(Context context, Uri uri) {

    String imagePath = "";
    if (DocumentsContract.isDocumentUri(context, uri)) {
        String docId = DocumentsContract.getDocumentId(uri);
        if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
            //Log.d(TAG, uri.toString());
            String id = docId.split(":")[1];
            String selection = MediaStore.Images.Media._ID + "=" + id;

            imagePath = getImagePathFromMediaUri(context, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);
        } else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {
            //Log.d(TAG, uri.toString());
            Uri contentUri = ContentUris.withAppendedId(
                    Uri.parse("content://downloads/public_downloads"),
                    Long.valueOf(docId));
            imagePath = getImagePathFromMediaUri(context, contentUri, null);
        }
    } else if ("content".equalsIgnoreCase(uri.getScheme())) {
        //Log.d(TAG, "content: " + uri.toString());
        imagePath = getImagePathFromMediaUri(context, uri, null);
    }
    return imagePath;
}
 
源代码10 项目: vmqApk   文件: UriUtil.java
/**
 * 适配api19以上,根据uri获取图片的绝对路径
 */
@TargetApi(Build.VERSION_CODES.KITKAT)
private static String getRealPathFromUri_AboveApi19(Context context, Uri uri) {
    String filePath = null;
    String wholeID = DocumentsContract.getDocumentId(uri);

    // 使用':'分割
    String[] ids = wholeID.split(":");
    String id = null;
    if (ids == null) {
        return null;
    }
    if (ids.length > 1) {
        id = ids[1];
    } else {
        id = ids[0];
    }

    String[] projection = {MediaStore.Images.Media.DATA};
    String selection = MediaStore.Images.Media._ID + "=?";
    String[] selectionArgs = {id};

    Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,//
            projection, selection, selectionArgs, null);
    int columnIndex = cursor.getColumnIndex(projection[0]);
    if (cursor.moveToFirst()) filePath = cursor.getString(columnIndex);
    cursor.close();
    return filePath;
}
 
源代码11 项目: twitter-kit-android   文件: FileUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
static String getPath(final Context context, final Uri uri) {
    final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    if (isKitKat && isMediaDocumentAuthority(uri)) {
        final String documentId = DocumentsContract.getDocumentId(uri); // e.g. "image:1234"
        final String[] parts = documentId.split(":");
        final String type = parts[0];

        final Uri contentUri;
        if ("image".equals(type)) {
            contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        } else {
            // reject video or audio documents
            return null;
        }

        // query content resolver for MediaStore id column
        final String selection = "_id=?";
        final String[] args = new String[] {
                parts[1]
        };
        return resolveFilePath(context, contentUri, selection, args);
    } else if (isContentScheme(uri)) {
        return resolveFilePath(context, uri, null, null);
    } else if (isFileScheme(uri)) {
        return uri.getPath();
    }
    return null;
}
 
源代码12 项目: reader   文件: FileHelper.java
@SuppressLint("NewApi")
public static String getRealPathFromURI_API19(Context context, Uri uri) {
    String filePath = "";
    try {
        String wholeID = DocumentsContract.getDocumentId(uri);

        // Split at colon, use second item in the array
        String id = wholeID.indexOf(":") > -1 ? wholeID.split(":")[1] : wholeID.indexOf(";") > -1 ? wholeID
                .split(";")[1] : wholeID;

        String[] column = { MediaStore.Images.Media.DATA };

        // where id is equal to
        String sel = MediaStore.Images.Media._ID + "=?";

        Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column,
                sel, new String[] { id }, null);

        int columnIndex = cursor.getColumnIndex(column[0]);

        if (cursor.moveToFirst()) {
            filePath = cursor.getString(columnIndex);
        }
        cursor.close();
    } catch (Exception e) {
        filePath = "";
    }
    return filePath;
}
 
源代码13 项目: Hentoid   文件: FileUtil.java
/**
 * WARNING This is a tweak of internal Android code to make it faster by caching calls to queryIntentContentProviders
 * Original (uncached) is DocumentFile.fromTreeUri
 */
@Nullable
private static DocumentFile fromTreeUriCached(@NonNull final Context context, @NonNull final Uri treeUri) {
    String documentId = DocumentsContract.getTreeDocumentId(treeUri);
    if (isDocumentUriCached(context, treeUri)) {
        documentId = DocumentsContract.getDocumentId(treeUri);
    }
    return newTreeDocumentFile(null, context,
            DocumentsContract.buildDocumentUriUsingTree(treeUri,
                    documentId));
}
 
源代码14 项目: hipda   文件: CursorUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static ImageFileInfo getImageInfo_API19(Context context, Uri uri) {
    ImageFileInfo result = new ImageFileInfo();
    String[] column = {MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.ORIENTATION};

    Cursor cursor = null;
    try {
        String wholeID = DocumentsContract.getDocumentId(uri);
        String id = wholeID.split(":")[1];
        String sel = MediaStore.Images.Media._ID + "=?";

        cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                column, sel, new String[]{id}, null);
        int pathIndex = cursor.getColumnIndex(column[0]);
        int orientationIndex = cursor.getColumnIndex(column[1]);

        if (cursor.moveToFirst()) {
            if (pathIndex >= 0)
                result.setFilePath(cursor.getString(pathIndex));
            if (orientationIndex >= 0)
                result.setOrientation(cursor.getInt(orientationIndex));
        }
    } catch (Exception e) {
        Logger.e(e);
        return null;
    } finally {
        if (cursor != null)
            cursor.close();
    }
    return result;
}
 
源代码15 项目: chat-window-android   文件: UriUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static String getFilePathForExternalStorageDocumentUri(Uri uri) {
    String documentId = DocumentsContract.getDocumentId(uri);

    String[] split = documentId.split(":");

    String uriContentType = split[0];
    String uriId = split[1];

    if ("primary".equalsIgnoreCase(uriContentType)) {
        return Environment.getExternalStorageDirectory() + "/" + uriId;
    } else {
        return uri.getPath();
    }
}
 
源代码16 项目: chat-window-android   文件: UriUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static String getFilePathForDownloadsDocumentUri(Context context, Uri uri) {
    String documentId = DocumentsContract.getDocumentId(uri);

    Uri downloadsContentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(documentId));

    return getDataColumnForContentUri(context, downloadsContentUri, null, null);
}
 
源代码17 项目: Overchan-Android   文件: CompatibilityImpl.java
@TargetApi(Build.VERSION_CODES.KITKAT)
public static String getDocumentId(Uri uri) {
    return DocumentsContract.getDocumentId(uri);
}
 
源代码18 项目: MyBookshelf   文件: ConvertUtils.java
/**
 * 从第三方文件选择器获取路径。
 * 参见:http://blog.csdn.net/zbjdsbj/article/details/42387551
 */
@TargetApi(Build.VERSION_CODES.KITKAT)
public static String toPath(Context context, Uri uri) {
    if (uri == null) {
        return "";
    }
    String path = uri.getPath();
    String scheme = uri.getScheme();
    String authority = uri.getAuthority();
    //是否是4.4及以上版本
    boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    // DocumentProvider
    if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
        String docId = DocumentsContract.getDocumentId(uri);
        String[] split = docId.split(":");
        String type = split[0];
        Uri contentUri = null;
        switch (authority) {
            // ExternalStorageProvider
            case "com.android.externalstorage.documents":
                if ("primary".equalsIgnoreCase(type)) {
                    return Environment.getExternalStorageDirectory() + "/" + split[1];
                }
                break;
            // DownloadsProvider
            case "com.android.providers.downloads.documents":
                contentUri = ContentUris.withAppendedId(
                        Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));
                return _queryPathFromMediaStore(context, contentUri, null, null);
            // MediaProvider
            case "com.android.providers.media.documents":
                if ("image".equals(type)) {
                    contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                } else if ("video".equals(type)) {
                    contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                } else if ("audio".equals(type)) {
                    contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                }
                String selection = "_id=?";
                String[] selectionArgs = new String[]{split[1]};
                return _queryPathFromMediaStore(context, contentUri, selection, selectionArgs);
        }
    }
    // MediaStore (and general)
    else {
        if ("content".equalsIgnoreCase(scheme)) {
            // Return the remote address
            if (authority.equals("com.google.android.apps.photos.content")) {
                return uri.getLastPathSegment();
            }
            return _queryPathFromMediaStore(context, uri, null, null);
        }
        // File
        else if ("file".equalsIgnoreCase(scheme)) {
            return uri.getPath();
        }
    }
    return path;
}
 
源代码19 项目: LockDemo   文件: OcrUtils.java
public static String getPath(Context context,
                             Uri uri) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        if (DocumentsContract.isDocumentUri(context, uri)) {
            String docId;
            String[] split;
            String type;
            if (isExternalStorageDocument(uri)) {
                docId = DocumentsContract.getDocumentId(uri);
                split = docId.split(":");
                type = split[0];
                if ("primary".equalsIgnoreCase(type)) {
                    return Environment.getExternalStorageDirectory() + "/" + split[1];
                }
            } else {
                if (isDownloadsDocument(uri)) {
                    docId = DocumentsContract.getDocumentId(uri);
                    Uri split1 = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
                            Long.valueOf(docId));
                    return getDataColumn(context,
                            split1,
                            null,
                            null);
                }

                if (isMediaDocument(uri)) {
                    docId = DocumentsContract.getDocumentId(uri);
                    split = docId.split(":");
                    type = split[0];
                    Uri contentUri = null;
                    if ("image".equals(type)) {
                        contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                    } else if ("video".equals(type)) {
                        contentUri = android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                    } else if ("audio".equals(type)) {
                        contentUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                    }

                    String selection = "_id=?";
                    String[] selectionArgs = new String[]{split[1]};
                    return getDataColumn(context,
                            contentUri,
                            "_id=?",
                            selectionArgs);
                }
            }
        }
    }

    if ("content".equalsIgnoreCase(uri.getScheme())) {
        if (isGooglePhotosUri(uri)) {
            return uri.getLastPathSegment();
        }

        return getDataColumn(context,
                uri,
                null,
                null);
    }

    if ("file".equalsIgnoreCase(uri.getScheme())) {
        return uri.getPath();
    }


    return null;
}
 
源代码20 项目: TextThing   文件: PathUtil.java
@SuppressLint("NewApi")
public static String getPath(Context context, Uri uri) throws URISyntaxException {
    final boolean needToCheckUri = Build.VERSION.SDK_INT >= 19;
    String selection = null;
    String[] selectionArgs = null;
    // Uri is different in versions after KITKAT (Android 4.4), we need to
    // deal with different Uris.
    if (needToCheckUri && DocumentsContract.isDocumentUri(context.getApplicationContext(), uri)) {
        if (isExternalStorageDocument(uri)) {
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");

            Log.d(App.PACKAGE_NAME, "uri get path from: " + uri.toString());
            if (uri.toString().startsWith("content://com.android.externalstorage.documents/document/home%3A")) {
                return Environment.getExternalStorageDirectory() + "/Documents/" + split[1];
            } else {
                return Environment.getExternalStorageDirectory() + "/" + split[1];
            }
        } else if (isDownloadsDocument(uri)) {
            Log.w(App.PACKAGE_NAME, "files from magic downloads folder not supported");

            /*
            final String id = DocumentsContract.getDocumentId(uri);
            uri = ContentUris.withAppendedId(
                    Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
            */
        } else if (isMediaDocument(uri)) {
            Log.w(App.PACKAGE_NAME, "files from magic media folder not supported");
            /*
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");
            final String type = split[0];
            if ("image".equals(type)) {
                uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            } else if ("video".equals(type)) {
                uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
            } else if ("audio".equals(type)) {
                uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            }
            selection = "_id=?";
            selectionArgs = new String[]{ split[1] };
            */
        }
    }

    return uri.getPath();
}