我创造的Android定制的ContentProvider,我发现显示数据库名称的所有实例进行硬编码实例是这样的:变量的数据库名称的ContentProvider
public class ItemProvider extends ContentProvider {
private static String DATABASE_NAME = "xyz";
public static class ItemDatabaseHelper extends SQLiteOpenHelper {
ItemDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
我想要做的是使用一个变量运行时的数据库名称,我不想在类中硬编码数据库名称。我试图找到使用ContentProvider类执行此操作的示例,并查看了文档。我可以做到这一点,如果我流下ContentProvider类,只是使用SQLiteOpenHelper类,因为我可以将数据库名称作为参数传递给构造函数,但我无法弄清楚它是否可用于ContentProvider。这是我如何使用SQLiteOpenHelper数据库中获取的变量名:
public static class ItemDatabaseHelper extends SQLiteOpenHelper {
ItemDatabaseHelper(Context context, String dbname) {
super(context, dbname, null, DATABASE_VERSION);
}
谁能帮助我获得内容提供商的变量数据库名称?
谢谢。
感谢您的回复。你对ContentProvider实例化的方式是正确的,它的全部“自动”,这就是为什么我没有控制在SQLiteOpenHelper级别。我不认为你的第二个建议会起作用,因为我需要在设备上有多个相同结构的数据库,并且用户需要能够在运行时间之间进行切换,另外我不知道他们会提前调用什么。你的第一个建议听起来不错,我试图实现它,但是我的Java技能并不合格,你会怎么做? – stevekiwi