如何才能让我的应用仅针对某些网址出现在意图选择器中?

mar*_*lar 11 android android-intent

我正在开发一个可以从某些网页中提取信息的应用程序.我们的想法是,当用户位于浏览器中的特定网址路径中并按下共享按钮时,我的应用将显示在接收方应用列表中.

通过将其添加到清单中,我可以轻松地做到这一点:

<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>
Run Code Online (Sandbox Code Playgroud)

但是,这将使我的应用程序出现在所有网址的列表中,也是所有那些无关的地方.相反,我希望应用程序只在这些网址中出现在选择器中:

www.example.com/foo/bla.html

www.example.com/foo/bar/blabla.html

但不是从这些:

www.example.com

www.foobar.com

等等.只能在某个主机上的某个路径内.另请注意,当用户点击符合条件的链接时,我不希望启动我的应用.它只应从共享菜单中调用.

所以我的问题是:如何限制我的应用程序出现在意图中仅选择某些网址?

Dha*_*mar 4

将以下过滤器添加到目标 Activity .. 1.托管您的站点名称。2.您网站http或https的scheme方案。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>
Run Code Online (Sandbox Code Playgroud)