Android使用腾讯X5内核WebView

转自:http://www.jianshu.com/p/0c4cd08bd4cd

Android使用腾讯X5内核WebView

144 
作者  BRYANB 
2017.02.17 13:49  字数 166  阅读 1852 评论 5

版权声明:本文为博主原创文章,未经博主允许不得转载。

第一步:下载jar包添加到项目

需要去腾讯浏览服务官网下载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() {
    /**
     * 防止加载网页时调起系统浏览器
     */
    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();
}
}

代码十分简单,也很容易理解。在这个我加了个跳转类来实现访问其他网页,其实就是想测测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,"网址不能为空",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();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值