首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android与URI协同工作

Android与URI协同工作
EN

Stack Overflow用户
提问于 2016-04-26 10:06:52
回答 1查看 118关注 0票数 0

我正在写一个应用程序,可以上传文件。这些文件要么使用StartActivityForResult接收,要么通过共享菜单从其他应用程序接收。

我遇到了一些问题,通过共享菜单接收文件,特别是确定文件信息。上传之前,我需要知道文件的名称和大小。当从图库应用或Google等应用程序进行共享时,可以接收content://方案的一切运行良好的URI,我可以使用ContentResolver获取名称和大小。但是,从一些应用程序中,我收到了一个带有file://方案的URI,而且同样的方法不再起作用了。是否有一种方法可以从URI获得这两种方案的文件信息?是否有一种方法可以保证它对所有可能的URI都有效呢?

获取文件信息的代码:

代码语言:javascript
复制
string folderName = "";
Android.Net.Uri tempUri = null;
switch (Intent.Action) {
case Intent.ActionSend:
    var result = Intent.GetParcelableExtra (Intent.ExtraStream);
    tempUri = Android.Net.Uri.Parse(result.ToString());
    break;
case Intent.ActionSendMultiple:
    var uris = Intent.GetParcelableArrayListExtra(Intent.ExtraStream);
    tempUri = Android.Net.Uri.Parse(uris[0].ToString());
    break;
}

if (tempUri != null) {
    var cursor = this.ContentResolver.Query (tempUri, null, null, null, null);
    if (cursor != null && cursor.MoveToFirst ())
        folderName = cursor.GetString (cursor.GetColumnIndex (Android.Provider.OpenableColumns.DisplayName));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 11:15:30

是否有一种方法可以从URI获得这两种方案的文件信息?

file:content: Uri包装在DocumentFile中。然后,在getType()length()上调用DocumentFile。在file:getType()的例子中,我假设DocumentFile在封面下使用MimeTypeMap来尝试猜测MIME类型。

是否有一种方法可以保证它对所有可能的URI都有效呢?

不是的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36861747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档