【发布时间】:2021-01-09 14:40:20
【问题描述】:
为了获取捕获图像和图库图像的真实路径,以下代码对我来说非常好。
private String getRealPathFromURI(Uri contentUri) {
String result = null;
try{
String[] proj = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(requireActivity(), contentUri, proj, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
result = cursor.getString(column_index);
cursor.close();
}catch(Exception e){
Log.i("error_getting_path",e.getMessage());
}
return result;
}
但在 android 10 及更高版本的设备中,我无法获取捕获和图库图像的路径。 所以我的应用无法在 android 10 及更高版本中运行此功能。 请建议在所有 android 设备中获取路径的最佳方法。
【问题讨论】:
-
Android 10 和 11 上不使用 .DATA 列。最好的方法不是尝试从一个不错的 uri 获取路径(无论如何都是一个讨厌的习惯),而是直接使用 uri。你不需要路径……嗯……基本上不需要。
-
文件 file = new File(getRealPathFromURI(contentUri)); RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("image",file.getName(),requestFile) .build();
-
这是我使用所选路径上传文件或捕获图像的方法,我如何在没有文件路径的情况下执行此操作。从 uri 创建的文件不适用于 .. @blackapps
-
有类似 .addStreamUri 的东西.....抱歉忘记了名字。看一看。 ide 给你一个选择。
标签: java android image android-intent gallery