2

我想注册一个新的文件扩展名 (.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>
4

1 回答 1

2

这就是我现在在我的应用程序中设置意图的方式。只需将 .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>
于 2013-01-27T18:21:19.950 回答