Xamarin 上自定义文件扩展名的意图过滤器实现

2024-02-12

我想在我的应用程序中打开带有自定义扩展名的文件。它可以来自电子邮件、下载、蓝牙等。每当用户点击这些文件时,我的应用程序就应该打开并执行一些任务。我需要 xamarin 平台的参考/帮助。我在这方面确实是新手。

我的 Android 清单

<activity android:name=".StartFileActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="content" />
            <data android:pathPattern=".*\\.IE3" />
            <data android:mimeType="application/*" android:scheme="content" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http" android:host="com.ppp.androidintentfile" />
            <data android:host="*" />
            <data android:pathPattern=".*\\.IE3" />
            <data android:pathPattern=".*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.IE3" />
            <data android:mimeType="*/*" android:scheme="content" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https"  android:host="com.ppp.androidintentfile" />
            <data android:host="*" />
            <data android:pathPattern=".*\\.IE3" />
            <data android:pathPattern=".*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.IE3" />
            <data android:mimeType="*/*" android:scheme="content" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="file"  android:host="com.ppp.androidintentfile" />
            <data android:host="*" />
            <data android:pathPattern=".*\\.IE3" />
            <data android:pathPattern=".*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.IE3" />
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.IE3" />
            <data android:mimeType="*/*" android:scheme="content" />
        </intent-filter>
    </activity>

活动代码

namespace AndroidIntentFile
{
[Activity (Label = "StartFileActivity")]
[IntentFilter(new[]{Intent.ActionSend},Categories = new[]{Intent.CategoryDefault},DataMimeType = "application/*",Label = "AndroidIntentFile")]  

public class StartFileActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        if (Intent.Action == Intent.ActionSend && Intent.Extras.ContainsKey(Intent.ExtraStream))
        {
            var fileUrl = GetFilePath((Android.Net.Uri)Intent.Extras.GetParcelable(Intent.ExtraStream));
        }
    }

    private string GetFilePath(Android.Net.Uri uri)
    {
        return uri.ToString ();
    }
}


}

出现以下错误

无法实例化活动 ComponentInfo{com.ppp.androidintentfile/com.ppp.androidintentfile.StartFileActivity}:java.lang.ClassNotFoundException:在路径上找不到类“com.ppp.androidintentfile.StartFileActivity”:DexPathList[[zip 文件“ /data/app/com.ppp.androidintentfile-1/base.apk"],nativeLibraryDirectories=[/data/app/com.ppp.androidintentfile-1/lib/arm, /v​​endor/lib, /system/lib]]


使用类属性并且不添加任何硬编码清单:

[Activity(Label = "StartFileActivity")]
[IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault }, DataMimeType = "application/*", DataPathPattern = "*.IE3")]
public class StartFileActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Do something with the *.IE3 file...
    }
}

会自动添加到您的清单中:

<activity android:label="StartFileActivity" android:name="md54385a510f3a446695f2c9f6ad6a86f05.StartFileActivity">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/*" />
    <data android:pathPattern="*.IE3" />
  </intent-filter>
</activity>

如果您确实需要删除自动生成的名称,请提供硬编码Activity name:

[Activity(Label = "StartFileActivity", Name="foo.bar.SomeName")]
[IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault }, DataMimeType = "application/*", DataPathPattern = "*.IE3")]
public class StartFileActivity : Activity

结果是:

<activity android:label="StartFileActivity" android:name="foo.bar.SomeName">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/*" />
    <data android:pathPattern="*.IE3" />
  </intent-filter>
</activity>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin 上自定义文件扩展名的意图过滤器实现 的相关文章

  • Android - 正确使用 invalidateOptionsMenu()

    我一直在寻找很多invalidateOptionsMenu 我知道它的作用 但我想不出这种方法在现实生活中有用的任何例子 我的意思是 例如 假设我们要添加一个新的MenuItem to our ActionBar 我们可以简单地获取菜单on
  • Android Web Intent 问题

    G day 免责声明 我不是 Android 开发人员 我正在对我所描述的问题进行质量检查 我用来描述这个问题的技术术语可能是错误的 我正在测试一个 Android 应用程序 该应用程序在其清单中描述它可以使用 type 的地址处理 Web
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 无法启动活动?

    在添加异步任务之前 我对代码进行了一些更改 我的应用程序可以正常工作 从远程服务器验证用户名和密码 但在登录成功消息消失时无法启动其他活动 有人建议我添加异步任务 现在我已经添加了该任务 但是当我输入正确的用户名和密码时 它会停止工作 当我
  • 如何在Xamarin Forms中实现Google Auth登录?

    我是 Xamarin 新手 我希望使用 Xamarin Forms 在我的新应用程序中进行 Google 登录 正确的方法是什么 有更新的教程或视频来指导吗 从哪儿开始 thanks 除了link https developer xamar
  • 如何从android中的外部存储中获取所选文件的文件路径?

    我在选择文件的文件路径时遇到问题 我搜索了整个堆栈溢出 但问题没有解决 从设备中选择文件的代码如下所示 Intent intent new Intent Intent ACTION GET CONTENT intent setType in
  • 使用Intent拨打电话需要权限吗?

    在我的一个应用程序中 我使用以下代码来拨打电话 Intent intent new Intent Intent ACTION CALL Uri parse startActivity intent 文档说我确实需要以下清单许可才能这样做
  • 使用 MonoDroid 试用版调试应用程序

    我已经安装了 MonoDroid 试用版 我创建了一个 Hello World 应用程序并在模拟器中对其进行调试 但任何应用程序都会出现在 Android 设备模拟器上的应用程序列表中 问题是试用版还是我的应用程序中出现了一些错误 你能帮我
  • iOS App Store ExecutionEngineException 尝试 JIT 编译

    我有一个非常尴尬的问题 我已经为 iOS 构建了我的应用程序 并在所有模拟器上对其进行了测试 并且运行良好 我已将其安装在设备 iPhone 6 plus 上 效果也很好 然而 当我将其提交到应用商店时 反馈是它在所有设备上启动时都会崩溃
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何从基类捕获点击项目(位于模板中)的事件?

    我有一个基础网格
  • 需要在 Android 中伪造正在扫描的 NFC 标签

    好的 我有一个应用程序 此应用程序仅在扫描 NFC 标签 任何标签 时才会完成任务 唯一的问题是 我没有任何 nfc 标签 无论如何 我正试图消除对卡的需要 所以我需要的是一种 伪造 使其看起来 就像已扫描 nfc 标签的方法 我可以编写应
  • 将 React Native 集成到 Xamarin 项目中

    我的任务是看看是否可以将 React Native 集成到 Xamarin Forms 项目中 我认为我已经非常接近实现这一目标 但我不能肯定地说 我知道这是一个有点奇怪 倒退的解决方案 但无论如何我想尝试一下 看看我是否可以打败它 Int
  • Xamarin.iOS UIApperance setDefaultTextAttributes

    我试图弄清楚如何在 Xamarin 中实现以下代码 UITextField appearanceWhenContainedIn UISearchBar class nil setDefaultTextAttributes NSForegro
  • 可移植类库配置文件 78 缺失属性相关方法/属性

    在我的 PCL 核心项目 WP8 Android iOS Xamarin MvvmCross 中 我使用自定义属性 Type GetCustomAttributes 扩展方法允许我检查所使用的属性 使用 PCL Profile104 效果很
  • Xamarin Forms - 错误 MT2002:无法解析 UIKit.UIEdgeInsets

    我正在研究一个Xamarin Forms项目 更新后出现以下错误Xamarin Forms版本至 2 4 0 74863 Users UserName Official Projects ProjectFolder ProjectName
  • android以编程方式打开电池设置

    我正在寻找一种从 Android 应用程序打开电池设置屏幕的方法 到目前为止我发现了两个意图 Intent ACTION POWER USAGE SUMMARY Settings ACTION BATTERY SAVER SETTINGS
  • 当我添加点击手势时,捏合和平移在 Xamarin 表单中不起作用

    我想创建一个功能来点击并在另一个背景图像上添加图钉图像 并且背景图像应该能够缩放和平移 这是为此的 XAML 代码 这里捏缩放不起作用 但点击事件工作正常
  • 设备的临时协同设计在 Studio 中成功,但在 Jenkins 中失败

    我有一个支持 Android 和 iOS 的 Xamarin Forms 应用程序 我已经生成了 Jenkins 版本来编译它们 所有 Android 构建都可以工作 iOS 调试版本编译良好 然而 Ad Hoc 构建无法完全针对 iPho
  • 除了前一个按钮意图之外,如何添加另一个按钮意图?

    这是我的代码 它包含一个名为的按钮button1A当我单击它时 它会打开一个名为的列表list1 如何为另一个名为 button2A 的按钮添加代码 该按钮将打开一个列表 List2 import android os Bundle imp

随机推荐

  • 如何将粘性 div 保持在固定标题下方

    我在我的项目中使用 Bootstrap 4 并且在固定导航栏下保留带有 sticky top 类的 div 似乎遇到问题 我尝试过使用 javascript 来替换滚动上的 css 但这似乎不起作用 我知道有一种方法可以为导航栏设置一个 i
  • 合并两个数据帧以按顺序获取每个数据帧的交替行

    我的数据框DATA is k l g 1 A 2004 12 2 B 2004 3 4 3 C 2004 4 5 另一个数据框DATA2 is i d t 1 A 2012 22 2 B 2012 4 8 3 C 2012 5 6 我想要得
  • 学习 UIScrollView 的基础知识

    我一直很难找到 UIScrollView 的好例子 即使是苹果的 UIScrollView Suite 我也觉得有点缺乏 我正在寻找一个教程或示例集 向我展示如何创建类似于 iPhone Safari 选项卡滚动的内容 当您从一个浏览器窗口
  • 相同域,不同文件夹 PHP 会话

    我想根据用户所在的文件夹设置不同的会话 ID 例如 我有域名https example com https example com其中有文件夹 app1 app2 等 每个应用程序文件夹内有多个文件 我想设置一个会话 ID 用于 app1
  • 找不到“算法”文件

    我正在尝试使用以下库在 Xcode 中创建一个简单的控制台应用程序 https github com marstone ingress ios tree master s2 geometry https github com marston
  • 使用格式规范迷你语言截断和填充

    我目前正在编写使用 Python 的代码 用空格填充字符串格式规范迷你语言 http docs python org 2 library string html formatspec print user lt 10 you re welc
  • 在其消费者中处理生成器异常

    这是后续处理生成器中抛出的异常 https stackoverflow com q 11366064 989121并讨论一个更普遍的问题 我有一个读取不同格式数据的函数 所有格式都是面向行或记录的 并且对于每种格式都有一个专用的解析函数 作
  • 创建zip时没有错误,但没有创建

    我编写此代码是为了创建一个 ZIP 文件并保存它 但不知怎的 它只是没有显示任何错误 但它也没有创建 ZIP 文件 这是代码 zip new ZipArchive time microtime true res zip gt open ma
  • 使用 hibernate 将 null 保存为 id [重复]

    这个问题在这里已经有答案了 我处于一个奇怪的位置 我需要保存 Id of an Entity as null 整个项目是使用 hibernate 和实体构建的 但对于这一遗留实体 表本身有一个触发器来生成 ID 因此 尝试插入除 null
  • 不使用 MFMailComposeViewController 发送电子邮件

    是否可以在iOS中发送电子邮件而不依赖于系统默认的邮件 消息传递接口 这与消息传递真的一样吗 您不能为消息创建自定义界面 而是使用 MFMessageComposerViewController 的默认界面 看看这个答案 锁定 MFMail
  • 如何读取 PHP 中的请求标头?

    我应该如何读取 PHP 中的任何标头 例如自定义标头 X Requested With IF 你只需要一个标题 而不是allheaders 最快的方法是
  • EaselJS 在鼠标悬停时更改颜色

    在笨手笨脚地在 HTML canvas 元素中实现了所有与鼠标和矢量相关的信息后 我切换到了 EaselJS 我已经习惯了 EaselJS 它真的很简洁 我特别喜欢这些容器以及它们使绘制嵌入形状变得多么简单 但是 我不知道你如何实现颜色变化
  • 运行时间较长但易于验证的算法?

    我正在设计一个网站进行实验 会有一个按钮供用户使用must点击并按住一段时间 然后松开 然后客户端向服务器提交AJAX事件 但是 为了防止自动点击机器人和快速垃圾邮件 我希望保持时间非常真实且不可跳过 例如做一些计算 重点是浪费实际的 CP
  • 子组件的 v-model 和子组件 Vue 内部的 v-model

    有没有办法简化这段代码 该按钮还应该更改子级的 localValue Vue component my input template div b My Input b br localValue localValue br div
  • 浮动溢出?

    下面的代码似乎总是产生错误的结果 我已经在 gcc 和 windows Visual Studio 上测试了它 是因为浮动溢出还是其他原因 提前致谢 include
  • c++11 成员函数从 unique_ptr 向量返回原始指针向量

    我开始使用 c 11 功能 并且我喜欢仅使用智能指针来拥有对象 这是我的课程 class MyClass public vector
  • Maven,配置具体目标

    我想配置 maven war plugin 的 爆炸 目标
  • 显示 Flex 上的文本右对齐

    我的代码如下 div div div div list name div br div div formatTime this state remainingTime days span language days span div div
  • C++11 随机数生成器的线程安全

    C 11 中有许多新的随机数生成器引擎和分布函数 它们线程安全吗 如果您在多个线程之间共享单个随机分布和引擎 是否安全并且您仍然会收到随机数吗 我正在寻找的场景是这样的 void foo std mt19937 64 engine stat
  • Xamarin 上自定义文件扩展名的意图过滤器实现

    我想在我的应用程序中打开带有自定义扩展名的文件 它可以来自电子邮件 下载 蓝牙等 每当用户点击这些文件时 我的应用程序就应该打开并执行一些任务 我需要 xamarin 平台的参考 帮助 我在这方面确实是新手 我的 Android 清单