我正在开发一个可以从某些网页中提取信息的应用。我们的想法是,当用户位于浏览器中的特定网址路径中并按下共享按钮时,我的应用将显示在接收方应用列表中。
我可以通过将其添加到清单中来轻松实现:
<intent-filter android:label="@string/app_name" >
<action android:name="android.intent.action.SEND" />
<data android:mimeType="text/plain" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
然而,这将使我的应用程序出现在所有网址的列表中,也是所有那些无关的地方。相反,我希望应用程序仅在这些网址中出现在选择器中:
www.example.com/foo/bla.html
www.example.com/foo/bar/blabla.html
但不是来自这些:
www.example.com
www.foobar.com
等。 IE浏览器。只能在某个主机上的某个路径内。另请注意,当用户点击符合条件的链接时,我不希望启动我的应用。它只应从共享菜单中调用。
所以我的问题是:如何限制我的应用只显示在某个网址的意图中?
答案 0 :(得分:4)
将以下过滤器添加到目标活动.. 1. 主持人您的网站名称。 2.您的网站http或https的计划计划。 3.应用程序应显示的文件路径的路径。
<intent-filter>
<data
android:host="www.example.com"
android:scheme="http"
android:path="/foo/bla.html"
/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" >
</category>
<category android:name="android.intent.category.BROWSABLE" >
</category>
</intent-filter>
答案 1 :(得分:3)
如何限制我的应用显示在意图中仅选择某些网址?
你不能。 ACTION_SEND
只有来自某些网址&#34;或者#34;只有来自某些WhatsApp用户&#34;或者#34;只有来自左撇子阿拉斯加管道焊工&#34; 34。
这与任何其他活动没有显着差异。 <intent-filter>
仅控制Intent
正在传递到的内容。除了与安全相关的项目(权限,是否导出组件等)之外,没有任何内容可以控制Intent
的传递内容。
因此,对于ACTION_VIEW
,网址是传递给另一项活动(&#34;我希望查看此网址&#34;)。这是有效的,因为该网址已转换为Uri
的{{1}},并且可以通过Intent
中的<data>
元素进行过滤。
但是<intent-filter>
不必拥有一个URL,即使有一个URL,它也只是一个额外的形式的有效载荷。它不是可以过滤的东西。
因此,不支持您想要的内容。
答案 2 :(得分:-1)
<intent-filter>
<data
android:host="www.example.com"
android:scheme="http"
android:pathPrefix="/foo/"
/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" >
</category>
<category android:name="android.intent.category.BROWSABLE" >
</category>
</intent-filter>