在Browsable活动中查找意图发件人的URL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Browsable活动中查找意图发件人的URL相关的知识,希望对你有一定的参考价值。

我在我的一个活动intent-filter中处理了一个特定的URL方案。我的用户可以将他们的URL放在互联网上的任何网页上,而在浏览器中浏览他们的其他用户可以点击它们,我的应用就开始工作了。这工作完美。

现在我的问题是我想在我的活动中找到该用户来自的URL。

例如,用户将他的链接放在一个名为A.com的网站上,另一个正在浏览A.com的用户点击此链接,以便它来到我的应用程序。如何在我的活动中获得A.com地址?可能吗?

场景更多信息: 例如,我在一个我的活动意图中处理这种链接 - 过滤数据:hisapp:// host / path用户将其放在web中,例如一个网站:example.com,另一个用户点击它并来到我的网站应用程序。我想从意图中得到example.com。

答案

我想从浏览器获取用户来自我的应用程序的URL

我对此的解释是:

  • 你有一个网页(例如,https://hamidreza.com/somepage
  • 在该网页上,您有一个自定义方案的链接(例如,hamidreza://something
  • 在某些设备上,您有一个带有<activity>的应用程序,其中包含<intent-filter>,该广告支持该自定义方案
  • 当用户从他们设备上的浏览器访问该网页时,他们点击该链接开始您的活动......您希望能够发现这一切都始于https://hamidreza.com/somepage

欢迎您查看发送到您活动的Intent上的附加内容(通过getIntent()),并查看引用URL是否在某处。也许对于少数浏览器来说,它是。我希望对于大多数浏览器而言,它不是。对于那些,您无法知道包含启动您的活动的URL的URL。

正如Selvin在评论中指出的那样,欢迎您在自定义网址中嵌入这类信息(例如,hamidreza://something?referer=https://hamidreza.com/somepage)。然后,您可以从传递给您的活动的Uri上的查询参数中获取该信息。

另一答案

现在我的问题是我想在我的活动中找到该用户来自的URL。

Url将作为意图中的数据传递给您的活动。使用getQueryParameter从Uri获取参数,或者您可以从段中获取参数。

在onCreate

 if (getIntent().getData() != null) {
        Uri uri = getIntent().getData();// this is the url
        List<String> segments = uri.getPathSegments();// this is the url segments 
    }

在onNewIntent中

 @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (intent.getData() != null) {
        Uri uri = intent.getData();
        List<String> segments = uri.getPathSegments();
    }
}

以上是关于在Browsable活动中查找意图发件人的URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 12 的意图中包含电子邮件收件人信息?

如何正确实现电子邮件意图

使用 Action.SEND 从另一个应用程序接收到隐式意图时显示错误的活动

Web 浏览器应用程序 - 如何拦截 URL 意图?

想要在 webview android 中完成 url 加载后将 webview 重定向到其他意图

使用自定义类启动浏览器意图 - 找不到活动