我有一个用Laravel(PHP + MYSQL)制作的“网络应用程序”,我使用Android应用程序打开它,它只是一个webview。
嗯,我需要网络完全没有互联网功能。当我第一次打开它时,我希望应用程序“下载”整个网络,之后我希望应用程序显示本地版本,直到我按下可能的按钮来搜索更新。
有什么形式可以做到吗?
提前致谢
答案 0 :(得分:1)
也许是这样的
WebView webView = new WebView( context );
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setJavaScriptEnabled( true );
webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
if ( !isNetworkAvailable() ) { // loading offline
webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
}
webView.loadUrl( "http://www.google.com" );
网络可用方法
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
然后将以下三个权限添加到AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
答案 1 :(得分:0)
我已经创建了一些基于webview的应用程序,并且您要求的内容是不可能的。至少不容易。即使您可以将整个网站打包/下载到静态文件中,您也会遇到很多链接/网址问题,以及加载的所有link
和script
文件另一个来源?除非网站使用100%相对网址,否则他们无法加载。而且你想要更新,所以这一切都需要动态纠正。
制作离线/移动友好版本会更容易。对于更新,您可以使用在Web服务器上运行的JSON订阅源或REST API。无论哪种方式,都没有简单的捷径可以满足您的需求。