我有两个独立的项目,一个加号和免费版本。这两个项目都使用了大量的共享代码,因此我尝试将共享的所有内容集成到Android库项目中。
其中一个共享资源是我在FreeProject / assests / database.db中的数据库。这个文件在两个项目之间共享,我想把它移到LibraryProject / assets / database.db。
在代码中,我将数据库移动到数据库文件夹,其中包含以下内容:
String dbLocation = "/data/data/" + myContext.getPackageName() + "/databases/" + DBNAME;
//Reading the asset and writing it to the database folder.
InputStream myInput = myContext.getAssets().open("database.db");
OutputStream myOutput = new FileOutputStream(dbLocation);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
所以我的问题是,如何调用getAssets()来获取库项目的AssetManager?或者是否有其他方式可以/应该这样做?
答案 0 :(得分:2)
来自docs:
这些工具不支持使用原始资产文件(保存在 资源/目录)在库项目中。使用的任何资产资源 应用程序必须存储在的assets /目录中 应用项目本身。但是,资源文件保存在res /中 目录是受支持的。
您可以使用res / raw和openRawResource()吗?