Android:拍照后调用裁剪活动

前端之家收集整理的这篇文章主要介绍了Android:拍照后调用裁剪活动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在解决一个拍摄照片的uri作物活动的问题.在我的应用程序中,用户可以拍摄照片或从画廊中选择照片,然后裁剪并上传.一切听起来都很简单.

当从Gallery中选择时,Gallery应用程序会返回所选照片的​​uri,如下所示:

  1. content://media/external/images/media/20

我通过以下代码开始与这个uri的作物活动,一切似乎都可以:

  1. Intent intent = new Intent("com.android.camera.action.CROP");
  2. intent.setData(uri);
  3. intent.putExtra("outputX",96);
  4. intent.putExtra("outputY",96);
  5. intent.putExtra("aspectX",1);
  6. intent.putExtra("aspectY",1);
  7. intent.putExtra("scale",true);
  8. intent.putExtra("return-data",true);
  9. startActivityForResult(intent,REQUEST_CODE_CROP);

但是当我拍照时,我只能知道照片的路径:

  1. file:///mnt/sdcard/iBet88.us/IMAGE_20120517_151606.jpg

而作物活动不会接受这个uri.
我尝试使用内容提供商的另一种方式:将新捕获的照片添加到ContentProvider,然后从以下代码获取新的uri:“content:// …”

  1. // TODO insert to Content Provider
  2. ContentResolver cr = getContentResolver();
  3. ContentValues contentValues = new ContentValues();
  4. contentValues.put(MediaStore.Images.Media.DATA,avatarFilePathTmp.getPath());
  5. contentValues.put(MediaStore.Images.Media.IS_PRIVATE,0);
  6. cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
  7.  
  8. // TODO get id from Content Provider
  9. String[] projection = {
  10. MediaStore.Images.Media._ID,MediaStore.Images.Media.DATA
  11. };
  12. String selectionClause = "" + MediaStore.Images.Media.DATA + " = ?";
  13.  
  14. String[] selectionArgs = {avatarFilePathTmp.getPath()};
  15. Cursor mCursor = getContentResolver().query(
  16. MediaStore.Images.Media.EXTERNAL_CONTENT_URI,projection,selectionClause,selectionArgs,"");
  17.  
  18. Uri uri = null;
  19. if (null == mCursor) {
  20.  
  21. } else if (mCursor.getCount() < 1) {
  22.  
  23. } else {
  24. mCursor.moveToFirst();
  25. int id = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Images.Media._ID));
  26.  
  27. String u = "content://media/external/images/media/" + id;
  28.  
  29. // create new Uri
  30. uri = Uri.parse(u);
  31. }

我的新Uri类似于Gallery应用程序的uri,但是当我使用新的Uri启动Crop活动时,我得到这个例外:

  1. android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.camera.action.CROP dat=content://media/external/images/media/20 (has extras) }

我的问题:
为什么作物活动拒绝与我的新Uri合作,尽管我的新的Uri和画廊应用程序的uri是相同的“内容:// …”
2.如何调用“裁剪活动”裁剪sdcard中的照片,我只知道其路径?

我试图google但还是没有运气.
对不起,我的英语不好.谢谢.

解决方法

我有intent.setType(“image / *”);它仍然没有工作…

什么解决了我的使用:
intent.setDataAndType(tempImageURI,“image / *”);

祝你好运!

猜你在找的Android相关文章