在我的应用程序中,我可以下载一个文档(例如docx)并在QuickOffice中打开它。在编辑文档之后,我使用了“保存”按钮,成功地保存了它之后,我点击了“共享”按钮并选择了我的应用程序,这样我就可以重新上传它。
我的问题是,我得到的uri不是您期望的内容://storage/map/file.docx之类的通常的uri。我从quickoffice那里得到这个:
content://com.quickoffice.android.quickcommon.FileContentProvider/zEV5qmvBJOg2GGWldHMJnNK687Ur6qLGbbMbxj0IxV9cDv2mN8XTGqRrEqU4KIfeZuQNMKMJ_eDx%0AN4YiNZwDShhb4E8%3D%0A我的问题是,如何将这个uri从文件中转换为真正的路径uri (例如,内容://storage/map/file.docx)
发布于 2014-03-27 11:59:24
没有“真正的道路”。
欢迎ContentProvider在它想要的任何地方存储它的内容,它可能不是一个文件(例如,数据库中的BLOB列),即使是这样,它也可能不是您可以访问的文件(例如,承载ContentProvider的应用程序的内部存储)。
请使用ContentResolver上的各种方法(如openInputStream() )访问此提供程序的内容。
发布于 2014-04-13 15:23:30
请使用以下代码。对我来说挺好的。
公共静态字符串getContentName(ContentResolver解析器,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;}
https://stackoverflow.com/questions/22685826
复制相似问题