如何使用Android应用打开自定义附件?

时间:2013-08-12 19:40:35

标签: android android-intent file-extension intentfilter

我有一个带有自定义扩展名(例如.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>

2 个答案:

答案 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>