我有应用程序拍摄照片并将其发送到服务器。拍照和服务器(接受图像)完全分开运行。当我在拍照发送服务器后尝试使用下面的代码时,它会强制关闭应用程序。这是代码:
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
功能?
更新
我称之为
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
}
答案 0 :(得分:0)
日志显示data=null
因此Uri imageUri=data.getData();
会导致NPE。
我建议添加一些if( requestCode == ...) {
或switch( requestCode )
,因为在所有情况下都没有设置数据。
为避免崩溃,您应在取消引用data
和imageUri
之前检查null。在else
子句中添加一些日志。
互联网搜索提供结果: