Android 11 从 EXIF 获取图像方向

mag*_*key 5 android filenotfoundexception permission-denied android-10.0 android-exifinterface

您好,我有一个compileSdkVersion 30和targetSdkVersion 30的应用程序。由于我需要知道图像的方向,所以我写了这些:

val exif = ExifInterface(imageFile.absolutePath)
            val orientation = exif.getAttributeInt(
                ExifInterface.TAG_ORIENTATION,
                ExifInterface.ORIENTATION_NORMAL
            )

            when (orientation) {
                ExifInterface.ORIENTATION_ROTATE_270 -> rotate = 270
                ExifInterface.ORIENTATION_ROTATE_180 -> rotate = 180
                ExifInterface.ORIENTATION_ROTATE_90 -> rotate = 90
            }
Run Code Online (Sandbox Code Playgroud)

但有一个例外显示如下:

java.io,FileNotFoundException:/storage/emulated/0/DCIM/Camera/xxx.jpg: open failed EACCESS(Permission denied)
...
at android.media.ExifInterface.<init>(ExifInterface.java.1389)
Run Code Online (Sandbox Code Playgroud)

我想做的是获取图像并了解其方向,但我在互联网上找不到任何示例。有人能给我提示吗?谢谢!

bla*_*pps -1

在 Android 11 上,您可以访问该 Camera 目录,但大多数情况下无法访问该目录中属于其他应用程序的文件。

如果您使用经典文件系统路径,则不然。

那么哪个应用程序将这些文件放在那里呢?

如果不是,您可以使用 ACTION_OPEN_DOCUMENT 之类的操作来让用户选择一个可以为您提供不错的 uri 的文件。