Fulguris
Fulguris copied to clipboard
Unable to start camera from image chooser
Description
As Fulguris declares CAMERA permission in manifest, it's treated as denied, so launching Camera from intent chooser doesn't work.
Environment
- Device: Nexus 5X
- OS: Android 8.1.0
- Version: 1.8.7
To reproduce
Steps to reproduce the behaviour:
- Go to https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file
- Click on 'Choose file' button
- Select 'Camera'
- See error
Expected behaviour
The app should request Camera permission.
Screenshots
Additional context
See https://issuetracker.google.com/issues/37063818
Error
2022-05-23 12:20:10.427 768-17285/? I/ActivityManager: START u0 {act=android.media.action.IMAGE_CAPTURE flg=0x3000003 cmp=com.google.android.GoogleCamera/com.android.camera.activity.CaptureActivity clip={text/uri-list U:file:///storage/emulated/0/Android/data/net.slions.fulguris.full.playstore/files/Pictures/JPEG_20220523_122005_7582697003038963449.jpg} (has extras)} from uid 10117
2022-05-23 12:20:10.427 768-17285/? W/ActivityManager: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3000003 cmp=com.google.android.GoogleCamera/com.android.camera.activity.CaptureActivity clip={text/uri-list U:file:///storage/emulated/0/Android/data/net.slions.fulguris.full.playstore/files/Pictures/JPEG_20220523_122005_7582697003038963449.jpg} (has extras) } from null (pid=-1, uid=10117) with revoked permission android.permission.CAMERA
2022-05-23 12:20:10.433 24593-24593/? E/ResolverActivity: Unable to launch as uid 10117 package net.slions.fulguris.full.playstore, while running in android:ui
java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3000003 cmp=com.google.android.GoogleCamera/com.android.camera.activity.CaptureActivity clip={text/uri-list U:file:///storage/emulated/0/Android/data/net.slions.fulguris.full.playstore/files/Pictures/JPEG_20220523_122005_7582697003038963449.jpg} (has extras) } from null (pid=-1, uid=10117) with revoked permission android.permission.CAMERA
at android.os.Parcel.readException(Parcel.java:2013)
at android.os.Parcel.readException(Parcel.java:1959)
at android.app.IActivityManager$Stub$Proxy.startActivityAsCaller(IActivityManager.java:8466)
at android.app.Instrumentation.execStartActivityAsCaller(Instrumentation.java:1857)
at android.app.Activity.startActivityAsCaller(Activity.java:4651)
at com.android.internal.app.ResolverActivity$DisplayResolveInfo.startAsCaller(ResolverActivity.java:1185)
at com.android.internal.app.ResolverActivity.safelyStartActivityInternal(ResolverActivity.java:843)
at com.android.internal.app.ResolverActivity.safelyStartActivity(ResolverActivity.java:824)
at com.android.internal.app.ResolverActivity.onTargetSelected(ResolverActivity.java:814)
at com.android.internal.app.ChooserActivity.onTargetSelected(ChooserActivity.java:438)
at com.android.internal.app.ResolverActivity.startSelected(ResolverActivity.java:628)
at com.android.internal.app.ChooserActivity.startSelected(ChooserActivity.java:444)
at com.android.internal.app.ChooserActivity$ChooserRowAdapter$2.onClick(ChooserActivity.java:1394)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Interesting, I did use the camera before though using WebRTC to make video calls.
It works when user grants camera in permission settings. The app should ask for permission in not granted case
It works when user grants camera in permission settings. The app should ask for permission in not granted case
Thanks for reporting that. It should indeed be asking for permission, weird that it does not in your use case. It seems fairly easy to reproduce too with your instructions, sounds like an easy fix.