是否有可能在没有Wifi的情况下运行.apk文件?
我刚刚使用this来创建我的网站的.apk文件。有没有可能在没有访问数据连接或WiFi的情况下运行这个文件?但同样,在Wifi或数据打开时,网站应该会更新。任何人都可以帮助我?是否有可能在没有Wifi的情况下运行.apk文件?
首先将您网站的文件存储在资产文件夹。
现在,每次打开应用程序时,请检查网站文件是否存在,以防止应用程序崩溃。
下面给出的代码检查,如果它不存在,那么它会调用一个方法,将文件从资产复制到设备存储。
File file = new File(YOUR FILE PATH);
if(!file.exists()){
//Doesn't exist. Create it in sdcard
copyAssets();
}
下面是从资产的网站文件复制到设备存储(把它们放在你的类)的方法 -
private void copyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", "Failed to get asset file list.", e);
}
for(String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
File outFile = new File(DIRECTORY, filename);
out = new FileOutputStream(outFile);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(IOException e) {
Log.e("tag", "Failed to copy asset file: " + filename, e);
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
然后检查用户的互联网连接(在onCreate方法) -
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
//user is connected to internet
//put the code given ahead over here
}
权限 -
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
现在,如果用户连接到互联网,访问互联网,让你的网站的新的源代码是这样(把这个代码在互联网上查看上面给出的代码) - 一旦你的源代码
URL url = new URL(YOUR URL);
URLConnection yc = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream(), "UTF-8"));
String inputLine;
StringBuilder a = new StringBuilder();
while ((inputLine = in.readLine()) != null)
a.append(inputLine);
in.close();
String source = a.toString();
现在,像这样在设备存储器中更新你的HTML文件 -
File gpxfile = new File(File address, "filename.html");
BufferedWriter bW;
try {
bW = new BufferedWriter(new FileWriter(gpxfile));
bW.write(source); //our new source code
bW.newLine();
bW.flush();
bW.close();
} catch (IOException e) {
e.printStackTrace();
}
你完成了!现在,从这样的存储加载文件到web视图(在onCreate方法毕竟我们以前写的代码) - 建议发送用户
index.loadUrl("file://"+Environment.getExternalStorageDirectory()+ "Your address in storage");
要求不时地把他们的网络上更新的网站并防止使用它的过时副本。
非常感谢你!我只是想知道,是否可能有一个工作示例,可以帮助我更好地理解此代码? – 2014-10-06 10:31:56
'用户打开此应用程序时,检查文件是否存在于内部存储器中。如果是,则继续'...使用**过期的**网站副本。 – 2014-10-06 10:34:54
@Neutrino我会很乐意和你一起在即将到来的网站上工作,也就是说,如果你想开发一款新的应用程序,将会有超过42K的浏览量。青少年到青少年;-) – 2014-10-06 10:41:50
'这个文件可能在没有访问数据连接或WiFi的情况下运行?'显然不是。它似乎只提供一个应用程序**只是一个WebView指向您的网站**(可能你会得到一个预先安装的apk加载你的文件链接)。这显然是**全部**。另外,我想它会在您的“应用程序”中添加一些** AdMob **(这将解释为什么他们会提供此服务)。 – 2014-10-06 09:42:29
同意@ FrankN.Stein - 它似乎只是创建所谓的“网络应用程序”,而不是原生的Android应用程序。除非它生成的代码允许没有网络连接的条件(并随后加载网页的缓存副本),否则它将不起作用。我建议你问作者在web2apk.com – Squonk 2014-10-06 10:10:08
有没有一种方法来制作本机android应用程序?我是新来的,所以它需要任何程序,或者你必须像网站一样自己编写代码? – 2014-10-06 10:16:24