Java 读取APK中的文件
我有一个android应用程序,它使用一个外部jar 除了常规类之外,还有一个html文件 这意味着我的最终apk根目录如下所示Java 读取APK中的文件,java,android,Java,Android,我有一个android应用程序,它使用一个外部jar 除了常规类之外,还有一个html文件 这意味着我的最终apk根目录如下所示 断言 res AndroidManifest.xml 类.dex 资源中心 helloworld.html 如何从应用程序访问最后一个文件 “helloworld.html”?Android包层次结构与java应用程序包不同。 所以你不能访问这样的文件 我认为您必须在应用程序中使用这个helloworld.html文件 所以,把这个文件放在/asset目录中,然后
- 断言
- res
- AndroidManifest.xml
- 类.dex
- 资源中心
- helloworld.html
“helloworld.html”?Android包层次结构与java应用程序包不同。 所以你不能访问这样的文件 我认为您必须在应用程序中使用这个helloworld.html文件 所以,把这个文件放在
/asset
目录中,然后在您的活动代码中使用
getAssets()
还可以访问文件,如:
file:///android_asset/helloworld.html
Android包层次结构与java应用程序包不同。
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();
}
}
所以你不能访问这样的文件
我认为您必须在应用程序中使用这个helloworld.html文件
所以,把这个文件放在/asset
目录中,然后在您的活动代码中使用
getAssets()
还可以访问文件,如:
file:///android_asset/helloworld.html
为什么不制作一个库项目而不是一个jar 为什么不制作一个库项目而不是一个jar 您必须用文件“helloworld.html
”替换字符串“assets/SecureManifest.xml
”
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 gist您必须将字符串“
assets/SecureManifest.xml
”替换为您的文件“helloworld.html
”
可以找到github gist您可以在资产中保存html文件,然后调用“getAssets()”?您可以在资产中保存html文件,然后调用“getAssets()”?这不是我想要的。我给开发人员一个jar,我希望他们只是使用jar,而不是告诉他们——“另外,请把这个html文件放在您的资产目录中”我的答案与您的问题相关。。“如何从应用程序访问最后一个文件“helloworld.html”?“对不起,我不清楚。html文件不在资产目录中。您希望实现什么?我正在为其他android开发者开发一个SDK。sdk的一部分是一些静态html文件。我希望开发人员具有最小的集成度,这意味着只需将我的jar添加到他们的类路径中。除了jar文件之外,我还可以向他们发送一组html文件,并告诉他们将它们放在资产目录中。但我想避免这种情况,但仍然能够访问那些html文件。这不是我想要的。我给开发人员一个jar,我希望他们只是使用jar,而不是告诉他们——“另外,请把这个html文件放在您的资产目录中”我的答案与您的问题相关。。“如何从应用程序访问最后一个文件“helloworld.html”?“对不起,我不清楚。html文件不在资产目录中。您希望实现什么?我正在为其他android开发者开发一个SDK。sdk的一部分是一些静态html文件。我希望开发人员具有最小的集成度,这意味着只需将我的jar添加到他们的类路径中。除了jar文件之外,我还可以向他们发送一组html文件,并告诉他们将它们放在资产目录中。但我想避免这种情况,但仍然能够访问这些html文件。