-1

我正在做一个项目,想读取通话记录并将它们写入文件并将其发送到服务器。我用于读取通话记录的代码在单独的项目中运行良好。但是在将代码与原始项目集成时会导致 NullPointerException。所有权限都经过验证。这是我的代码

BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 
              buf.append("Testing ");
              buf.newLine();
                sb = new StringBuffer();
                Uri str = CallLog.Calls.CONTENT_URI;
                str.toString();
                Log.e("TAG", str.toString());


                  @SuppressWarnings("deprecation")
            Cursor managedCursor =managedQuery(CallLog.Calls.CONTENT_URI, null,
                            null, null, null);
                Log.e("TAG", "in while " + ++i);
              int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
                int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
                int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
                int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
                sb.append("Call Details :");

Logcat 显示此错误 05-15 16:17:14.107: E/AndroidRuntime(20715): FATAL EXCEPTION: main 05-15 16:17:14.107: E/AndroidRuntime(20715): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.atu_proto/com.example.atu_proto.MenuList}:java.lang.NullPointerException

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2313)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.ActivityThread.access$600(ActivityThread.java:156)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.os.Handler.dispatchMessage(Handler.java:99)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.os.Looper.loop(Looper.java:153)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.ActivityThread.main(ActivityThread.java:5336)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 java.lang.reflect.Method.invokeNative(Native Method)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 java.lang.reflect.Method.invoke(Method.java:511)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)

05-15 16:17:14.107: E/AndroidRuntime(20715): at dalvik.system.NativeStart.main(Native Method)

05-15 16:17:14.107:E/AndroidRuntime(20715):由:java.lang.NullPointerException 引起

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.content.ContextWrapper.getContentResolver(ContextWrapper.java:99)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.Activity.managedQuery(Activity.java:1751)

05-15 16:17:14.107: E/AndroidRuntime(20715): at com.example.atu_proto.CallLogsRetrieve.getCallDetails(CallLogsRetrieve.java:89)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 com.example.atu_proto.MenuList.onCreate(MenuList.java:78)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.Activity.performCreate(Activity.java:5122)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2277) 05-15 16:17:14.107: E/AndroidRuntime(20715): ...还有 11 个

4

1 回答 1

0

05-15 16:17:14.107:E/AndroidRuntime(20715):由:java.lang.NullPointerException 引起

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 android.content.ContextWrapper.getContentResolver(ContextWrapper.java:99)

...

05-15 16:17:14.107: E/AndroidRuntime(20715): at com.example.atu_proto.CallLogsRetrieve.getCallDetails(CallLogsRetrieve.java:89)

05-15 16:17:14.107: E/AndroidRuntime(20715): 在 com.example.atu_proto.MenuList.onCreate(MenuList.java:78)

这表明您正在从您的活动中调用另一个活动MenuList,可能会使用new.

永远不要用new.

在这种情况下,它似乎CallLogsRetrieve不应该是一个活动,您可以将Activity引用作为参数传递给需要它的方法。

于 2014-05-15T11:52:28.360 回答