将新文件与Android应用相关联

时间:2013-01-10 15:20:35

标签: android android-manifest intentfilter

我想要注册一个新的文件扩展名(.db_backup),以便所有带有此扩展名的文件都可以通过我的应用程序打开。

此类文件基本上作为附件备份到电子邮件中。在打开附件时,我想要使用我的应用程序直接打开此类型的所有文件。

通过提及android:mimeType = application / *

,我成功地这样做了

但是现在所有应用程序(PDF,APK)都打开了我的应用程序(这是明显的,因为*提到)。请告诉我在清单中我应该提到什么android:mimeType?我的AndroidManifest.xml给出了:

<activity
        android:name="com.package.RestoreFromMail"
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/restore_mail" >
        <intent-filter android:priority="1" >
            <category android:name="android.intent.category.DEFAULT" >
            </category>

            <action android:name="android.intent.action.VIEW" >
            </action>

            <data
                android:host="*"
                android:pathPattern=".*\\.db_backup"
                android:scheme="http" >
            </data>
        </intent-filter>
        <intent-filter android:priority="1" >
            <category android:name="android.intent.category.DEFAULT" >
            </category>

            <action android:name="android.intent.action.VIEW" >
            </action>

            <data
                android:host="*"
                android:pathPattern=".*\\.db_backup"
                android:scheme="file" >
            </data>
        </intent-filter>
        <intent-filter android:priority="1" >
            <category android:name="android.intent.category.DEFAULT" >
            </category>

            <action android:name="android.intent.action.VIEW" >
            </action>

            <data
                android:host="*"
                android:mimeType="application/*" >
            </data>
        </intent-filter>
    </activity>

1 个答案:

答案 0 :(得分:1)

这就是我现在在我的应用中设置意图的方法。只需用.ext替换你的扩展名。另请注意我使用的是mimeType =“* / *”。必须这样做才能使它与Astro文件管理器一起使用。通过删除内容方案中的android:host =“*”,现在也可以使用电子邮件。

<!-- For email -->
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="content" />
    <data android:pathPattern=".*\\.ext" />
    <data android:mimeType="application/octet-stream" />
 </intent-filter>

  <!-- For http -->
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http" />
    <data android:host="*" />
    <data android:pathPattern=".*\\.ext" />
    <data android:pathPattern=".*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ext"/>
    <data android:mimeType="*/*" />
 </intent-filter>

<!-- For https -->
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="https" />
    <data android:host="*" />
    <data android:pathPattern=".*\\.ext" />
    <data android:pathPattern=".*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ext"/>
    <data android:mimeType="*/*" />
 </intent-filter>

<!-- For file browsers and google drive -->
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="file" />
    <data android:host="*" />
    <data android:pathPattern=".*\\.ext" />
    <data android:pathPattern=".*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ext"/>
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ext"/>
    <data android:mimeType="*/*" />
 </intent-filter>