出处:http://blog.youkuaiyun.com/tempersitu/article/details/20557383
对于这篇博客介绍的方法,根据SDK版本不同有不同的方法,但是使用中遇到的问题是:
使用:
Intent intent=new Intent(Intent.ACTION_GET_CONTENT);//ACTION_OPEN_DOCUMENT
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/jpeg");
if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.KITKAT){
startActivityForResult(intent, SELECT_PIC_KITKAT);
}else{
startActivityForResult(intent, SELECT_PIC);
}
这里面的方法选择效果比较正式和漂亮,但是个人感觉在手机上运行时加载图片反应比较慢,没有预览等功能,我最后使用的还是最原始的办法:
发起Intent:
Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, SELECT_PIC);
选中处理:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (data == null) {
Toast.makeText(CreateNewWeibo.this, "没有选中", Toast.LENGTH_SHORT)
.show();
return;
}
if (requestCode == 37) {
Uri uri = data.getData();
String str;
if ("content".equalsIgnoreCase(uri.getScheme())) {
str = getDataColumn(CreateNewWeibo.this, uri);
Log.i(TAG, str);
Toast.makeText(CreateNewWeibo.this, "37---" + str,
Toast.LENGTH_SHORT).show();
}
}
}
public String getDataColumn(Context context, Uri uri) {
Cursor cursor = null;
final String column = "_data";
final String[] projection = { column };
try {
cursor = context.getContentResolver().query(uri, projection, null,
null, null);
if (cursor != null && cursor.moveToFirst()) {
final int index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(index);
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}
由于没有裁剪的需求就没有做。