Skip to content

@capacitor/camera: Camera / Image Selector does not open up on Android 13+ #2339

Open
@NorthFred

Description

@NorthFred

Bug Report

Plugin(s)

@capacitor/camera 7.0.0

Capacitor Version

Latest Dependencies:

  @capacitor/cli: 7.2.0
  @capacitor/core: 7.2.0
  @capacitor/android: 7.2.0
  @capacitor/ios: 7.2.0

Installed Dependencies:

  @capacitor/ios: not installed
  @capacitor/core: 7.1.0
  @capacitor/android: 7.1.0
  @capacitor/cli: 7.1.0

Platform(s)

@ionic/angular: 8.5.2

Android API 33 (Android 13)
Android API 34 (Android 14)
Android API 35 (Android 15)

Current Behavior

Previously, before and in Android 13, the Camera / Image Selector would open up in my projects.
Users with Android 13 and newer are complaining that this is no longer the case. I confirmed it by running in the emulator.

My AndroidManifest.xml contains these permissions:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />

Expected Behavior

Camera / Image Selector opens up on Android 13+.

Code Reproduction

CAMERA:
        await Camera.requestPermissions()
        .then(async (permissions) => {
          if (permissions.camera != "denied") {
            await Camera.getPhoto(this.cameraOptions)
            .then( (image: any) => {
              resolve(image.webPath);
            })
            .catch(error => {
              if (error.message != "User cancelled photos app") {
                reject("camera/error");
              }
            });
          }
          else {
            reject("media/permissions-not-granted");
          }
        })
        .catch(error => reject("media/permissions-not-granted"));

PICTURE GALLERY:
await Camera.requestPermissions()
        .then(async (permissions) => {
          if (permissions.photos != "denied") {
            await Camera.pickImages(this.galleryOptions)
            .then(sel => {
              resolve(sel.photos[0].webPath);
            })
            .catch(error => {
              if (error.message != "No images picked") {
                reject("gallery/error");
              }
            });
          }
          else {
            reject("media/permissions-not-granted");
          }
        })
        .catch(error => reject("media/permissions-not-granted"));

Additional Context

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions