【问题标题】:Passing paramaters using NameValuePair使用 NameValuePair 传递参数
【发布时间】:2012-11-09 03:50:14
【问题描述】:

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

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);
   }
}

发布方式同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 功能?

更新:

我的相机捕获代码与 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
}

【问题讨论】:

  • 检查imageUri在这行Uri imageUri=data.getData();之后是否为空。另外,handleBigCameraPhoto 中有什么内容?
  • 我检查了 Uri imageUri=data.getData();它确实返回 null,如何获取从相机捕获的图像?

标签: java android


【解决方案1】:

日志显示 data=null 所以 Uri imageUri=data.getData(); 导致 NPE。

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

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

互联网搜索提供结果:

【讨论】:

  • 是的,你是对的,当我尝试使用 imageUri 时,它返回 null。那么,如何获取从相机捕获的图像并将其发送到发送功能。
  • 我采纳了您的建议,问题是我的 imageUri 始终为空,因为数据为空。那么,如何解决呢?
  • 我有个问题,这段代码'params.add(new BasicNameValuePair("image", imageUri.getPath()));'发送图像的路径而不是图像本身,对吗?
  • 好的,谢谢。我已经看到了这些链接。正如您强调的那样,我选择了最好的一个。现在,问题变成了我应该在哪里调用 post 函数,似乎调用“onActivityResult”不好。 ?
猜你喜欢
  • 2012-05-24
  • 2011-04-22
  • 2013-10-14
  • 2012-04-28
  • 2016-05-25
  • 2015-08-12
  • 2014-01-21
  • 2011-08-10
  • 1970-01-01
相关资源
最近更新 更多