Xamarin Forms 中的文件关联(Android 不起作用)



应用程序需要从 Web 下载以及邮件附件接收 XML 文件。 在iOS上一切正常,但在Android上文件关联不起作用。程序运行良好,但是当尝试打开XML文件时,Android说"无法打开文件">

我尝试了不同的MemeType,DataShemes和Actions,但没有一个有效。

[Activity(Label = "MyApp", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, LaunchMode = Android.Content.PM.LaunchMode.SingleTask,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
[IntentFilter(new[] { Intent.ActionView},
Categories = new[] { Intent.CategoryDefault },
DataScheme = "file",
DataHost = "*",
DataPathPattern = ".*\.xml",
DataMimeType = @"application/xaml+xml")]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
string action = Intent.Action;
string type = Intent.Type;
//If opened to recieve a file
if (Intent.ActionView.Equals(action) && !String.IsNullOrEmpty(type))
{
Console.WriteLine("Opened to recieve a file!");
}
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init();
LoadApplication(new App());
}

我希望该应用程序用于打开和发送.xml文件 然后将被处理。

编辑:链接到测试应用程序,其中控制台在工作时喊"打开以接收文件"。 https://dracoon.team/#/public/shares-downloads/BMCPjb5XGlWyQArahpnl2x1uoHmBCRv6

对于那些正在寻找如何将您的应用程序与open with...相关联的解决方案的人(我无法找到这个问题的明确答案(。以下是对我有用的方法:

我正在使用 Xamarin 16.7

就像路易斯(OP(一样,我正在尝试以下IntentFilter

[IntentFilter(new[] { Intent.ActionView},
Categories = new[] { Intent.CategoryDefault },
DataScheme = "file",
DataHost = "*",
DataPathPattern = ".*\.txt",
DataMimeType = @"*/*")]

为了测试上述意图过滤器,我会转到默认文件应用程序,并尝试打开 txt 文件,但我的应用程序不会显示为选项。

然后我把它改成:

[IntentFilter(new[] { Intent.ActionView }, 
Categories = new[] { Intent.CategoryDefault }, DataMimeType = @"text/plain")]

它奏效了。问题是,在DataScheme,在尝试open with...时,它不是file,而是content

如果您遇到此类问题,请确保过滤器设置正确。

相关内容

  • 没有找到相关文章