我在课堂上打开我的数据库时遇到困难。我试图让我的应用程序在电话启动时启动,只有当数据库中的布尔值为true时,如果为false,它将不会在启动时启动应用程序。我有错误的底部在BroadcastReceiver中打开数据库的困难
public class My_BroadcastReceiver extends BroadcastReceiver {
SQLiteDatabase sqlDB;
private static String DBNAME2 = "database2.db";
private static String Table2 = "options";
Boolean isOk = true;
Context context;
@Override
public void onReceive(Context context, Intent intent) {
try {
sqlDB = SQLiteDatabase.openOrCreateDatabase(DBNAME2, null);
Cursor r = sqlDB.rawQuery("SELECT Apponstart FROM " + Table2, null);
System.out.println("COUNT of Location: " + r.getCount());
int loc = r.getColumnIndex("Apponstart");
int j = 0;
if (r.moveToFirst()) {
do {
System.out.println("Apponstart is " + r.getString(loc));
isOk = Boolean.parseBoolean(r.getString(loc));
j++;
} while (r.moveToNext());
if (j == 0) {
System.out.println("No data found");
}
}
r.close();
// sqlDB.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
sqlDB.close();
}
if(isOk){
Intent i = new Intent(context, JoshTwoActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
09-23 08:10:05.615: WARN/System.err(208): android.database.sqlite.SQLiteException: unable to open database file
09-23 08:10:05.625: WARN/System.err(208): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
09-23 08:10:05.625: WARN/System.err(208): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1812)
09-23 08:10:05.625: WARN/System.err(208): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
09-23 08:10:05.625: WARN/System.err(208): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
09-23 08:10:05.625: WARN/System.err(208): at three.three.My_BroadcastReceiver.onReceive(My_BroadcastReceiver.java:31)
09-23 08:10:05.625: WARN/System.err(208): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)
09-23 08:10:05.625: WARN/System.err(208): at android.app.ActivityThread.access$3200(ActivityThread.java:125)
09-23 08:10:05.625: WARN/System.err(208): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
09-23 08:10:05.625: WARN/System.err(208): at android.os.Handler.dispatchMessage(Handler.java:99)
09-23 08:10:05.625: WARN/System.err(208): at android.os.Looper.loop(Looper.java:123)
09-23 08:10:05.625: WARN/System.err(208): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-23 08:10:05.625: WARN/System.err(208): at java.lang.reflect.Method.invokeNative(Native Method)
09-23 08:10:05.625: WARN/System.err(208): at java.lang.reflect.Method.invoke(Method.java:521)
09-23 08:10:05.625: WARN/System.err(208): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-23 08:10:05.625: WARN/System.err(208): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-23 08:10:05.625: WARN/System.err(208): at dalvik.system.NativeStart.main(Native Method)
再次以
09-23 08:10:06.046: ERROR/AndroidRuntime(208): FATAL EXCEPTION: main
09-23 08:10:06.046: ERROR/AndroidRuntime(208): java.lang.RuntimeException: Unable to start receiver three.three.My_BroadcastReceiver: java.lang.NullPointerException
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2821)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at android.app.ActivityThread.access$3200(ActivityThread.java:125)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at android.os.Handler.dispatchMessage(Handler.java:99)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at android.os.Looper.loop(Looper.java:123)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at java.lang.reflect.Method.invokeNative(Native Method)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at java.lang.reflect.Method.invoke(Method.java:521)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at dalvik.system.NativeStart.main(Native Method)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): Caused by: java.lang.NullPointerException
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at three.three.My_BroadcastReceiver.onReceive(My_BroadcastReceiver.java:57)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)
09-23 08:10:06.046: ERROR/AndroidRuntime(208): ... 10 more
为什么不使用日志记录和/或调试器来发现问题?你可以在'adb logcat'中得到任何logmessage(即使是boottime),那么你的问题在哪里缩小了问题?顺便说一下:'System.out'不是登录Android的理想方式。 – theomega
我不知道。谢谢。 –