Android使用騰訊X5內核WebView

版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉載。

第一步:下載jar包添加到項目

需要去騰訊瀏覽服務官網(wǎng)下載X5內核jar包

第二步:添加權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
<uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

第三步:直接使用

很多文章中說要用到application,其實不用也是可以的。在application中做設置只是增加了預先加載的功能。
MainActivity.java:
public class MainActivity extends Activity {

private X5WebView mWebView;

private String mUrl = "http://www.baidu.com/";

private RelativeLayout rlMore;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rlMore = (RelativeLayout) this.findViewById(R.id.rl_more);
    rlMore.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v)
        {
            Intent intent = new Intent(MainActivity.this,UrlSetActivity.class);
            MainActivity.this.startActivityForResult(intent,1);
            return false;
        }
    });

    rlMore.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            loadWebUrl();
        }
    });

    mWebView = (X5WebView) this.findViewById(R.id.awwt_webview);
    mWebView.setWebViewClient(client);

}


private void loadWebUrl() {
    if(null != mUrl && mUrl.length() > 0)
    {
        mWebView.loadUrl(mUrl);
    }

}

@Override
protected void onResume()
{
    super.onResume();
    String preferUrl = SharePreferUtils.getSharePreferValue(this,"WEB_URL", "main_page");
    if(null != preferUrl && preferUrl.length() > 0)
    {
        mUrl = preferUrl;
    }
    mWebView.loadUrl(mUrl);
}

private WebViewClient client = new WebViewClient() {
    /**
     * 防止加載網(wǎng)頁時調起系統(tǒng)瀏覽器
     */
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        view.loadUrl(url);
        return true;
    }

    public void onReceivedHttpAuthRequest(WebView webview,
                                          com.tencent.smtt.export.external.interfaces.HttpAuthHandler httpAuthHandlerhost, String host,
                                          String realm) {
        boolean flag = httpAuthHandlerhost.useHttpAuthUsernamePassword();
    }

    @Override
    public void onPageFinished(WebView webView, String s)
    {
        super.onPageFinished(webView, s);
    }

    @Override
    public void onReceivedError(WebView webView, int i, String s, String s1)
    {
        System.out.println("***********onReceivedError ************" );
        super.onReceivedError(webView, i, s, s1);
    }

    @Override
    public void onReceivedHttpError(WebView webView, WebResourceRequest webResourceRequest, WebResourceResponse webResourceResponse) {
        System.out.println("***********onReceivedHttpError ************" );
        super.onReceivedHttpError(webView, webResourceRequest, webResourceResponse);
    }
};


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(resultCode == RESULT_OK)
    {
        if(null != data)
        {
           String tUrl = data.getStringExtra("WEB_URL");
            if(null != tUrl && tUrl.length() > 0)
            {
                mUrl = tUrl;
                mWebView.loadUrl(mUrl);
                SharePreferUtils.setSharePreferValue(this,"WEB_URL", "main_page",mUrl);
            }
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

@Override
protected void onDestroy()
{
    if (mWebView != null)
    {
        mWebView.destroy();
    }
    super.onDestroy();
}
}

代碼十分簡單,也很容易理解。在這個我加了個跳轉類來實現(xiàn)訪問其他網(wǎng)頁,其實就是想測測X5的性能

 public class UrlSetActivity extends Activity {
private ImageView ivBack;
private EditText edContent;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_url_set);
    edContent = (EditText) this.findViewById(R.id.ampf_et_content);
    findViewById(R.id.rl_more).setVisibility(View.GONE);
    ivBack = (ImageView) this.findViewById(R.id.iv_back);
    ivBack.setVisibility(View.VISIBLE);
    ivBack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            doBack();
        }
    });

    findViewById(R.id.ampf_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(edContent.getText().toString().length() > 0) {
                Intent intent = UrlSetActivity.this.getIntent();
                intent.putExtra("WEB_URL",edContent.getText().toString());
                UrlSetActivity.this.setResult(RESULT_OK, intent);
                UrlSetActivity.this.finish();
            }else{
                Toast.makeText(UrlSetActivity.this,"網(wǎng)址不能為空",Toast.LENGTH_SHORT).show();
            }
        }
    });

}


@Override
public void onBackPressed()
{
    doBack();
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
    {
        doBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

protected void doBack()
{
    UrlSetActivity.this.setResult(RESULT_OK, null);
    finish();
}
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容