0

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

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 方法与使用 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
}
4

1 回答 1

0

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

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

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

互联网搜索提供结果:

于 2012-11-08T17:49:03.820 回答