我想在我的应用中使用“预加载”数据库。关于这一点有很多问题,大多数都指向这篇博客文章here或类似的。
到目前为止一切顺利。我只是想知道是否有更好的方法来获取默认数据库目录,所以你不必使用这样的东西:
private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/";
我的意思是,未来可能会改变,或者设备或ROM可能会将其放在其他地方......那么有没有办法以编程方式获取此路径?
在Context中存在getDatabasePath(name)的方法,但是你需要给它一个现有的db名称,而且它还不存在,我想把它移到那里:P
答案 0 :(得分:9)
我用过......
String destPath = getFilesDir().getPath();
destPath = destPath.substring(0, destPath.lastIndexOf("/")) + "/databases";
答案 1 :(得分:8)
创建一个空数据库,获取getDatabasePath()
的路径,然后用自己的数据覆盖它。
答案 2 :(得分:8)
由SQLiteAssetHelper使用:
String path = mContext.getDatabasePath(mName).getPath();
此时,数据库不存在。我认为String只占用内部路径并添加适当的修饰符。事实上,这似乎工作得很好:
context.getDatabasePath("a").getParentFile()
基本上,您不需要创建真正的数据库,只需要求它。
答案 3 :(得分:6)
您可以使用活动类中的方法getFilesDir()
或getDatabasePath
来获取此文件夹。
更多信息here
答案 4 :(得分:1)
您可以在Helper类中使用getDatabasePath方法:
NetAddr::CIDR.create('0000000000000000FFFF00000B79290A'.scan(/.{4}/).join(':'))
=> #<NetAddr::CIDRv6:0x007fd4971c34f0 @ip=18446462598925330698, @version=6, @address_len=128, @all_f=340282366920938463463374607431768211455, @netmask=340282366920938463463374607431768211455, @network=18446462598925330698, @hostmask=0, @tag={}, @wildcard_mask=340282366920938463463374607431768211455>