2014-10-06 69 views
-1

我剛剛使用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

回答

1

首先將您網站的文件存儲在資產文件夾

現在,每次打開應用程序時,請檢查網站文件是否存在,以防止應用程序崩潰。

下面給出的代碼檢查,如果它不存在,那麼它會調用一個方法,將文件從資產複製到設備存儲。

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

相關問題