在Android中获取空指针异常

在Android中获取空指针异常,android,Android,我正在android中创建一个应用程序,使用csv文件备份和恢复通话记录。我正面临一个问题,我不明白问题在哪里我是错误日志请建议我哪里是错误以及如何修复它 04-02 16:26:10.284: E/AndroidRuntime(7030): FATAL EXCEPTION: AsyncTask #1 04-02 16:26:10.284: E/AndroidRuntime(7030): java.lang.RuntimeException: An error occured while e

我正在android中创建一个应用程序,使用csv文件备份和恢复通话记录。我正面临一个问题,我不明白问题在哪里我是错误日志请建议我哪里是错误以及如何修复它

04-02 16:26:10.284: E/AndroidRuntime(7030): FATAL EXCEPTION: AsyncTask #1
04-02 16:26:10.284: E/AndroidRuntime(7030): java.lang.RuntimeException: An error   occured while executing doInBackground()
04-02 16:26:10.284: E/AndroidRuntime(7030):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.lang.Thread.run(Thread.java:856)
04-02 16:26:10.284: E/AndroidRuntime(7030): Caused by: java.lang.NullPointerException
04-02 16:26:10.284: E/AndroidRuntime(7030):     at android.os.Parcel.readException(Parcel.java:1431)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at android.content.ContentProviderProxy.insert(ContentProviderNative.java:420)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at   android.content.ContentResolver.insert(ContentResolver.java:866)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at com.example.androidbackuppro.Restore.RestoreCallLogs(Restore.java:396)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at com.example.androidbackuppro.Restore$CallLogsRestore.doInBackground(Restore.java:318)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at com.example.androidbackuppro.Restore$CallLogsRestore.doInBackground(Restore.java:1)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-02 16:26:10.284: E/AndroidRuntime(7030):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-02 16:26:10.284: E/AndroidRuntime(7030):     ... 5 more
04-02 16:26:19.329: I/Choreographer(7030): Skipped 508 frames!  The application may be doing too much work on its main thread.
04-02 16:26:19.724: E/SpannableStringBuilder(7030): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
04-02 16:26:19.729: E/SpannableStringBuilder(7030): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
04-02 16:26:19.764: W/IInputConnectionWrapper(7030): getSelectedText on inactive InputConnection
04-02 16:26:19.784: W/IInputConnectionWrapper(7030): setComposingText on inactive InputConnection
04-02 16:26:19.829: E/WindowManager(7030): Activity com.example.androidbackuppro.Restore has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41bd7850 that was originally added here
04-02 16:26:19.829: E/WindowManager(7030): android.view.WindowLeaked: Activity com.example.androidbackuppro.Restore has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41bd7850 that was originally added here
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:409)
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:322)
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:234)
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:153)
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.Window$LocalWindowManager.addView(Window.java:559)
04-02 16:26:19.829: E/WindowManager(7030):  at android.app.Dialog.show(Dialog.java:277)
04-02 16:26:19.829: E/WindowManager(7030):  at com.example.androidbackuppro.Restore$CallLogsRestore.onPreExecute(Restore.java:297)
04-02 16:26:19.829: E/WindowManager(7030):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
04-02 16:26:19.829: E/WindowManager(7030):  at android.os.AsyncTask.execute(AsyncTask.java:534)
04-02 16:26:19.829: E/WindowManager(7030):  at com.example.androidbackuppro.Restore.CallLogsRestore(Restore.java:92)
04-02 16:26:19.829: E/WindowManager(7030):  at java.lang.reflect.Method.invokeNative(Native Method)
04-02 16:26:19.829: E/WindowManager(7030):  at java.lang.reflect.Method.invoke(Method.java:511)
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.View$1.onClick(View.java:3719)
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.View.performClick(View.java:4261)
04-02 16:26:19.829: E/WindowManager(7030):  at android.view.View$PerformClick.run(View.java:17356)
04-02 16:26:19.829: E/WindowManager(7030):  at android.os.Handler.handleCallback(Handler.java:615)
04-02 16:26:19.829: E/WindowManager(7030):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-02 16:26:19.829: E/WindowManager(7030):  at android.os.Looper.loop(Looper.java:137)
04-02 16:26:19.829: E/WindowManager(7030):  at android.app.ActivityThread.main(ActivityThread.java:4921)
04-02 16:26:19.829: E/WindowManager(7030):  at java.lang.reflect.Method.invokeNative(Native Method)
04-02 16:26:19.829: E/WindowManager(7030):  at java.lang.reflect.Method.invoke(Method.java:511)
04-02 16:26:19.829: E/WindowManager(7030):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
04-02 16:26:19.829: E/WindowManager(7030):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
04-02 16:26:19.829: E/WindowManager(7030):  at dalvik.system.NativeStart.main(Native Method)

是否也应该发布一些相关的代码来跟踪错误堆栈?@R.J好的,我将添加codecom.example.androidbackuppro.Restore.RestoreCallLogs(Restore.java:396)这一行导致问题的检查,如果它返回nullpost您的代码,那么只有您得到更好的答案。
getContentResolver().insert(CallLog.Calls.CONTENT\u URI,values)-这将抛出
NPE
。调试并查看实际的
NULL
folder = new File(Environment.getExternalStorageDirectory() + File.separator + getString(R.string.app_name));
            String csvFilename = folder+"/CallLogs.csv";
            if(IsFileExists(csvFilename))
            {

            CSVReader csvReader = new CSVReader(new FileReader(csvFilename), ',', '\'', 0);
            String[] row = null;
            if(csvReader.readNext()!=null)
            {
                 while((row = csvReader.readNext()) != null)
                     {
                    RestoreCallLogs(row[0],row[1],row[2],row[3],row[4]);

                    }
                 csvReader.close();
                 //If Restoration is successful
                IsRestore="1";
              }

 public  void RestoreCallLogs(String Name,String number,String Date,String Type,String Duration){
        ContentValues values = new ContentValues();
        values.put(CallLog.Calls.NUMBER, number);
        values.put(CallLog.Calls.DATE, Date);
        values.put(CallLog.Calls.DURATION,Duration);
        values.put(CallLog.Calls.TYPE, Type);
        /* if(Type=="Incoming")
           values.put(CallLog.Calls.TYPE, 1);
        else if(Type=="Missed")
            values.put(CallLog.Calls.TYPE, 2);
        else
            values.put(CallLog.Calls.TYPE, 3);*/
        if(Name!="Unknown")
         values.put(CallLog.Calls.CACHED_NAME, Name);
        getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);
    }