2013-12-23 53 views
0

我想弄明白这里是错的,我正在为用户建立一个表单,以便能够上传个人资料图片。当点击按钮它会把你带到Android图库(想要让用户在那里拍照),但一旦图片被选中,应用程序崩溃不知道为什么,但我认为错误指向与下面getRealPathFromURI(currImageURI)方法我已经尝试寻找不同的解决方案,但他们似乎显示了如何做到这一点同样的反应...喜欢这个How to get the Full file path from URI http://monstercoda.wordpress.com/2012/04/15/android-image-upload-tutorial-part-i/创建图片上传的Android问题

代码:

@Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if(resultCode == RESULT_OK) { 
       if(requestCode == 1) { 
           Uri currImageURI = data.getData(); 
        Log.d("The path","Current image path is ---->" + getRealPathFromURI(currImageURI)); 
        TextView tv_path = (TextView) findViewById(R.id.path); 
        tv_path.setText(getRealPathFromURI(currImageURI)); 

       } 
      } 
     } 

     public String getRealPathFromURI(Uri contentUri) { 
      String res = null; 
      String[] proj={MediaStore.Images.Media.DATA}; 
      Cursor cursor = getContentResolver().query(contentUri,proj, null, null, null); 
      if(cursor.moveToFirst()) { 
       int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       res = cursor.getString(column_index); 
      } 
      cursor.close(); 
      return res; 
     } 

错误:

12-22 16:25:38.894: E/AndroidRuntime(19577): FATAL EXCEPTION: main 
12-22 16:25:38.894: E/AndroidRuntime(19577): Process: com.fslio, PID: 19577 
12-22 16:25:38.894: E/AndroidRuntime(19577): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.google.android.apps.docs.storage/document/acc=1;doc=172 flg=0x1 }} to activity {com.fslio/com.fslio.wardrobe}: java.lang.IllegalArgumentException: Unknown column requested: _data 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.app.ActivityThread.deliverResults(ActivityThread.java:3346) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3389) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.app.ActivityThread.access$1200(ActivityThread.java:135) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1445) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.os.Handler.dispatchMessage(Handler.java:102) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.os.Looper.loop(Looper.java:137) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.app.ActivityThread.main(ActivityThread.java:4998) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at java.lang.reflect.Method.invokeNative(Native Method) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at java.lang.reflect.Method.invoke(Method.java:515) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at dalvik.system.NativeStart.main(Native Method) 
12-22 16:25:38.894: E/AndroidRuntime(19577): Caused by: java.lang.IllegalArgumentException: Unknown column requested: _data 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.content.ContentProviderProxy.query(ContentProviderNative.java:413) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.content.ContentResolver.query(ContentResolver.java:461) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.content.ContentResolver.query(ContentResolver.java:404) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at com.fslio.wardrobe.getRealPathFromURI(wardrobe.java:80) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at com.fslio.wardrobe.onActivityResult(wardrobe.java:67) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.app.Activity.dispatchActivityResult(Activity.java:5435) 
12-22 16:25:38.894: E/AndroidRuntime(19577): at android.app.ActivityThread.deliverResults(ActivityThread.java:3342) 
12-22 16:25:38.894: E/AndroidRuntime(19577): ... 11 more 
+0

试试这个[link](http://stackoverflow.com/questions/20514973/android-kitkat-get-pick-an-image-from-androids-built-in-gallery-app-program)! 。它可能有帮助。 – albeee

回答

4

是的,问题是getRealPathFromURI inside the onActivityResult

错误是,

Caused by: java.lang.IllegalArgumentException: Unknown column requested: _data 
com.fslio.wardrobe.getRealPathFromURI(wardrobe.java:80) 
com.fslio.wardrobe.onActivityResult(wardrobe.java:67) 

调试你的代码是在数据获取的问题,而你选择图像。

欲了解更多详情,请查询this参考链接。

+0

不错,我喜欢你的文章,要检查出来,你也是,分享如何将图像提供给后端服务器,以便它可以存储在任何设备上时看到图片显示。 – Lion789

+0

另外,你在哪里从你的文章中获得实用程序? – Lion789

+1

从Github下载代码,你会得到它 –