使用FileProvider在缓存中查看图像,但文件没有扩展名

时间:2018-04-19 16:50:04

标签: android xamarin android-fileprovider

奇怪的问题....当我执行一个ActionView意图来查看whith默认的图库应用程序时,例如在下载文件夹中的图像,它足以设置正确的mime类型,而无需指定文件扩展名。 / p>

例如,查看xamarin的c#代码:

string myImage = Path.Combine(Environment.ExternalStorageDirectory.Path, Environment.DirectoryDownloads, "myImage")

Intent intent = new Intent(Intent.ActionView);
intent.SetDataAndType(Uri.FromFile(new File(myImage)), "image/jpeg");
StartActivity(intent);

即使 myImage 是没有扩展名的jpeg文件(通常我应该使用 myImage.jpg ),这也可以正常工作。

但是,如果我想打开位于缓存中的相同图像,使用FileProvider提供正确的权限,在我明确设置.jpg扩展之前它不会工作。

//Assuming myImage is a valid jpeg just present in cache
string myImage= Path.Combine(CacheDir.AbsolutePath, "myImage");

Uri imageUri = Android.Support.V4.Content.FileProvider.GetUriForFile(this, "com.myapp.fileprovider", new File(myImage));

Intent intent = new Intent(Intent.ActionView);
intent.SetFlags(ActivityFlags.GrantReadUriPermission);
intent.SetDataAndType(imageUri, "image/jpeg");
StartActivity(intent);

这不起作用,画廊说不能找到元素。

但如果我在 myImage.jpg 中重命名文件和内容变量,则图库会正确显示图像。

由于我必须下载几个mime类型但没有名称的文件,所以我只想依赖特定的类型来避免附加文件扩展名。

有没有人遇到同样的问题?

0 个答案:

没有答案