如何从应用程序小部件访问 sqlite 数据库?
How to access sqlite database from app widget?
DBHelper 是创建数据库的数据库助手class。它有一个方法 getTimetable,returns 一个 Timetable 对象。当我在主要 activity 中使用它时它工作正常并且 returns 正确的时间表对象。我在创建 DBhelper 时将 (this) 作为上下文参数传入。但是,当我尝试在小部件 updateAppWidget 方法中 运行 它时,它使系统崩溃,我认为碰巧我没有传递与主 activity.
相同的上下文
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
String daysFull[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
DBHelper myDB = new DBHelper(context);
Timetable t = myDB.getTimetable();
//t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK],(new Date()).getHours()+":00")
TimeSlot ts = null;
String text = "";
System.out.print(t.toString());
if (t != null) {
int hourCount = (new Date()).getHours();
while (hourCount < 22) {
if (t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK], hourCount + ":00") != null) {
ts = t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK], (new Date()).getHours() + ":00");
break;
}
hourCount++;
}
System.out.println("hello hello hello");
if (ts != null) {
text = ts.getStartTime() + "\n" + ts.getModule() + "\n" + ts.getRoomNumber();
} else {
text = "No More Classes\nFor Today";
}
}
今天是星期天,所以我从 Calendar.DAY_OF_WEEK 中得到 7,所以当调用 daysFull[Calendar.DAY_OF_WEEK] 时,它指向不存在的变量并崩溃...
所以我改用了 daysFull[Calendar.DAY_OF_WEEK]-1...
AppWidget和你的应用有不同的context,你可以使用ContentProvider
http://developer.android.com/reference/android/content/ContentProvider.html
A content provider is only required if you need to share data between multiple applications
DBHelper 是创建数据库的数据库助手class。它有一个方法 getTimetable,returns 一个 Timetable 对象。当我在主要 activity 中使用它时它工作正常并且 returns 正确的时间表对象。我在创建 DBhelper 时将 (this) 作为上下文参数传入。但是,当我尝试在小部件 updateAppWidget 方法中 运行 它时,它使系统崩溃,我认为碰巧我没有传递与主 activity.
相同的上下文static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
String daysFull[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
DBHelper myDB = new DBHelper(context);
Timetable t = myDB.getTimetable();
//t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK],(new Date()).getHours()+":00")
TimeSlot ts = null;
String text = "";
System.out.print(t.toString());
if (t != null) {
int hourCount = (new Date()).getHours();
while (hourCount < 22) {
if (t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK], hourCount + ":00") != null) {
ts = t.getTimeSlot(daysFull[Calendar.DAY_OF_WEEK], (new Date()).getHours() + ":00");
break;
}
hourCount++;
}
System.out.println("hello hello hello");
if (ts != null) {
text = ts.getStartTime() + "\n" + ts.getModule() + "\n" + ts.getRoomNumber();
} else {
text = "No More Classes\nFor Today";
}
}
今天是星期天,所以我从 Calendar.DAY_OF_WEEK 中得到 7,所以当调用 daysFull[Calendar.DAY_OF_WEEK] 时,它指向不存在的变量并崩溃...
所以我改用了 daysFull[Calendar.DAY_OF_WEEK]-1...
AppWidget和你的应用有不同的context,你可以使用ContentProvider
http://developer.android.com/reference/android/content/ContentProvider.html
A content provider is only required if you need to share data between multiple applications