运行 选择带有自定义扩展名的文件时我的应用程序(并执行某些操作)
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;
}
我正在尝试使用 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;
}