【问题标题】:Capture photo from camera is not working in Android 11从相机拍摄照片在 Android 11 中不起作用
【发布时间】:2021-05-31 13:34:52
【问题描述】:

我使用设备的默认相机在我的应用中拍摄照片。当我使用 android 10 及以下版本时,一切正常。但是当我在 android 11 中使用相机时,无法在应用程序中工作。你能帮我解决这个问题吗?

【问题讨论】:

    标签: java android kotlin camera photo-gallery


    【解决方案1】:

    自 API 级别 30 起,包的可见性发生了变化。 https://developer.android.com/about/versions/11/privacy/package-visibility

    为了让您的包管理器正常工作,您需要在您的AndroidManifest.xml 中声明<queries>

    代码:

    <manifest package="your.package.name">
    <queries>
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE" />
        </intent>
    </queries>
    </manifest>
    

    这仅适用于默认的相机应用。如果您的应用正在使用某些 3rd 方相机,您可以找到一些信息 here

    【讨论】:

    • 以上代码在 android 11 中不起作用。请您帮我解决这个问题。
    • 嗨@Sahil,你可以参考这个link,非常详细。希望这可以帮助你解决你的问题
    【解决方案2】:

    你需要改变

    文件 sd_directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

    文件 sd_directory = getExternalFilesDir(Environment.DIRECTORY_PICTURES);

    【讨论】:

      【解决方案3】:

      将此添加到应用程序标记之外的清单中,希望它能解决您的问题

      <queries>
              <intent>
                  <action android:name="android.media.action.IMAGE_CAPTURE" />
              </intent>
              <intent>
                  <action android:name="android.intent.action.PICK" />
                  <data android:mimeType="vnd.android.cursor.dir/image" />
              </intent>
      </queries>
      

      【讨论】:

        【解决方案4】:

        Android 11 有存储更新。所以当使用 SDK >= 29 时必须设置 URI 而不是文件路径。

        URI uri = null;   // set this uri in camera Intent
                if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
                {
                   uri =  getApplicationContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
                }
                else
                {
                    uri =   getApplicationContext().getContentResolver().insert(MediaStore.Images.Media.INTERNAL_CONTENT_URI, new ContentValues());
                }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-22
          • 1970-01-01
          • 2015-11-06
          • 1970-01-01
          相关资源
          最近更新 更多