QuickOffice:从quickoffice的共享功能获取文件uri

时间:2014-03-27 11:10:48

标签: android uri quickoffice

在我的应用程序中,我可以下载文档(例如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)

2 个答案:

答案 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;

}