这是用NativeScript(Javascript)编写的,但它直接取自我在SO上找到的android解决方案,用于在android WebView中打开不同的url方案。
但是,我认为我找到的解决方案是打开例如fb://
,me://
tel://
等,而不是intent://
链接。
web.android.getSettings().setJavaScriptEnabled(true);
let webViewClient = android.webkit.WebViewClient.extend({
shouldOverrideUrlLoading : function(view, url){
if( url.getUrl().getScheme().indexOf('http') != -1 ){
return false;
}
// Otherwise allow the OS to handle things like tel, mailto, etc.
let intent = new android.content.Intent(android.content.Intent.ACTION_VIEW, android.net.Uri.parse(url.getUrl()));
application.android.currentContext.startActivity( intent );
return true;
}
})
web.android.setWebChromeClient(new android.webkit.WebChromeClient());
web.android.setWebViewClient(new webViewClient());
web.android.loadUrl("https://example.com");
我的应用程序侦听打开它的意图,并对提供给它的参数进行操作。当有人点击网站上的特定按钮时,通常会通过手机浏览器打开该应用。这是正常的。
但是,我在应用程序中有一个WebView导向该网站。当我第一次尝试点击此处的按钮时,出现以下错误net::ERR_UNKNOWN_URL_SCHEME
使用上述解决方案,应用程序突然停止工作,我得到一个问题,重新启动应用程序。
如果我更改以下行:
let intent = new android.content.Intent(android.content.Intent.ACTION_VIEW, android.net.Uri.parse(url.getUrl()));
为:
let intent = new android.content.Intent(android.content.Intent.ACTION_VIEW, url.getUrl());
我收到以下错误:No Activity found to handle Intent { act=android.intent.action.VIEW dat=intent://user/random launchParam=MultiScreenLaunchParams....}
有小费的人吗?谢谢。