正确的 Android 意图过滤器配置以将文件类型与活动关联起来?

问题描述 投票:0回答:4

这个问题之前已被问过[无数次],但我还没有看到任何明确的答案,或实际有效的代码示例。

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

为了讨论,假设我希望我的活动与 PDF 关联。

这是我目前拥有的。我已经在意图过滤器中尝试了许多不同的值和值组合,但我还没有在选择 PDF 时启动我的 Activity。


    
        
        
        
        
        
        
        
    

有谁知道如何真正做到这一点?

android android-activity android-intent intentfilter
4个回答
9
投票

您尝试过那个简单的版本吗:

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

2
投票

你的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>

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>

0
投票

没有足够的信息来回答问题

© www.soinside.com 2019 - 2024. All rights reserved.