在我的 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);
}
}
我想将此文件复制到外部文件目录并授予 android.permission.WRITE_EXTERNAL_STORAGE
。
有没有办法访问 /data/app/...apk
中的文件?如果不是,我如何检测到它不能被永久阻塞访问?
最佳答案
您应该将数据库文件放在 /assets
文件夹中,并在首次运行时将其复制到 /databases
文件夹中。可以找到这方面的教程 here .
但是,如果您只想创建表格和一些示例条目,您可能需要使用 onCreate()
- 来自 SQLiteOpenHelper
的方法这样做。
关于java - 从 .apk 中提取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645751/