android - 如何从文档文件路径中获取内容 Uri?
问题描述
我可以从以下代码中获取媒体(图像和视频)内容 Uri
public static Uri getImageContentUri(Context context, File imageFile, String type) {
if (type != null && type.equals(Constants.IMAGE)) {
String filePath = imageFile.getAbsolutePath();
Cursor cursor = context.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Images.Media._ID},
MediaStore.Images.Media.DATA + "=? ",
new String[]{filePath}, null);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
cursor.close();
return Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + id);
} else {
if (imageFile.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, filePath);
return context.getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
} else {
return null;
}
}
} else if (type != null && type.equals(Constants.VIDEO)) {
String filePath = imageFile.getAbsolutePath();
Cursor cursor = context.getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Video.Media._ID},
MediaStore.Video.Media.DATA + "=? ",
new String[]{filePath}, null);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
cursor.close();
return Uri.withAppendedPath(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, "" + id);
} else {
if (imageFile.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.DATA, filePath);
return context.getContentResolver().insert(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
} else {
return null;
}
}
}
return null;
}
但是对于文本、pdf 等文档文件,我无法获取 Content Uri。
注意:Uri.fromFile()不适用于 Content Uri。
内容 Uri 示例:content://media/external/file/17277
解决方案
推荐阅读
- javascript - 当用户到达页面末尾减去 x 像素量时加载页面
- reactjs - 如何修复未捕获的类型错误:调用函数时无法读取属性“props”?
- c++ - c ++代码块正常但仍然无法编译
- c++ - 为什么字符串和int之间的+运算符充当substr
- amazon-web-services - 用于 AWS S3 v4 身份验证问题的 Nginx 代理
- python - 如何将 Python 列表转换为 Python Dataframe?
- google-api - Google Classroom API 清单 材料
- html - Paragraf 桌子,底部有厚实的侧面
- c - 访问嵌套结构变量
- select - 从具有多个条目的表中选择随机值以插入到配置单元中的另一个表中