Android用webView包装WebAPP方法

时间:2021-05-19

前言 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:///Grewer/android-casing-webapp

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章