我正在尝试从视频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获取视频文件路径所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)