我正在尝试制作一个Android应用程序来打开扩展名为.abc的文件,这是我的应用程序部分来自android manifest xml
<application android:label="@string/app_name" android:icon="@drawable/icon">
<activity android:name="com.example.app.ActName" android:label="AppName">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="image/jpeg"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.abc" />
<data android:host="*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
我使用了最受欢迎和相关问题的所有经验
Android intent filter for a particular file extension?
Android intent filter: associate app with file extension
最后这不起作用 - 当我在ES文件浏览器中点击一个名为“name.abc”的文件时,它询问我是否要将文件作为文本或图像等打开,当它实际上应该只是在我的应用程序中打开文件
看起来不同的Android系统和不同的文件浏览器以不同的方式运行 - 一个意图过滤器在“ES文件资源管理器”中的4.2和默认文件管理器中的4.0.4上工作正常,但在4.2上完全不起作用“Total Commander”中的4.0.4和“ES文件资源管理器”中的4.0.4
答案 0 :(得分:2)
首先,示例中的第一个intent-filter
使用MIME类型image/jpeg
。 jpeg
您的.abc
扩展程序是<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="application/abc"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="application/octet-stream"/>
</intent-filter>
吗?
我认为为什么这不起作用可能有三个原因:
您需要添加更多MIME类型。尝试添加以下内容:
.abc
并且,如果您的<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="text/plain"/>
</intent-filter>
格式是文本格式:
file
您已注册content
计划。您可能还需要<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.abc" />
<data android:host="*" />
</intent-filter>
方案:
pathPattern
Rumor认为带有点的One.abc
只匹配包含单个点的文件。在您的示例中,这意味着您的应用会与Two.Dots.abc
相关联,但不会与.*\\..*\\.abc
相关联。尝试添加更多pathPatterns .*\\..*\\..*\\.abc
,<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\..*\\.abc" />
<data android:host="*" />
</intent-filter>
等:
{{1}}