纠正Android intent-filter配置以将文件类型与Activity相关联?

时间:2010-11-10 21:00:36

标签: android android-activity android-intent intentfilter

之前已经多次询问过这个问题,但我没有看到任何明确的答案或实际有效的代码示例。

我想将Activity与特定文件类型相关联。

对于讨论,假设我希望我的Activity与PDF相关联。

这是我现在拥有的。我在intent-filter中尝试了许多不同的值和值组合,但是我还没有在选择PDF时启动我的Activity。

<activity name="com.mycompany.MyActivity">
    <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="application/pdf" />
        <data android:pathPattern="\\*\\.pdf" />
        <data android:host="*" />
    </intent-filter>
</activity>

有谁知道如何让这项工作真正起作用?

3 个答案:

答案 0 :(得分:7)

您是否尝试过这个简单的版本:

<activity name="com.mycompany.MyActivity">
    <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/pdf" />
    </intent-filter>
</activity>

答案 1 :(得分:0)

你的pathPattern肯定是错误的,你用mimetype限制它太多了。

尝试以下方法:

<activity name="com.mycompany.MyActivity">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http" />
    <data android:host="*" />
    <data android:pathPattern=".*\\.pdf" />
  </intent-filter>
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http" />
    <data android:host="*" />
    <data android:mimeType="application/pdf" />
  </intent-filter>
  <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=".*\\.pdf" />
  </intent-filter>
</activity>

答案 2 :(得分:0)

要打开我要执行的本地和远程pdf文件:

           <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="application/pdf" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="file" android:host="*" android:pathPattern=".*\\.pdf" />
        </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="http" android:host="*" android:pathPattern=".*\\.pdf" />
            <data android:scheme="https" android:host="*" android:pathPattern=".*\\.pdf" />
        </intent-filter>