【问题标题】:Android Jelly bean camera return null URIAndroid 果冻豆相机返回空 URI
【发布时间】:2015-12-02 16:11:54
【问题描述】:

我正在尝试使用相机在我的应用中拍照,然后裁剪拍摄的图像。

一切都适用于 Android 的最新版本,但不适用于 Android Kitkat 4.4.2。

相机返回一个空 URI。

获取 URI onActivityReslult :

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_CODE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            Bitmap imageBitmap = (Bitmap) extras.get("data");

            picUri = data.getData();
            Intent i = new Intent(PublierActivity.this, CropActivity.class);
            i.putExtra("Uri", picUri);
            startActivityForResult(i, CROP_CODE);

        }

这是我如何称呼相机意图:

 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                    startActivityForResult(takePictureIntent, CAMERA_CODE);
                }

有什么方法可以让最旧的 android 版本例外来解决这个问题?

【问题讨论】:

    标签: java android android-camera uri


    【解决方案1】:

    从您的代码看来,您正在尝试使用ACTION_IMAGE_CAPTURE。在这种情况下,应该从不Uridata.getData() 应该总是返回 null。如果相机应用碰巧返回Uri,那可能就是图像,但由于ACTION_IMAGE_CAPTURE 没有记录返回Uri,你无法知道@987654328 是什么@ 是为了。

    如果您在ACTION_IMAGE_CAPTURE Intent 上使用EXTRA_OUTPUT,则您知道图像应该存储在哪里,因为您告诉相机应用程序将其存储在哪里。请注意,一些相机应用程序有问题,无法兑现EXTRA_OUTPUT,将图像放在任何他们想要的地方。

    如果您没有使用EXTRA_OUTPUT,那么您将在"data" extra 中获得缩略图。

    另外,请记住,这与 Android 操作系统版本无关,而与用户选择使用的相机应用有关。有数千种 Android 设备型号。它们预装了数十个(如果不是数百个)不同的相机应用程序。用户还可以选择安装第三方相机应用程序。其中任何一个都可能正在处理您的请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2014-04-28
      • 2012-09-23
      • 2013-02-12
      • 2012-11-10
      相关资源
      最近更新 更多