package com.example.plugindemo.activity; import android.app.Activity; import android.content.ComponentName; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebSettings.PluginState; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.Toast; import com.example.plugindemo.R; import com.tencent.tws.framework.HostProxy; @SuppressWarnings("ALL") public class PluginWebViewActivity extends Activity implements OnClickListener { WebView web; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.plugin_webview); Button bn = (Button) findViewById(R.id.load); bn.setOnClickListener(this); web = (WebView) findViewById(R.id.webview); setUpWebViewSetting(); setClient(); // ILoginService login = (ILoginService) // getSystemService("login_service"); // if (login != null) { // LoginVO vo = login.login("admin", "123456"); // Toast.makeText(this, vo.getUsername() + ":" + vo.getPassword(), // Toast.LENGTH_SHORT).show(); // } else { // Toast.makeText(this, "ILoginService == null", // Toast.LENGTH_SHORT).show(); // } try { String currentPackageName = getPackageManager().getActivityInfo( new ComponentName(this.getPackageName(), this.getClass().getName()), 0).packageName; Toast.makeText(this, "测试PackageManager查询插件信息" + currentPackageName, Toast.LENGTH_SHORT).show(); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } // 插件在加载本地页面之前需要将WebView里面进程唯一的上下文改成自己的,否则是加载不了本地页面的 { HostProxy.switchWebViewContext(this); } web.loadUrl("file:///android_asset/local_web_test.html"); } @Override public void onClick(View v) { if (v.getId() == R.id.load) { web.loadUrl("http://www.baidu.com/"); } } private void setUpWebViewSetting() { WebSettings webSettings = web.getSettings(); webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);// 根据cache-control决定是否从网络上取数据 webSettings.setSupportZoom(true); webSettings.setBuiltInZoomControls(true);// 显示放大缩小 webSettings.setJavaScriptEnabled(true); // webSettings.setPluginsEnabled(true); webSettings.setPluginState(PluginState.ON); webSettings.setUserAgentString(webSettings.getUserAgentString()); webSettings.setDomStorageEnabled(true); webSettings.setAppCacheEnabled(true); webSettings.setAppCachePath(getCacheDir().getPath()); webSettings.setUseWideViewPort(true);// 影响默认满屏和双击缩放 webSettings.setLoadWithOverviewMode(true);// 影响默认满屏和手势缩放 } private void setClient() { web.setWebChromeClient(new WebChromeClient() { }); // 如果要自动唤起自定义的scheme,不能设置WebViewClient, // 否则,需要在shouldOverrideUrlLoading中自行处理自定义scheme // webView.setWebViewClient(); web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); } }