提问者:小点点

如何在Android应用程序的WebView中启用深度链接?


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

当我在像Chrome这样的Android浏览器上点击自定义url(xxxx:/repost?id=12)的深度链接时,我的应用程序就打开了,并且运行得非常好。

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

当前显示无法连接到服务器错误。

提前谢谢你。


共2个答案

匿名用户

这就是android web view的问题,因为它将所有内容都当作URL处理,但是其他浏览器,比如手机上的chrome,会截获该方案,而OS将做剩下的工作来打开相应的应用程序。 要实现这一点,您需要修改web视图shouldOverrideUrlLoading函数,如下所示:

 @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://你的软件包

希望这有帮助!!

匿名用户

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

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();
}