Android 手機app 嵌入網頁操作

來源:互聯網
上載者:User

標籤:android   style   blog   http   java   color   

1、主Activity的原始碼:

package com.jhtg.happyagent;import android.annotation.SuppressLint;import android.app.Activity;import android.graphics.Bitmap;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.Window;import android.webkit.CookieManager;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import com.jhtg.view.SendingProgressDialog;@SuppressLint("SetJavaScriptEnabled")public class HomeActivity extends Activity {        private WebView myWebView = null;    private SendingProgressDialog m_progressDialog;    /**     * 擷取WebView視圖,並設定WebViewClient用來在你的WebView中開啟連結     */    @SuppressWarnings("deprecation")    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE); // 不顯示是程式的標題列        setContentView(R.layout.home);                myWebView = (WebView) findViewById(R.id.homeView);                CookieManager.getInstance().removeAllCookie();        WebSettings webSettings = myWebView.getSettings();//獲得webSettings設定對象        //下面3行是WebView支援JS並能夠和JS代碼間進行互動的設定        webSettings.setJavaScriptEnabled(true);        webSettings.setSupportZoom(false);        webSettings.setBuiltInZoomControls(false);        webSettings.setPluginState(WebSettings.PluginState.ON);//這裡是支援flash的相關設定         myWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);        myWebView.getSettings().setSupportMultipleWindows(true);        MyWebViewClient mWebClient = new MyWebViewClient();        myWebView.setWebViewClient(mWebClient);//向WebView提供一個WebViewClient,這樣就可以在你的WebView中開啟連結了        /*myWebView.setWebChromeClient(new myChromeClient() {            public void onProgressChanged(WebView view, int progress) {                setProgress(progress * 100);            }        });*/        myWebView.loadUrl("http://www.taobao.com");        //myWebView.loadUrl("file:///android_asset/test.html");//包含本地檔案,在WebView中開啟    }        /*class myChromeClient extends WebChromeClient {        public void onReceivedTitle(WebView view, final String title) {            //隨時更新網頁的title        }    }*/        private class MyWebViewClient extends WebViewClient    {        @Override        public boolean shouldOverrideUrlLoading(WebView view, String url) {            if (url.indexOf("tel:") >= 0) {// 頁面上有數字會導致系統會自動連接電話,屏蔽此功能                return true;            }            view.loadUrl(url);            return true;        }        @Override        public void onPageFinished(WebView view, String url) {            super.onPageFinished(view, url);            if (m_progressDialog != null) {                m_progressDialog.stop();            }        }        @Override        public void onPageStarted(WebView view, String url, Bitmap favicon) {            super.onPageStarted(view, url, favicon);            try {                initSendingDialog("正在載入網頁,請稍後...");            } catch (Exception e) {                e.printStackTrace();            }        }    }        protected void initSendingDialog(String message) {        // TODO Auto-generated method stub        if (m_progressDialog == null) {            m_progressDialog = new SendingProgressDialog(this, message);        }        m_progressDialog.start();    }        /**     * 按鍵響應,在WebView中查看網頁時,按返回鍵的時候按瀏覽曆史退回,如果不做此項處理則整個WebView返回退出     */    @Override    public boolean onKeyDown(int keyCode, KeyEvent event)    {        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack())        {            // 返回鍵退回            myWebView.goBack();//返回上一個曆史網頁            return true;        }        return super.onKeyDown(keyCode, event);    }}

 

2、home.xml 的源碼如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <WebView        android:id="@+id/homeView"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>

3、SendingProgressDialog 自訂彈出框類的源碼如下:

 

package com.jhtg.view;import android.app.ProgressDialog;import android.content.Context;import android.view.KeyEvent;/** * @author sang * @version 建立時間:2014-7-10 上午9:25:00 類說明 */public class SendingProgressDialog {    public ProgressDialog dialog;    private final String message = "正在發送中,請稍候...";    public SendingProgressDialog(Context paramContext) {        this(paramContext, null);    }    public SendingProgressDialog(Context paramContext, String paramString) {        dialog = new ProgressDialog(paramContext){            @Override            public boolean onKeyDown(int keyCode, KeyEvent event) {                if(this.isShowing()){                    return false;                }                return super.onKeyDown(keyCode, event);            }                    };        this.dialog.setCancelable(true);        if (paramString == null) {            this.dialog.setMessage(message);        } else {            this.dialog.setMessage(paramString);        }    }    public void start() {        try {            this.dialog.show();        } catch (Exception e) {        }    }    public void stop() {        try {            if (this.dialog != null) {                this.dialog.dismiss();                this.dialog.cancel();            }        } catch (Exception e) {        }    }}

 

最後記得要在 AndroidManifest.xml 添加許可權 :

<uses-permission android:name="android.permission.INTERNET" />

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.