Android WebView err_unknown_url_scheme [英] Android WebView err_unknown_url_scheme

查看:1784
本文介绍了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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆