安卓开发 图片上传 通过拍照可以实现但是通过相册却失败 20
addImageView=(ImageView)this.findViewById(R.id.addImageView);addImageView.setOnClickL...
addImageView = (ImageView) this.findViewById(R.id.addImageView);
addImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialogView = getLayoutInflater().inflate(R.layout.my_dialog,
null, false);
dialog = new Dialog(ReleaseActivity.this, R.style.myDialogTheme);
dialog.setContentView(dialogView);
dialog.show();
// 从相册选择图片
gallery = (TextView) dialogView.findViewById(R.id.gallery);
gallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (photo_list.size() == 3) {
Toast.makeText(ReleaseActivity.this,
"对不起,内存限制不能再添加图片了~~", Toast.LENGTH_LONG)
.show();
} else {
Intent intent = new Intent(
Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("return-data", true);
startActivityForResult(intent, 2);
}
dialog.dismiss();
}
});
// 拍照
camera = (TextView) dialogView.findViewById(R.id.camera);
camera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (photo_list.size() == 3) {
Toast.makeText(ReleaseActivity.this,
"对不起,内存限制只能添加少于等于三张图片", Toast.LENGTH_LONG)
.show();
} else {
Intent intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
}
dialog.dismiss();
错误是
04-11 03:52:59.080: E/BitmapFactory(2407): Unable to decode stream: java.lang.NullPointerException 展开
addImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialogView = getLayoutInflater().inflate(R.layout.my_dialog,
null, false);
dialog = new Dialog(ReleaseActivity.this, R.style.myDialogTheme);
dialog.setContentView(dialogView);
dialog.show();
// 从相册选择图片
gallery = (TextView) dialogView.findViewById(R.id.gallery);
gallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (photo_list.size() == 3) {
Toast.makeText(ReleaseActivity.this,
"对不起,内存限制不能再添加图片了~~", Toast.LENGTH_LONG)
.show();
} else {
Intent intent = new Intent(
Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("return-data", true);
startActivityForResult(intent, 2);
}
dialog.dismiss();
}
});
// 拍照
camera = (TextView) dialogView.findViewById(R.id.camera);
camera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (photo_list.size() == 3) {
Toast.makeText(ReleaseActivity.this,
"对不起,内存限制只能添加少于等于三张图片", Toast.LENGTH_LONG)
.show();
} else {
Intent intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
}
dialog.dismiss();
错误是
04-11 03:52:59.080: E/BitmapFactory(2407): Unable to decode stream: java.lang.NullPointerException 展开
2个回答
展开全部
你的代码onActivityResult里都没有加保护,我这周也在写这个功能,上班后给你
追问
好的 谢谢
追答
其实原因很简单,就是你的图片过大,这时使用return data时,android为防止内存oom,实际并没有return成功,所以,当你的代码使用时,认为已经传递过来,但没有做空判断就直接使用,当然会挂掉。对于大图,应当使用uri的方式,下面这个链接你看看,有问题再找我:http://www.linuxidc.com/Linux/2012-11/73940.htm,网上的其他demo都是针对处理小图的,处理大图都会挂掉,这篇文章详细解释了处理小图和大图的区别
再补充下,截图是区分截取大图用uri,截取小图用return data,另外截取大图还区分平台,因为4.4以上的系统,uri里没有path的,所以上面链接的代码应该在4.4以上的平台不能使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询