如何在webview里实现唤起QQ

qq_31919421 2017-09-06 12:22:11
用webview浏览网页时我发现不可以打开QQ临时会话网页,其他浏览器打开可以唤起QQ,但我的工程显示这样,如图。
...全文
694 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31919421 2017-09-06
  • 打赏
  • 举报
回复
怎么修改代码才能支持直接唤起QQ
qq_31919421 2017-09-06
  • 打赏
  • 举报
回复
package com.genwoxue.webview; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebResourceResponse; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; /** * 实现加在一个WebView 为WebView加载时添加一个类型微信的进度条 * @author Administrator * */ @SuppressLint("SetJavaScriptEnabled") public class MainActivity extends Activity{ private WebView webView; private ProgressBar progressBar; private String urlString = "http://xiaoquan.xiaopg6.top"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { // TODO Auto-generated method stub webView = (WebView)findViewById(R.id.webview); progressBar = (ProgressBar)findViewById(R.id.pergress); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true); webSettings.setDefaultTextEncodingName("utf-8"); // 让网页适配屏幕 webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//关闭WebView中缓存 webView.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO Auto-generated method stub super.onPageStarted(view, url, favicon); System.out.println("Page开始 " + url + " " + favicon); } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); System.out.println("Page结束 " +url); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub //return super.shouldOverrideUrlLoading(view, url); view.loadUrl(url); return true; } }); webView.setWebChromeClient(new WebChromeClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (url.startsWith("http") || url.startsWith("https")) { return super.shouldInterceptRequest(view, url); } else { Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(in); return null; } } }); webView.loadUrl(urlString); } //设置返回键动作(防止按返回键直接退出程序) @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO 自动生成的方法存根 if(keyCode==KeyEvent.KEYCODE_BACK) { if(webView.canGoBack()) {//当webview不是处于第一页面时,返回上一个页面 webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webView.goBack(); return true; } } return false; } }
jklwan 2017-09-06
  • 打赏
  • 举报
回复
在shouldOverrideUrlLoading中处理。

public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (URLUtil.isNetworkUrl(url)){
                view.loadUrl(url);
                return true;
            } else {
                try {
                    startActivity(Intent.parseUri(url, Intent.URI_INTENT_SCHEME));
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                return true;
            }
        }

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧