zoukankan      html  css  js  c++  java
  • Android WebView的使用

    public class WebViewActivity extends Activity implements IWeibo
    {
        private WebView webView;
        private ProgressDialog progressDialog;
        private Handler handler;
        private static String url="http://api.t.sina.com.cn/oauth/authorize";
        
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);
            
            //获取微博授权的网络路径
            url=AuthUtil.getAuthorizationURL();
    
            if(url.equals("") || url==null)
            {
                Toast.makeText(this, "授权地址为空", Toast.LENGTH_SHORT).show();
                return;
            }
            //初始化
            init();
            //加载网络数据地址
            LoadURL(url, webView);
            handler=new Handler()
            {
                public void handleMessage(Message msg)
                {
                    if(msg.what==1)
                    {
                        progressDialog.dismiss();
                    }
                }
            };
        }
        
        @SuppressLint("SetJavaScriptEnabled")
        public void init()
        {
            
            if(progressDialog==null)
            {
                progressDialog=new ProgressDialog(this);
            }
            progressDialog.show();
            
            webView=(WebView) this.findViewById(R.id.WebViewOAuth);
            //开启javascript脚本
            webView.getSettings().setJavaScriptEnabled(true);
            //javascript接口用于读取授权码
            webView.addJavascriptInterface(new JavascriptInterface(), "Android");
            
            webView.setWebViewClient(new WebViewClient()
            {
                public boolean shouldOverrideUrlLoading(WebView view, String url)
                {
                    LoadURL(url, view);
                    return true;
                }
                
                //当页面加载完成以后获取该网页的源码文件中的授权码
                public void onPageFinished(final WebView view, String url)
                {
                    System.out.println("url >>>>>>>>>>>>>>>"+url);
                    if(url.equals("http://api.t.sina.com.cn/oauth/authorize"))
                    {
                        view.loadUrl("javascript:window.Android.getPIN('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
                        
                        Intent intent=new Intent(WebViewActivity.this,AccessTokenActivity.class);
                        startActivity(intent);
                        
                    }
                }
            });
            
            webView.setWebChromeClient(new WebChromeClient()
            {
                public void onProgressChanged(WebView view, int progress) 
                {
                    if(progress==100)
                    {
                        handler.sendEmptyMessage(1);
                    }
                    else
                    {
                        progressDialog.setMessage("已完成 "+progress+"%");
                    }
                }
            });
        }
        
        /**
         * 
         * @param url新浪微博授权地址
         * @param webview浏览器这里是WebView控件
         */
        public void LoadURL(final String url,final WebView webview)
        {
            new Thread()
            {
                public void run() 
                {
                    if(url.equals("") || url==null )
                    {
                        return;
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    webview.loadUrl(url);
                }
            }.start();
        }
  • 相关阅读:
    Eclipse解决Ctrl+c很卡的方法
    关于编程,大学没有传授的十件事-月光博客
    最牛B的编码套路
    (CareerCup)find the largest repetitive sequence
    (CareerCup)Find next higher number with same digits
    2013年HTML5峰会 一场守望者的盛宴
    Youzi2D推出开源HTML5游戏加速引擎
    HTML5与原生APP之争胜负已出?
    编程的未来
    拖拽即可创建HTML5网站的建站平台
  • 原文地址:https://www.cnblogs.com/tianshidechibang234/p/3282949.html
Copyright © 2011-2022 走看看