获取Android中Uri的实际路径

11 浏览
0 Comments

获取Android中Uri的实际路径

我正在开发一个VideoPlayer。我将启动意图的URI转换为字符串,它给我content://media/external.....。但我需要获取真实的路径。

例如: /storage/extSdcard....

我该怎么做?

如果需要,以下是我的代码:

videoURI = getIntent().getData();
vv.setVideoURI(videoURI);
videoName = videoURI.toString();
tvTitle.setText(videoName);

0
0 Comments

问题:Get Real Path For Uri Android

原因:这段代码可以在所有Android版本上工作,因为它根据API级别进行了条件判断,并使用不同的方法来获取URI的真实路径。

解决方法:使用上面提供的代码可以解决获取URI真实路径的问题。根据API级别的不同,代码使用不同的方法来获取真实路径,包括使用DocumentsContract、MediaStore和File等类来处理不同类型的URI。代码还提供了一些辅助方法来判断URI的类型。

代码示例中的getPathFromUri()方法可以用于获取URI的真实路径。如果URI是通过DocumentsContract提供的,那么根据不同的URI类型,代码将使用不同的方法来获取真实路径。对于使用content协议的URI,代码将调用getDataColumn()方法来查询数据列并返回路径。对于使用file协议的URI,代码将直接返回路径。

代码还提供了一些辅助方法,如isExternalStorageDocument()、isDownloadsDocument()、isMediaDocument()和isGooglePhotosUri(),用于判断URI的类型。

需要注意的是,该方法在Android 7及以上版本中可能存在问题,因为在这些版本中,数据列"_data"可能不存在。

代码示例中还提到了一些问题和错误,如在处理非主要下载文件夹时可能会出错,以及在Android 7及以上版本中可能会出现"_data"列不存在的错误。

0
0 Comments

原因:在Android中,有时候需要获取文件的真实路径,但是通过URI获取路径时会遇到一些问题。上述代码是为了解决这个问题而编写的,通过不同的URI类型,使用不同的方式获取文件的真实路径。

解决方法:使用上述提供的getRealPathFromURI函数,将URI传递给该函数,即可获取文件的真实路径。

代码如下:

val fileRealPath = getRealPathFromURI(context!!, fileURI) ?: ""

如果遇到问题,可以根据情况检查isDownloadDocument方法中的id.startsWith("msf:")条件,也可以参考stackoverflow上的解决方案。如果问题无法解决,可以提出新的问题寻求帮助。

注意:以上代码和解决方案是使用Kotlin语言编写的。

0
0 Comments

问题:在Android中获取Uri的真实路径的原因和解决方法

当我们需要获取Android设备上的选定视频的真实路径时,可以使用以下代码:

Uri uri = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, filePathColumn, null, null, null); 
if(cursor.moveToFirst()){
   int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
   String yourRealPath = cursor.getString(columnIndex);
} else {
   //boooo, cursor doesn't have rows ...
}
cursor.close();

以上代码通过查询内容提供器的方式,可以获取到选定视频的真实路径。

此外,还可以参考以下链接获取帮助:

[Get filename and path from URI from mediastore](https://stackoverflow.com/questions/3401579)

最新的解决方案是使用File Provider(API 29),可以参考以下链接:

- [Blogs: https://blogs.datanapps.com/media-picker](https://blogs.datanapps.com/media-picker)

- [Github: https://github.com/datanapps/MediaPicker](https://github.com/datanapps/MediaPicker)

希望这些信息能够对您有所帮助。如果没有,请明天再更新答案。

0