Android WebView err_unknown_url_scheme [英] Android WebView err_unknown_url_scheme
本文介绍了Android WebView err_unknown_url_scheme的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用下面的简单代码,我可以正确加载我的url,但是,当我尝试点击以 mailto开头的html链接时,我收到了ERR_UNKNOWN_URL_SCHEME: whatsapp: >和 tg:(电报)。
任何人都可以帮我解决这个问题吗?不幸的是我根本不知道Java:($ / b>
谢谢。
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit。 WebViewClient;
public class MainActivity extends Activity {
private WebView mWebView;
$ b $ @Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView =(WebView)findViewById(R.id.activity_main_webview);
//强制链接和重定向在WebView中而不是在浏览器中打开
mWebView.setWebViewClient(新的WebViewClient());
//启用Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
//使用远程资源
mWebView.loadUrl( http://myexample.com);
$ div $解析方案
你必须在webview中设置一个客户端并将它们传递给intent
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url){$ b $ if(URLUtil.isNetworkUrl(url)){
return false;
}
if( appInstalledOrNot(url)){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
} else {
//如果未安装应用程序,请执行操作
}
return true;
}
});
}
您可以有一个方法来检查应用程序是否已安装
private boolean appInstalledOrNot(String uri){
PackageManager pm = getPackageManager();
尝试{
pm.getPackageInfo(uri,PackageManager.GET_ACTIVITIES);
返回true;
catch(PackageManager.NameNotFoundException e){
}
return false;
}
With the simple below code I can get my url loaded correctly, but, I get "ERR_UNKNOWN_URL_SCHEME" when trying to tap on html links that starts with mailto: whatsapp: and tg: (Telegram).
Anyone can help me to fix this please? Unfortunately I do not know Java at all :(
Thanks.
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
// Force links and redirects to open in the WebView instead of in a browser
mWebView.setWebViewClient(new WebViewClient());
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Use remote resource
mWebView.loadUrl("http://myexample.com");
}
}
解决方案
You have to set a client in the webview and pass these to an intent
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if( URLUtil.isNetworkUrl(url) ) {
return false;
}
if (appInstalledOrNot(url)) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity( intent );
} else {
// do something if app is not installed
}
return true;
}
});
}
You can have a method to check if app is installed
private boolean appInstalledOrNot(String uri) {
PackageManager pm = getPackageManager();
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
}
return false;
}
这篇关于Android WebView err_unknown_url_scheme的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文