在我的应用程序中,我可以下载文档(例如docx)并在QuickOffice中打开它。在编辑文档之后,我使用了保存按钮,在成功保存之后,我点击了共享按钮并选择了我的应用程序,以便重新加载它。
我的问题是,我得到的uri不是你期望的内容://storage/map/file.docx或类似的东西。我从quickoffice得到这个:
content://com.quickoffice.android.quickcommon.FileContentProvider/zEV5qmvBJOg2GGWldHMJnNK687Ur6qLGbbMbxj0IxV9cDv2mN8XTGqRrEqU4KIfeZuQNMKMJ_eDx%0AN4YiNZwDShhb4E8%3D%0A
我的问题是,如何将此uri从文件转换为真实路径uri(例如:content://storage/map/file.docx)
答案 0 :(得分:1)
没有"真实路径"。
欢迎ContentProvider
将其内容存储在任何地方,可能不是文件(例如,数据库中的BLOB列),即使它是,也可能不是您可以使用的文件访问权限(例如,托管ContentProvider
的应用的内部存储空间。
请使用ContentResolver
上的各种方法(例如openInputStream()
)访问此提供商的内容。
答案 1 :(得分:0)
请使用以下代码。它对我来说很好。
public static String getContentName(ContentResolver resolver,Uri uri){
String[] ATTACHMENT_META_COLUMNS = {
OpenableColumns.DISPLAY_NAME,
OpenableColumns.SIZE
};
String name = "";
int size= 0;
Cursor metadataCursor = resolver.query(uri, ATTACHMENT_META_COLUMNS, null, null, null);
if (metadataCursor != null) {
try {
if (metadataCursor.moveToFirst()) {
name = metadataCursor.getString(0);
size = metadataCursor.getInt(1);
}
} finally {
metadataCursor.close();
}
}
if (name == null) {
name = uri.getLastPathSegment();
}
return name;
}