在我的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
中访问该文件?如果没有,如何在没有永久阻止的情况下检测到它无法访问?
答案 0 :(得分:2)
您应该将数据库文件放在/assets
- 文件夹中,并在首次运行时将其复制到/databases
- 文件夹。可以找到关于此的教程here。
但是,如果您只想创建表格和一些样本条目,则可能需要使用onCreate()
中的SQLiteOpenHelper
- 方法来执行此操作。
答案 1 :(得分:0)
也许您应该将数据存储在原始文件夹中,然后访问它:)
http://developer.android.com/guide/topics/resources/index.html
答案 2 :(得分:0)
回答这个问题:我们只能从apk中提取类文件,我们不会得到layout / xml文件或任何其他文件。
我们可以通过多种方式从apk中提取类文件。