Android 4.4从图库选择图片,获取图片路径并裁剪

本文介绍了在Android应用中实现图片选择的不同方法,包括使用Intent.ACTION_GET_CONTENT和Intent.ACTION_PICK。通过对比两种方法,作者最终选择了使用ACTION_PICK来实现图片选择功能,并提供了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出处: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;
	}
由于没有裁剪的需求就没有做。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值