美文网首页
Android开发中,利用自带文件选择器获取图片时,将conte

Android开发中,利用自带文件选择器获取图片时,将conte

作者: 伤心的鱼嗯 | 来源:发表于2019-03-25 10:13 被阅读0次

    ------------转自csdn


    public static String getPath2uri(Activity context, Uri fileUri) {

    if (context ==null || fileUri ==null)

    return null;

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(context, fileUri)) {

    if (isExternalStorageDocument(fileUri)) {

    String docId = DocumentsContract.getDocumentId(fileUri);

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

    String type = split[0];

    if ("primary".equalsIgnoreCase(type)) {

    return Environment.getExternalStorageDirectory() +"/" + split[1];

    }

    }else if (isDownloadsDocument(fileUri)) {

    String id = DocumentsContract.getDocumentId(fileUri);

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

    return getDataColumn(context, contentUri,null,null);

    }else if (isMediaDocument(fileUri)) {

    String docId = DocumentsContract.getDocumentId(fileUri);

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

    String type = split[0];

    Uri contentUri =null;

    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 = MediaStore.Images.Media._ID +"=?";

    String[] selectionArgs =new String[] { split[1] };

    return getDataColumn(context, contentUri, selection, selectionArgs);

    }

    }// MediaStore (and general)

            else if ("content".equalsIgnoreCase(fileUri.getScheme())) {

    // Return the remote address

                if (isGooglePhotosUri(fileUri))

    return fileUri.getLastPathSegment();

    return getDataColumn(context, fileUri,null,null);

    }

    // File

            else if ("file".equalsIgnoreCase(fileUri.getScheme())) {

    return fileUri.getPath();

    }

    return null;

    }

    public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {

    Cursor cursor =null;

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

    try {

    cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,null);

    if (cursor !=null && cursor.moveToFirst()) {

    int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

    return cursor.getString(index);

    }

    }finally {

    if (cursor !=null)

    cursor.close();

    }

    return null;

    }

    /**

        * @param uri  The Uri to check.

        * @return

        *      URI权限是否为ExternalStorageProvider

    *      Whether the Uri authority is ExternalStorageProvider.

    */

        public static boolean isExternalStorageDocument(Uri uri) {

    return "com.android.externalstorage.documents".equals(uri.getAuthority());

    }

    /**

        * @param uri  The Uri to check.

        * @return

        *      URI权限是否为google图片

    *      Whether the Uri authority is Google Photos.

    */

        public static boolean isGooglePhotosUri(Uri uri) {

    return "com.google.android.apps.photos.content".equals(uri.getAuthority());

    }

    /**

        * @param uri  The Uri to check.

        * @return

        *      URI权限是否为DownloadsProvider.

    *      Whether the Uri authority is DownloadsProvider.

    */

        public static boolean isDownloadsDocument(Uri uri) {

    return "com.android.providers.downloads.documents".equals(uri.getAuthority());

    }

    /**

        * @param uri  The Uri to check.

        * @return

        *      URI权限是否为MediaProvider.

    *      Whether the Uri authority is MediaProvider.

    */

        public static boolean isMediaDocument(Uri uri) {

    return "com.android.providers.media.documents".equals(uri.getAuthority());

    }

    }

    相关文章

      网友评论

          本文标题:Android开发中,利用自带文件选择器获取图片时,将conte

          本文链接:https://www.haomeiwen.com/subject/nrzmvqtx.html