2012-02-16 4 views
1

У меня есть приложение для Android, которое использует внешнюю банку, что имеет в дополнение к обычным классам html-файл.Чтение файлов внутри APK

Значение мой последний каталог APK корень выглядит примерно так

  • assests
  • Рез
  • AndroidManifest.xml
  • classes.dex
  • resources.arsc
  • HelloWorld.html

Как я могу получить доступ из своего приложения в последний файл «helloworld.html»?

+2

Вы можете сохранить HTML файл внутри активов, а затем вызвать «getAssets () "? – goodm

ответ

1

Иерархия пакетов Android не похожа на пакет приложений Java. Таким образом, вы не можете получить доступ к таким файлам.

Я думаю, вы должны использовать этот файл helloworld.html в вашем приложении.

Так поместить этот файл в каталоге /asset и в коде деятельности просто получить файл с помощью

getAssets().

также получить доступ к файлу, как: file:///android_asset/helloworld.html

+0

Это не то, что я хочу. Я даю разработчикам банку, и я хочу, чтобы они просто использовали банку, а не сказали им: «Кроме того, пожалуйста, поместите этот html-файл в свой каталог ресурсов» – Omer

+0

Мой ответ связан с вашим вопросом .. «Как я могу доступ из моего приложения в последний файл «helloworld.html»? » – user370305

+0

Извините, я не был ясен. Файл html НЕ находится в каталоге активов – Omer

0

Почему бы не сделать проект библиотеки вместо баночки?

0

Вы должны заменить строку «assets/SecureManifest.xml» с файлом «helloworld.html»

public static InputStream getInputStreamFromApkResource(String apkFilePath, String apkResPath) throws IOException { 
    JarFile jarFile = new JarFile(apkFilePath); 
    JarEntry jarEntry = jarFile.getJarEntry(apkResPath); 
    return jarFile.getInputStream(jarEntry); 
} 

// Example usage reading the file "SecureManifest.xml" under "assets" folder: 
File sdcard = Environment.getExternalStorageDirectory(); 
File apkFile = new File(sdcard, "file.apk"); 
if (apkFile.exists()) { 
    try { 
     InputStream is =getInputStreamFromApkResource(apkFile.toString(), "assets/SecureManifest.xml"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
     String str; 
     while ((str = br.readLine()) != null) { 
      Log.d("***", str); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Суть GitHub можно найти here

Смежные вопросы