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

Android intent Xamarin上自定义文件扩展名的意图过滤器实现,android-intent,xamarin,xamarin.android,Android Intent,Xamarin,Xamarin.android,我想在我的应用程序中打开具有自定义扩展名的文件。它可以来自电子邮件、下载、蓝牙等。每当用户点击这些文件,我的应用程序就会打开并执行一些任务。我需要xamarin平台的参考/帮助。我在这方面是个新手 我的机器人节日 <activity android:name=".StartFileActivity" android:label="@string/app_name"> <intent-filter> <action androi

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

我的机器人节日

<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>
低于误差

无法实例化活动组件信息{com.ppp.androidtentfile/com.ppp.androidtentfile.StartFileActivity}:java.lang.ClassNotFoundException:在路径为DexPathList[[zip文件”//data/app/com.ppp.androidtentfile-1/base.apk]的NativeLibrary目录中未找到类“com.ppp.androidtentfileactivity”=[/data/app/com.ppp.androidtentfile-1/lib/arm、/vendor/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 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>


成功了!!!我知道我在class属性中遗漏了一些东西。谢谢@sushingcovern您添加了实际访问
*.IE3
文件所需的代码吗?
[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>