是否有可能在没有Wifi的情况下运行.apk文件?

问题描述:

我刚刚使用this来创建我的网站的.apk文件。有没有可能在没有访问数据连接或WiFi的情况下运行这个文件?但同样,在Wifi或数据打开时,网站应该会更新。任何人都可以帮助我?是否有可能在没有Wifi的情况下运行.apk文件?

+0

'这个文件可能在没有访问数据连接或WiFi的情况下运行?'显然不是。它似乎只提供一个应用程序**只是一个WebView指向您的网站**(可能你会得到一个预先安装的apk加载你的文件链接)。这显然是**全部**。另外,我想它会在您的“应用程序”中添加一些** AdMob **(这将解释为什么他们会提供此服务)。 – 2014-10-06 09:42:29

+1

同意@ FrankN.Stein - 它似乎只是创建所谓的“网络应用程序”,而不是原生的Android应用程序。除非它生成的代码允许没有网络连接的条件(并随后加载网页的缓存副本),否则它将不起作用。我建议你问作者在web2apk.com – Squonk 2014-10-06 10:10:08

+0

有没有一种方法来制作本机android应用程序?我是新来的,所以它需要任何程序,或者你必须像网站一样自己编写代码? – 2014-10-06 10:16:24

首先将您网站的文件存储在资产文件夹

现在,每次打开应用程序时,请检查网站文件是否存在,以防止应用程序崩溃。

下面给出的代码检查,如果它不存在,那么它会调用一个方法,将文件从资产复制到设备存储。

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"); 

要求不时地把他们的网络上更新的网站并防止使用它的过时副本。

+0

非常感谢你!我只是想知道,是否可能有一个工作示例,可以帮助我更好地理解此代码? – 2014-10-06 10:31:56

+0

'用户打开此应用程序时,检查文件是否存在于内部存储器中。如果是,则继续'...使用**过期的**网站副本。 – 2014-10-06 10:34:54

+0

@Neutrino我会很乐意和你一起在即将到来的网站上工作,也就是说,如果你想开发一款新的应用程序,将会有超过42K的浏览量。青少年到青少年;-) – 2014-10-06 10:41:50