用ACTION_IMAGE_CAPTURE来克服bug的美妙方法

Ars*_*niy 5 java camera android android-intent

我遇到了问题:ACTION_IMAGE_CAPTURE intent的行为取决于硬件制造商.

我认为,从照片库插入相机拍摄照片的最佳方法必须是以下内容

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, CAPTURE_IMAGE_REQUEST);
Run Code Online (Sandbox Code Playgroud)

然后得到uri onActivityResult:

switch (requestCode) {
    case CAPTURE_IMAGE_REQUEST: {
         if(resultCode == Activity.RESULT_OK) {
              Uri uri = intent.getData();// content uri of photo in media gallery
              //do something with this
         }
         break;
    }
Run Code Online (Sandbox Code Playgroud)

但是我知道,这在许多设备上都不起作用; 此外,我发现了几种不同的Camera app行为场景:

  • 某些设备有此事件的错误,因此无法获得完整的照片,并且您只能使用公共目录中的tmp文件获取512px宽的照片
  • 一些设备(包括我的)将照片插入图库,但不返回Uri.(getData()返回null,intent extras只有布尔键'define-data',value = true)如果我尝试通过公共tempfile获取照片,那么照片将被插入到gallery和tempfile中.
  • 有些设备不会将拍摄的照片插入图库 - 我必须手动完成
  • 我不知道,但可能有其他不同的风景

那么,是否存在管理此类问题的最佳实践,以涵盖广泛的设备和制造商?

在这种情况下,我需要从相机拍照,将其插入画廊,然后在画廊中获取uri的照片.

Ren*_*eno 0

部分内容已经得到解答:

我认为你不应该检查其他案例。Google 和 Android OEM 会监控这些问题,因此请报告这些问题,希望它们能够得到解决。