【问题标题】:Correct Android intent-filter configuration to associate a file type with an Activity?正确的 Android 意图过滤器配置以将文件类型与 Activity 关联?
【发布时间】:2011-05-08 03:14:31
【问题描述】:

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

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

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

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

活动>

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

【问题讨论】:

    标签: android android-activity android-intent intentfilter


    【解决方案1】:

    你试过那个简单的版本吗:

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

      【讨论】:

      • 我认为host="*" 可以省略,但它开始太宽泛了。
      【解决方案3】:

      要打开本地和远程 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>
      

      【讨论】:

        猜你喜欢
        • 2019-12-15
        • 2011-04-15
        • 2016-07-09
        • 1970-01-01
        • 2022-12-08
        • 1970-01-01
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        相关资源
        最近更新 更多