有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用NameValuePair传递参数

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

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相同

日志猫说:

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/安卓/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) 个答案

  1. # 1 楼答案

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

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

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

    Internet搜索可提供以下结果: