运行 选择带有自定义扩展名的文件时我的应用程序(并执行某些操作)

Run my app when a file with custom extension is selected (and do something)

我正在尝试使用 mvvm 在 Xamarin 中编写我的第一个跨平台应用程序。 该应用程序记录用户插入的项目(付款)并做一些事情(预测和其他数学)。

我将代码写入 add/update/delete/show 个项目,当添加一个项目时,应用会保存该项目并编写一个包含该项目所有信息的自定义扩展名 (*.dinero) 的文件,因此应用程序在开始时异步加载所有文件。

我嵌入了一个通过电子邮件发送这些文件的功能,以允许其他用户将相同的项目添加到其项目列表中。

我的问题是如何将自定义文件扩展名关联到我的应用程序,以及如何实施打开“newItempage”以允许用户将项目保存到其文件中的过程?

我找到了问题 但我不明白如何使用它(我必须在答案中编写代码)。

我回答我的问题是为了让别人的生活简单一点。 要将文件与允许在“点击具有自定义扩展名的文件”事件发生时启动应用程序的应用程序相关联,我们必须在 class 声明上方的 MainActivity.cs 中添加:

 [IntentFilter(new[] { Android.Content.Intent.ActionView }, 
Categories = new[] { Android.Content.Intent.CategoryDefault }, 
DataMimeType = "application/*", DataPathPattern = "*.Dinero")]

所以在方法OnCreate中我们必须添加if语句来处理意图数据:

if ( Intent.Action== Android.Content.Intent.ActionView)
{
      string filecontent = GetFileContent(Intent);
}

在我的情况下,我会阅读 Dinero 文件。 Intent 数据不包含文件路径但包含 URI,因此要读取文件内容我们需要调用 ContentResolver 以创建流并最终读取文件内容:

string GetFileContent(Android.Content.Intent Intent)
        {
            Android.Net.Uri uridata = Intent.Data;
            StreamReader streamread = new StreamReader(ContentResolver.OpenInputStream(uridata));
            string content = streamread.ReadToEnd();
            return content;
        }