修复android7系统版本兼容性问题,Android系统兼容性问题(持续更新)

相信开发过一段Android的都被Android中的兼容性问题给折腾过,有时这确实很无奈,Android被不同的厂商改的七零八落的。本文主要总结下本人在实际的项目开发过程中所遇到的兼容性问题,以及最后的解决办法。本文将持续更新。

1. 选择系统相册时HTC 7出现的系统崩溃(空指针异常) 系统版本 2.3.7

最近在做一发表的功能时,需要从系统相册中选择图片,最后有将此图片上传服务端。通常从系统相册中选择图片写法如下:

69c5a8ac3fa60e0848d784a6dd461da6.pngalbumButton.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View v) {

Intent intent= newIntent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(intent, AppContext.GETIMAGE_BYSDCARD);

}

});

69c5a8ac3fa60e0848d784a6dd461da6.png

然后在onActivityResult中获取刚刚选取的照片:

69c5a8ac3fa60e0848d784a6dd461da6.png1 @Override2 protected void onActivityResult(int requestCode, intresultCode, Intent intent) {3 if (resultCode ==RESULT_OK) {4 if (requestCode == AppContext.GETIMAGE_BYSDCARD || requestCode ==AppContext.GETIMAGE_BYCAMERA) {5 if (requestCode == AppContext.GETIMAGE_BYSDCARD && null !=data) {6 Uri selectedImage =data.getData();7 String[] filePathColumn ={ MediaStore.Images.Media.DATA };8 Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);9 if (cursor != null) {10 if(cursor.moveToFirst()) {11 //int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

12 int columnIndex = cursor.getColumnIndexOrThrow(filePathColumn[0]);13 photoPath =cursor.getString(columnIndex);14 }15 cursor.close();16 }17 }18 }19 }20 }

69c5a8ac3fa60e0848d784a6dd461da6.png

可以在HTC7  2.3.7 上发现无法获取图片,如果上述代码中没有做cursor != null 则系统崩溃,最后定为出原因在于Uri

selectedImage =

data.getData();这行代码上,在其他手机上,此处返回格式为content://media/external/images/media/244709,因此自然是通过接下来的Content

Privider方式获取到图片实际地址。而在HTC此手机上,返回的结果却为:/storage/sdcard0/DCIM/Camera/IMG_20140608_162447.jpg,即直接返回了所选取图片的地址,因此,需要针对性的做出如下处理:

69c5a8ac3fa60e0848d784a6dd461da6.png1 @Override2 protected void onActivityResult(int requestCode, intresultCode, Intent intent) {3 if (resultCode ==RESULT_OK) {4 if (requestCode == AppContext.GETIMAGE_BYSDCARD || requestCode ==AppContext.GETIMAGE_BYCAMERA) {5 if (requestCode == AppContext.GETIMAGE_BYSDCARD && null !=data) {6 Uri selectedImage =data.getData();7 String[] filePathColumn ={ MediaStore.Images.Media.DATA };8 Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);9 if (cursor != null) {10 if(cursor.moveToFirst()) {11 //int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

12 int columnIndex = cursor.getColumnIndexOrThrow(filePathColumn[0]);13 photoPath =cursor.getString(columnIndex);14 }15 cursor.close();16 } else{17 if (selectedImage != null) {18 String tmpPath =selectedImage.getPath();19 if (tmpPath != null && (tmpPath.endsWith(".jpg") || tmpPath.endsWith(".png") || tmpPath.endsWith(".gif"))) {20 photoPath =tmpPath;21 }22 }23 }24 }25 }26 }27 }

69c5a8ac3fa60e0848d784a6dd461da6.png

----------------------------

一天整理一点  更新一点吧...

原文:http://www.cnblogs.com/lwbqqyumidi/p/3784656.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值