从.apk中提取文件?

时间:2011-10-04 09:23:31

标签: java android

在我的Android应用程序中,我正在使用一个自己的java库,从jar中提取.db - 文件。在Java桌面中它运行良好,但是当我尝试在android上执行它时,输入流将永久阻止。复制方法如下所示:

InputStream in = classloader.getResourceAsStream(...);
OutputStream out = new FileOutputStream(new File(...));
try {
  while ((read = in.read()) != -1) {
    out.write(read);
  }
} finally {
  try {
    in.close();
  } catch (final Exception e) {
    LOGGER.debug("Error", e);
  }

  try {
    out.close();
  } catch (final Exception e) {
    LOGGER.debug("Error", e);
  }
}

我想将此文件复制到外部文件dir并授予android.permission.WRITE_EXTERNAL_STORAGE

有没有办法在/data/app/...apk中访问该文件?如果没有,如何在没有永久阻止的情况下检测到它无法访问?

3 个答案:

答案 0 :(得分:2)

您应该将数据库文件放在/assets - 文件夹中,并在首次运行时将其复制到/databases - 文件夹。可以找到关于此的教程here

但是,如果您只想创建表格和一些样本条目,则可能需要使用onCreate()中的SQLiteOpenHelper - 方法来执行此操作。

答案 1 :(得分:0)

也许您应该将数据存储在原始文件夹中,然后访问它:)

http://developer.android.com/guide/topics/resources/index.html

答案 2 :(得分:0)

回答这个问题:我们只能从apk中提取类文件,我们不会得到layout / xml文件或任何其他文件。

我们可以通过多种方式从apk中提取类文件。