如果我为动作PICK指定mimeType,则VIEW Intent过滤器上缺少URL错误

时间:2018-09-25 21:22:07

标签: android android-intent intentfilter

我有一个应用程序,可以使用来自不同来源的意图过滤器查看不同类型的视频文件。为了在尝试打开任何视频文件时始终允许该应用程序出现,我已将此代码放置在清单中

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <action android:name="android.intent.action.PICK"/>
  <data android:mimeType="video/*" />
</intent-filter>

因此我可以在主要活动中通过处理Uri的应用接收Uri。

尽管一切似乎都按预期进行,但每次我尝试编辑清单时,Android Studio都用红色下划线标记所有意图过滤器代码,并报告错误missing url。 如果我删除了<data android:mimeType="video/*" />,错误消失了,但是如果我这样做,该应用程序不仅会显示为视频文件,而且还会显示为选择。

3 个答案:

答案 0 :(得分:1)

@AndreaF我有同样的问题。您可以禁止显示此警告。

要抑制,请尝试以下操作:

<intent-filter tools:ignore="AppLinkUrlError">
  <action android:name="android.intent.action.VIEW"/>
  <action android:name="android.intent.action.PICK"/>
  <data android:mimeType="video/*" />
</intent-filter>

将xmlns:tools =“ http://schemas.android.com/tools”添加到您的初始清单标签中。

答案 1 :(得分:1)

Google 的员工似乎更喜欢暗示而不是回答问题 deep-linking

正确指定架构很重要。对于旧版本的文件,它是“文件”,在较新版本的 Android 中,它是“内容”。对于链接,这些是 http 和 https。

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

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

答案 2 :(得分:0)

提示缺少网址的原因不是action.PICK,该错误与action.VIEW有关

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>  //delete this line
  <action android:name="android.intent.action.PICK"/>
  <category android:name="android.intent.category.DEFAULT"/>  //add this line
  <category android:name="android.intent.category.OPENABLE"/> //and this
  <data android:mimeType="video/*" />
</intent-filter>

对于action.VIEW,您可以定义一个不同的Intent过滤器。