“将整个网络”下载到Android应用程序中

时间:2015-07-01 16:43:38

标签: php android mysql laravel

我有一个用Laravel(PHP + MYSQL)制作的“网络应用程序”,我使用Android应用程序打开它,它只是一个webview。

嗯,我需要网络完全没有互联网功能。当我第一次打开它时,我希望应用程序“下载”整个网络,之后我希望应用程序显示本地版本,直到我按下可能的按钮来搜索更新。

有什么形式可以做到吗?

提前致谢

2 个答案:

答案 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的应用程序,并且您要求的内容是不可能的。至少不容易。即使您可以将整个网站打包/下载到静态文件中,您也会遇到很多链接/网址问题,以及加载的所有linkscript文件另一个来源?除非网站使用100%相对网址,否则他们无法加载。而且你想要更新,所以这一切都需要动态纠正。

制作离线/移动友好版本会更容易。对于更新,您可以使用在Web服务器上运行的JSON订阅源或REST API。无论哪种方式,都没有简单的捷径可以满足您的需求。