我有一个带有自定义扩展名(例如.abc)的附件,其mimeType我不知道。我想用我的Android应用程序打开这个附件。我尝试将下面的代码添加到清单中,但这似乎没有帮助。我确实经历过多个Stack Overflow帖子,但似乎没有任何工作,那些也将我的应用程序暴露给其他扩展而不仅仅是.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="*/*" />
<data android:pathPattern="*.*\\.abc" />
<data android:host="*"/>
</intent-filter>
答案 0 :(得分:3)
*
中有一个开头pathPattern
。有什么理由吗?它不应该是主角,因为它只影响前面的角色。
来自Android docs:
星号('*')匹配前一个字符的0到多次出现的序列。
一个星号后跟一个星号(“。*”)匹配0到多个字符的任何序列。
您可能还想添加android:scheme
元素。从上面的相同部分:
仅当为过滤器指定了方案和主机属性时,这些属性才有意义。
此外,这里有一个near duplicate,您可以通过广泛接受的答案进行阅读。
答案 1 :(得分:0)
您需要指定android:scheme
<activity>
<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:scheme="content" />
<data android:host="*" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*abc" />
<data android:pathPattern=".*\\.abc" /> <!-- path includes one '.' -->
<data android:pathPattern=".*\\..*\\.abc" /> <!-- path includes two '.' -->
<data android:pathPattern=".*\\..*\\..*\\.abc" /> <!-- path includes three '.' -->
<!-- repeat as long as you want -->
</intent-filter>
</activity>