android-如何从uri获取视频文件路径

android-如何从uri获取视频文件路径,第1张

概述我正在尝试从视频uri获取文件路径.我浏览了以下链接,但仍然遇到此问题:get-filename-and-path-from-uri-from-mediastoreget-file-path-from-uri-from-video-chooser以下是我的代码:UriimageUri=data.getData();String[]proj={MediaStore.Audio.Media.

我正在尝试从视频uri获取文件路径.

我浏览了以下链接,但仍然遇到此问题:

get-filename-and-path-from-uri-from-mediastore

get-file-path-from-uri-from-video-chooser

以下是我的代码:

        Uri imageUri = data.getData();        String[] proj = { MediaStore.Audio.Media.DATA };        Cursor cursor = PreferenceHelper.getContext().getContentResolver().query(imageUri, proj, null, null, null);        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);        cursor.movetoFirst();        String filePath = cursor.getString(column_index);        sendVIDeo(activity, filePath, windowID, isChatroom);

内容://com.androID.provIDers.media.documents/document/vIDeo:1142

但始终将文件路径获取为空.

以下是我的日志:

10-22 13:09:44.189 21604-21604/com.testapp.chat W/System.err: java.lang.NullPointerException10-22 13:09:44.190 21604-21604/com.testapp.chat W/System.err:     at java.io.file.fixSlashes(file.java:185)10-22 13:09:44.191 21604-21604/com.testapp.chat W/System.err:     at java.io.file.<init>(file.java:134)10-22 13:09:44.191 21604-21604/com.testapp.chat W/System.err:     at com.inscripts.plugins.VIDeoSharing.sendVIDeo(VIDeoSharing.java:125)10-22 13:09:44.191 21604-21604/com.testapp.chat W/System.err:     at com.inscripts.plugins.VIDeoSharing.sendVIDeo(VIDeoSharing.java:219)10-22 13:09:44.192 21604-21604/com.testapp.chat W/System.err:     at com.inscripts.plugins.VIDeoSharing.sendVIDeoOneOnOne(VIDeoSharing.java:104)10-22 13:09:44.193 21604-21604/com.testapp.chat W/System.err:     at com.inscripts.activitIEs.SingleChatActivity.onbuttonClick(SingleChatActivity.java:617)10-22 13:09:44.193 21604-21604/com.testapp.chat W/System.err:     at com.inscripts.custom.CustomAlertDialogHelper.onClick(CustomAlertDialogHelper.java:65)10-22 13:09:44.193 21604-21604/com.testapp.chat W/System.err:     at androID.vIEw.VIEw.performClick(VIEw.java:4456)10-22 13:09:44.194 21604-21604/com.testapp.chat W/System.err:     at androID.vIEw.VIEw$PerformClick.run(VIEw.java:18465)

解决方法:

您好我也遇到了同样的问题,但这是方法

 public static String getPath(final Context context, final Uri uri) {    if (DEBUG)        Log.d(TAG + " file -",                "Authority: " + uri.getAuthority() +                        ", Fragment: " + uri.getFragment() +                        ", Port: " + uri.getPort() +                        ", query: " + uri.getquery() +                        ", Scheme: " + uri.getScheme() +                        ", Host: " + uri.getHost() +                        ", Segments: " + uri.getPathSegments().toString()                );    final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;    // documentProvIDer    if (isKitKat && documentsContract.isdocumentUri(context, uri)) {        // ExternalStorageProvIDer        else if (isExternalStoragedocument(uri)) {            final String docID = documentsContract.getdocumentID(uri);            final String[] split = docID.split(":");            final String type = split[0];            if ("primary".equalsIgnoreCase(type)) {                return Environment.getExternalStorageDirectory() + "/" + split[1];            }            // Todo handle non-primary volumes        }        // MediaProvIDer        else if (isMediadocument(uri)) {            final String docID = documentsContract.getdocumentID(uri);            final String[] split = docID.split(":");            final 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;            }            final String selection = "_ID=?";            final String[] selectionArgs = new String[] {                    split[1]            };            return getDataColumn(context, contentUri, selection, selectionArgs);        }    }    // MediaStore (and general)    else if ("content".equalsIgnoreCase(uri.getScheme())) {        // Return the remote address        if (isGooglePhotosUri(uri))            return uri.getLastPathSegment();        return getDataColumn(context, uri, null, null);    }    // file    else if ("file".equalsIgnoreCase(uri.getScheme())) {        return uri.getPath();    }    return null;}

我从this url得到

->可以从此file UTILS文件中获取其他方法,进行编码:)
->从uri那里获得了我完整的视频路径,希望对您有所帮助:)

总结

以上是内存溢出为你收集整理的android-如何从uri获取视频文件路径全部内容,希望文章能够帮你解决android-如何从uri获取视频文件路径所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1090067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存