我在我的一个活动intent-filter中处理特定的URL方案。 我的用户可以将他们的URL放在互联网上的任何网页上,而在浏览器中浏览他们的其他用户可以点击它们,我的应用就开始工作了。 这完美无缺。
现在我的问题是我想在我的活动中找到该用户来自的URL。
例如,用户将其链接放在名为A.com
的网站中,另一位正在浏览A.com
的用户点击此链接,以便进入我的应用。
如何在我的活动中获得A.com
地址?有可能吗?
情景了解更多信息:
例如,我在一个我的活动意图过滤数据中处理这种链接:
hisapp://主机/路径
用户将其放入网站,例如网站:example.com,另一位用户点击它并进入我的应用程序。
我想从意图中得到example.com。
答案 0 :(得分:1)
我想从浏览器
获取用户来自我的应用的网址
我对此的解释是:
https://hamidreza.com/somepage
)hamidreza://something
)<activity>
且<intent-filter>
的应用,该广告支持该自定义方案https://hamidreza.com/somepage
欢迎您查看发送到您活动的Intent
的附加内容(通过getIntent()
),并查看引用网址是否在某处。也许对于少数浏览器来说,它是。我希望对于大多数浏览器而言,它不是。对于那些,您无法知道包含启动您活动的URL的URL。
正如Selvin在评论中指出的那样,欢迎您在自定义网址中嵌入这类信息(例如hamidreza://something?referer=https://hamidreza.com/somepage
)。然后,您可以从Uri
发送到您的活动的查询参数中获取该参数。
答案 1 :(得分:0)
现在我的问题是我想在我的活动中找到该用户来自的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();
}
}
答案 2 :(得分:0)
调用getReferrer()
返回引用者URI,其中包含启动Intent的程序包名称。无法保证引荐来源网址总是会被了解!
不同引荐应用在2019年11月提供的URL值示例:
developer.android.com的重要警告:
如果在处理onNewIntent(Intent)时调用,则getReferrer()将返回向活动提交新意图的引用者。否则,它将始终返回原始Intent的引用者。
有关更多信息,请参见https://developer.android.com/reference/android/app/Activity.html#getReferrer()