Android用用webView包装包装WebAPP方法方法
本篇文章通过流程讲解给大家详细介绍了Android用webView包装WebAPP的方法以及需要注意的地方,需要的
朋友参考学习下。
前言 Android webView 兼容体验真的差到了极点!!
前一阵子,老板要将 WebAPP 放到 Android 和 iOS 里面,而我因为以前做过安卓,所以这方面就由我来打包,原理是很简单的,就是
打开 APP 的时候用 webView 加载网站的网址,这样服务器一次更新,就能更新微信版, iOS 版和 Android 版;
首先我要说一句,如果你的 WebAPP 里面有文件上传,并且想要完全兼容,那么就别用原生的 WebAPP, 后面我会写一个关于
crossWalk 的博客,不过在此之前,我先记录下我所经历的一些坑,我的工具使用的是 Android studio;
创建一个项目,这个我就不说了,网上很多教程;
首先在 app/src/main/AndroidManifest.xml 里添加权限:
注意本文代码中的"..."都代表省略的代码
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
...
</application>
</manifest>
第一个是允许访问网络连接;
第二个是允许程序写入外部存储,如SD卡上写文件;
第三个是允许应用程序从外部存储读取;
再是 app/src/main/res/layout/activity_main.xml 添加:
<WebView
android:id="@+id/local_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
MainActivety.java:
private WebView webview;
//...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
webview = findViewById(R.id.local_webview);
WebSettings settings = webview.getSettings();
loading = findViewById(R.id.loadView);
settings.setJavaScriptEnabled(true);//必须
settings.setCacheMode(WebSettings.LOAD_DEFAULT);//关闭webview中缓存
settings.setRenderPriority(WebSettings.RenderPriority.HIGH);//提高渲染的优先级
settings.setUseWideViewPort(true);//WebView是否支持HTML的“viewport”标签或者使用wide viewport。
settings.setAllowContentAccess(true);//是否允许在WebView中访问内容URL
settings.setBuiltInZoomControls(true);//是否使用其内置的变焦机制
settings.setJavaScriptCanOpenWindowsAutomatically(true);//是否允许自动打开弹窗
settings.setDomStorageEnabled(true);//是否开启DOM存储API权限
webview.loadUrl("http://www.baidu.com");
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
Log.d("加载", "on page progress changed and progress is " + newProgress);
//...
}
评论0
最新资源