首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在安卓app的WebView中开启深度链接?

如何在安卓app的WebView中开启深度链接?
EN

Stack Overflow用户
提问于 2014-09-05 02:11:44
回答 2查看 27K关注 0票数 24

我正在尝试在android应用程序中实现深度链接。

当我在Chrome等Android浏览器上点击自定义url (xxxx://repost?id=12)的深度链接时,我的应用程序打开并运行良好。

问题是,在应用程序中,有一个webView小部件,我也想在那里做深度链接工作。

目前,它显示的是Can't connect to the server错误。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-22 18:32:47

这就是android网页视图的问题所在,因为它将所有内容都视为URL,但其他浏览器,如手机上的chrome浏览器会拦截该方案,操作系统将执行其余操作以打开相应的应用程序。要实现这一点,您需要修改您的web视图shouldOverrideUrlLoading函数,如下所示:

代码语言:javascript
运行
复制
 @Override
 public boolean shouldOverrideUrlLoading(WebView view, String url) {
        LogUtils.info(TAG, "shouldOverrideUrlLoading: " + url);
        Intent intent;

        if (url.contains(AppConstants.DEEP_LINK_PREFIX)) {
            intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            startActivity(intent);

            return true;
        } 
 }

在上面的代码中,用你的url方案替换AppConstants.DEEP_LINK_PREFIX。

android-app://您的软件包

希望这能有所帮助!!

票数 41
EN

Stack Overflow用户

发布于 2018-02-09 17:57:21

@pranav的答案是完美的,但如果没有应用程序来处理意图,可能会导致崩溃。@georgianbenetatos的解决方案有助于防止这种情况

代码语言:javascript
运行
复制
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
if (intent.resolveActivity(getPackageManager()) != null) {
   startActivity(intent);
} else {
   Toast.makeText(this, R.string.no_apps_to_handle_intent, Toast.LENGTH_SHORT).show();
} 
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25672330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档