我正在尝试在android应用中实现深度链接。
当我在像Chrome这样的Android浏览器上点击自定义url(xxxx:/repost?id=12)的深度链接时,我的应用程序就打开了,并且运行得非常好。
问题是,在应用程序中,有一个webView小部件,我想深度链接的工作也在那里。
当前显示无法连接到服务器
错误。
提前谢谢你。
这就是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();
}