我正在编写一个可以上传文件的应用程序。通过使用StartActivityForResult
或通过其他应用程序的共享菜单接收文件。使用URI的Android
我遇到了一些问题,通过共享菜单接收文件,具体确定文件信息。在上传之前,我需要知道文件的名称和大小。从应用程序(如图库应用程序或Google照片)共享时,一切正常 - 收到content://
方案的URI,我可以使用ContentResolver
获取名称和大小。但从一些应用程序,我收到一个与file://
计划的URI和相同的方法不再工作。有两种方案从URI获取文件信息的方法吗?有没有一种方法可以保证它可以用于所有可能的URI?
代码获取文件信息:
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));
}