2012-02-27 139 views
0

我知道我再次问这个问题,但我尝试了几个SO和其他网站的解决方案,但没有救援。 虽然我的数据库是通过DDMS视图创建的,但我尝试获取数据库的可读实例时遇到NULL指针异常。 plz帮助空指针异常,而getReadableDatabase

请让我知道如果别的需要

的logcat:

02-28 01:28:56.585: ERROR/NewContactTrackService(285): Adding to instant upload database contact id 21 
02-28 01:28:56.595: ERROR/NewContactTrackService(285): Added to instant upload database contact id 21 
02-28 01:28:56.615: ERROR/Net UNAVAILABLE details stored in buffer(285): Sd 
02-28 01:28:58.186: ERROR/NetworkReceiver(285): onReceive: connected, starting UpdaterService 
02-28 01:28:58.186: ERROR/NewContactTrackService(285): UPDATE CALLED 
02-28 01:28:58.186: ERROR/NewContactTrackService(285): INSIDE IF 
02-28 01:28:58.186: ERROR/NewContactTrackService(285): qqqqqqqqqqqqqqqqqqqqqqqqq 
02-28 01:28:58.195: ERROR/AndroidRuntime(285): Uncaught handler: thread main exiting due to uncaught exception 
02-28 01:28:58.245: ERROR/AndroidRuntime(285): java.lang.RuntimeException: Unable to start receiver com.gooogle.omcsa.NetworkReceiver: java.lang.NullPointerException 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2646) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.app.ActivityThread.access$3100(ActivityThread.java:119) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.os.Looper.loop(Looper.java:123) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at dalvik.system.NativeStart.main(Native Method) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285): Caused by: java.lang.NullPointerException 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at com.gooogle.omcsa.NewContactTrackService.update(NewContactTrackService.java:185) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at com.gooogle.omcsa.NetworkReceiver.onReceive(NetworkReceiver.java:21) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2637) 
02-28 01:28:58.245: ERROR/AndroidRuntime(285):  ... 10 more 
02-28 01:28:58.275: ERROR/dalvikvm(285): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
02-28 01:28:59.635: ERROR/ActivityThread(52): Failed to find provider info for android.server.checkin 

网络接收器

public class NetworkReceiver extends BroadcastReceiver { // 
public static final String TAG = "NetworkReceiver"; 

@Override 
public void onReceive(Context context, Intent intent) { 
boolean isNetworkDown = intent.getBooleanExtra(
ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
if (isNetworkDown) { 
Log.e(TAG, "onReceive: NOT connected, stopping UpdaterService"); 
//context.stopService(new Intent(context, UpdaterService.class)); // 
} else { 
Log.e(TAG, "onReceive: connected, starting UpdaterService"); 
NewContactTrackService networkTrack= new NewContactTrackService(); 
networkTrack.update(); 

Log.e(TAG, "onReceive: connected,uploading "); 
//context.startService(new Intent(context, UpdaterService.class)); // 
} 
} 

} 

NewContactTrackService:要长话短说,我只贴出相关部分服务

public class NewContactTrackService extends Service { 
    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
     dbBuffer = new DbContactBuffer(this); 
     dbInstantBuffer = new DbInstantBuffer(this); 
     values = new ContentValues(); 
     instantupload=0; 
     isInstantUploadEnabled = this.getSharedPreferences("isEnabled", MODE_WORLD_READABLE); 
     isDataForInstantUpload=false; 
     Log.e(TAG,"onCreate"); 
    } 

public void update() 
{ 
    Log.e(TAG,"UPDATE CALLED"); 
    Log.e(TAG,"INSIDE IF"); 
    dbInstantBuffer = new DbInstantBuffer(this); 
    Log.e(TAG," qqqqqqqqqqqqqqqqqqqqqqqqq"); 
    db1 = dbInstantBuffer.getReadableDatabase(); //THIS IS THE LINE OF EXCEPTION  
    Log.e(TAG," wwwwwwwwwwwwwwwwwwwwwww"); 
    cursor = db1.query(DbInstantBuffer.TABLE, null, null, null, null, null,null); 
    //startManagingCursor(cursor); 
    Log.e(TAG," "+ cursor.getCount());   
    while (cursor.moveToNext()) 
    {      
          //SOME CODE 
    } 
    db1.close();   

}    
} 
+2

代码中最重要的部分丢失了:'DbInstantBuffer' – Caner 2012-02-27 20:32:46

回答

0

您在onCreate和update方法中定义了两次dbInstantBuffer = new DbInstantBuffer(this);。此外,我没有看到dbInstantBuffer的声明(它是如何定义的以及在哪里定义的)。