我想用相机拍照并裁剪它。这在我在社区维基上找到的代码的新设备上运行得很好(第二个代码):
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.gallery", "com.android.camera.CropImage");
在某些Android版本上,包括最新版本,com.android.gallery不再存在。你需要使用它:
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.google.android.gallery3d", "com.android.gallery3d.app.CropImage");
当然我也想支持旧设备。什么是“一些Android版本”?有人可以给我一个API级别吗?或者Android源代码中是否有任何最终的constance我可以用来为意图选择正确的字符串?
答案 0 :(得分:2)
某些设备不支持裁剪,这意味着他们的图库应用程序没有构建它。最好的解决方案是在您的应用中构建裁剪机制。这是一个很好的开源裁剪器:
答案 1 :(得分:1)
我找到了一个更好的代码来解决这个问题。这里将搜索能够裁剪图像并启动第一个找到的应用程序。希望能帮助别人。
Intent cropApps = new Intent("com.android.camera.action.CROP");
cropApps.setType("image/*");
List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(cropApps, 0);
int size = list.size();
if (size == 0)
{
Toast.makeText(context, "Can not find image crop app", Toast.LENGTH_SHORT).show();
return null;
}
else
{
ResolveInfo res = list.get(0);
Intent intent = new Intent();
intent.setClassName(res.activityInfo.packageName, res.activityInfo.name);
intent.setData(imageCaptureUri);
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, CROP_FROM_CAMERA);
}