Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取APK中的文件_Java_Android - Fatal编程技术网

Java 读取APK中的文件

Java 读取APK中的文件,java,android,Java,Android,我有一个android应用程序,它使用一个外部jar 除了常规类之外,还有一个html文件 这意味着我的最终apk根目录如下所示 断言 res AndroidManifest.xml 类.dex 资源中心 helloworld.html 如何从应用程序访问最后一个文件 “helloworld.html”?Android包层次结构与java应用程序包不同。 所以你不能访问这样的文件 我认为您必须在应用程序中使用这个helloworld.html文件 所以,把这个文件放在/asset目录中,然后

我有一个android应用程序,它使用一个外部jar 除了常规类之外,还有一个html文件

这意味着我的最终apk根目录如下所示

  • 断言
  • 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文件。