java.lang.NullPointerException:尝试调用虚拟方法';char[]java.lang.String.toCharArray()';关于空对象引用

java.lang.NullPointerException:尝试调用虚拟方法';char[]java.lang.String.toCharArray()';关于空对象引用,java,android,azure,cursor,imageurl,Java,Android,Azure,Cursor,Imageurl,我正在尝试从Android设备读取图像,然后将其上载到Microsoft Azure移动服务 pickImage()和onActivityResult()方法工作正常,因为可以使用代码在图像视图中成功显示图像 mImageView.setImageURI(currImageURI); System.out.println("IMAGE: " + DatabaseUtils.dumpCursorToString(cursor)); System.out.println("CURRENT: " +

我正在尝试从Android设备读取图像,然后将其上载到Microsoft Azure移动服务

pickImage()和onActivityResult()方法工作正常,因为可以使用代码在图像视图中成功显示图像

mImageView.setImageURI(currImageURI);
System.out.println("IMAGE: " + DatabaseUtils.dumpCursorToString(cursor));
System.out.println("CURRENT: " + DatabaseUtils.dumpCurrentRowToString(cursor));
当我试图使用saveToDo()方法保存图像时,行中出现错误

FileInputStream fis = new FileInputStream(absoluteFilePath);
因此,我尝试使用代码打印出游标中确切包含的内容

mImageView.setImageURI(currImageURI);
System.out.println("IMAGE: " + DatabaseUtils.dumpCursorToString(cursor));
System.out.println("CURRENT: " + DatabaseUtils.dumpCurrentRowToString(cursor));
我得到以下错误

W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference
W/System.err:     at java.io.File.fixSlashes(File.java:183)
W/System.err:     at java.io.File.<init>(File.java:130)
W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:103)

W/System.err:     at com.king.recipesharinghub.AddRecipe.saveTodo(AddRecipe.java:773)
W/System.err:     at com.king.recipesharinghub.AddRecipe$3.onClick(AddRecipe.java:214)

W/System.err:     at android.view.View.performClick(View.java:5198)
W/System.err:     at android.view.View$PerformClick.run(View.java:21147)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:     at android.os.Looper.loop(Looper.java:148)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
I/TodoDetailsActivity: JSON: {"complete":"false","text":"This is testing"}
希望我的问题得到解决,因为我已经在这个问题上坚持了好几天。
谢谢大家!

调用查询时,应在代码中添加投影

     // Attempt to fetch asset filename for image
            String[] projection = { MediaStore.Images.Media.DATA };
photoCursor = context.getContentResolver().query( photoUri, 


                                projection, null, null, null );
那么只有你才能得到

int index = cursor
                    .getColumnIndex(MediaStore.Images.ImageColumns.DATA);
希望这对你有帮助。

@luKing Saw, 我在Eclipse的模拟器中测试了您的代码。一切都很顺利

03-15 21:17:47.706: I/dalvikvm-heap(621): Grow heap (frag case) to 11.867MB for 1228816-byte allocation
03-15 21:17:49.296: I/System.out(621): Image URL: content://media/external/images/media/17
03-15 21:17:49.296: I/System.out(621): PROJECTION: [Ljava.lang.String;@414b3988
03-15 21:17:49.336: I/System.out(621): DATABASE: >>>>> Dumping cursor android.content.ContentResolver$CursorWrapperInner@414a9d50
03-15 21:17:49.336: I/System.out(621): 0 {
03-15 21:17:49.346: I/System.out(621):    _data=/mnt/sdcard/DCIM/Camera/IMG_20160315_171536.jpg
03-15 21:17:49.346: I/System.out(621): }
03-15 21:17:49.346: I/System.out(621): <<<<<
03-15 21:17:49.346: I/System.out(621): CURRENT: 0 {
03-15 21:17:49.346: I/System.out(621):    _data=/mnt/sdcard/DCIM/Camera/IMG_20160315_171536.jpg
03-15 21:17:49.356: I/System.out(621): }
03-15 21:17:49.356: I/System.out(621): INDEX: 0
03-15 21:17:49.356: I/System.out(621): ABSOLUTEFILEPATH: /mnt/sdcard/DCIM/Camera/IMG_20160315_171536.jpg
03-15 21:17:51.466: I/Choreographer(621): Skipped 562 frames!  The application may be doing too much work on its main thread.
03-15 21:17:47.706:I/dalvikvm堆(621):为1228816字节分配将堆(frag案例)增长到11.867MB
03-15 21:17:49.296:I/System.out(621):图像URL:content://media/external/images/media/17
03-15 21:17:49.296:I/System.out(621):投影:[Ljava.lang.String;@414b3988
03-15 21:17:49.336:I/System.out(621):数据库:>>>>>>转储游标android.content.ContentResolver$CursorWrapperInner@414a9d50
03-15 21:17:49.336:I/系统输出(621):0{
03-15 21:17:49.346:I/System.out(621):\u data=/mnt/sdcard/DCIM/Camera/IMG\u 20160315\u 171536.jpg
03-15 21:17:49.346:I/System.out(621):}

03-15 21:17:49.346:I/System.out(621):您好@SilvansSolanki,谢谢您的回复。我曾尝试在代码中添加投影,但出现以下错误。java.lang.NullPointerException:尝试调用虚拟方法'char[]java.lang.String.ToCharray()'在空对象引用上,打印时检索的数据现在为空。图像:>>>>>>>转储游标android.content.ContentResolver$CursorWrapperInner@1f80446I/System.out:0{I/System.out:_data=null I/System.out:}I/System.out:这意味着您现在收到的是新的错误消息,而不是以前的错误消息,您能否发布更新的代码,以便我为您提供解决方案。您好@SilvansSolanki,我已经更新了我的代码,并获得了错误消息。感谢更新的代码,您能否将完整的logcat放入其中,也能否在您所在的位置进行调试正在代码中获取空指针。您好@SilvansSolanki,完整的logcat已更新。我在这一行获取空指针异常FileInputStream fis=new FileInputStream(absoluteFilePath);其中索引为0,absoluteFilePath为空。