TL; DR我可以在一个intent-filter中使用两个动作和两个类别吗?
我的应用由一个活动和五个片段组成。我在这个活动中有一个Intent过滤器。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
今天,我在清单文件中的application
标记周围看到一条lint消息“App无法通过Google编制索引”。所以,我做了一些搜索,并且知道你可以用它来通过谷歌搜索索引你的应用程序。如果Android用户从chrome / systemBrowser浏览Web链接“www.example.com/myapp”,他将被带到我的应用程序而不是网页。正确?
现在,我必须向活动添加一个ActionView。而且,我的意图过滤器将成为,
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="www.example.com" android:pathPrefix="/myapp" />
</intent-filter>
但是,我已经读到使用两个动作并不好。这是一个逻辑OR操作。 Intent-Filter只匹配其中一个:
据我所知,它应该在第一个选项的设备上打开应用程序,当用户使用提供的“www.example.com/myapp”浏览浏览器时,它应该使用第一个和第四个选项从链接打开应用程序
我看过这个question,但我需要确定一个例子。
令人困惑。我可能完全错了,请指导我。
答案 0 :(得分:9)
在SO Chat的某人的帮助下,我被告知要使用单独的intent-filters
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="www.example.com" android:pathPrefix="/prefix" />
</intent-filter>
</activity>