使用NameValuePair传递参数

时间:2012-11-08 17:43:23

标签: java android

我有应用程序拍摄照片并将其发送到服务器。拍照和服务器(接受图像)完全分开运行。当我在拍照发送服务器后尝试使用下面的代码时,它会强制关闭应用程序。这是代码:

protected void onActivityResult(int requestCode, int resultCode, Intent data){
   if (resultCode == RESULT_OK){
      Uri imageUri=data.getData();
      List<NameValuePair> params = new ArrayList<NameValuePair>(1);
      params.add(new BasicNameValuePair("image", imageUri.getPath()));
      post("http://myserver-address",params);
   }
}

post方法与Sending images using Http Post

相同

Log cat说:

java.lang.RuntimeException: Unable to resume activity
{com.john.smith/com.john.smith.Activity}: java.lang.RuntimeException:
Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null}
to activity {com.john.smith/com.john.smith.Activity}:
   java.lang.NullPointerException

我认为,将参数传递给send函数有问题。因为,我尝试禁用发送功能中的所有行,仍然面临错误。并且此错误会导致应用程序关闭。

我该如何解决这个问题?如何将照片传递给我以外的send功能?

更新

我的相机捕获代码与之相同 http://code.google.com/p/crw-cmu/source/browse/luis/PhotoIntentActivity/src/com/example/android/photobyintent/PhotoIntentActivity.java?r=734

我称之为

     protected void onActivityResult(int requestCode, int resultCode, Intent data){

        switch (requestCode) {
        case ACTION_TAKE_PHOTO_B: {
            if (resultCode == RESULT_OK) {
            handleBigCameraPhoto();
          Uri imageUri=data.getData();
          List<NameValuePair> params = new ArrayList<NameValuePair>(1);
          params.add(new BasicNameValuePair("image", imageUri.getPath()));
          post("http://myserver-address",params);
        }
            }
            break;
        } // ACTION_TAKE_PHOTO_B

    } // switch
}

1 个答案:

答案 0 :(得分:0)

日志显示data=null因此Uri imageUri=data.getData();会导致NPE。

我建议添加一些if( requestCode == ...) {switch( requestCode ),因为在所有情况下都没有设置数据。

为避免崩溃,您应在取消引用dataimageUri之前检查null。在else子句中添加一些日志。

互联网搜索提供结果: