Return-Path: X-Original-To: apmail-cordova-issues-archive@minotaur.apache.org Delivered-To: apmail-cordova-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8E4DF1871C for ; Thu, 17 Dec 2015 19:38:47 +0000 (UTC) Received: (qmail 34724 invoked by uid 500); 17 Dec 2015 19:38:47 -0000 Delivered-To: apmail-cordova-issues-archive@cordova.apache.org Received: (qmail 34659 invoked by uid 500); 17 Dec 2015 19:38:47 -0000 Mailing-List: contact issues-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@cordova.apache.org Received: (qmail 34321 invoked by uid 99); 17 Dec 2015 19:38:47 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Dec 2015 19:38:47 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 0378E2C1F75 for ; Thu, 17 Dec 2015 19:38:47 +0000 (UTC) Date: Thu, 17 Dec 2015 19:38:47 +0000 (UTC) From: "Karl Kemp (JIRA)" To: issues@cordova.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (CB-10219) App crash when using camera plugin with Android platform 5.0.0 on SDK23 device MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CB-10219?page=3Dcom.atlassian.= jira.plugin.system.issuetabpanels:all-tabpanel ] Karl Kemp updated CB-10219: --------------------------- Description:=20 In my app I call the camera plugin like this: {code} return new Promise(function (resolve, reject) { //PhoneGap camera API navigator.camera.getPicture( function (imageLocalFilePath) { //Success callback =20 resolve(imageLocalFilePath); }, function (errorMessage) { //Error callback reject(new Error(errorMessage)); },=20 { //Image capture options quality: 50, destinationType: Camera.DestinationType.FILE_URI, encodingType: Camera.EncodingType.JPEG, targetWidth: targetWidth, targetHeight: targetHeight, mediaType: Camera.MediaType.PICTURE, correctOrientation: true, saveToPhotoAlbum: useCameraRoll }); }); {code} When this code runs on my Asus Nexus 7 running Android 6.0 (API23) I get th= e permission prompt as expected when I click the take photo button within t= he app for the first time. I click the "Accept" button but the app immedia= tely crashes with the following error, which seems to say that permission w= as denied: =20 {noformat} 12-17 14:27:52.083 21930-21930/com.lifecyclemobile.fivespark E/AndroidRunti= me: FATAL EXCEPTION: main = Process: com.lifecyclemobile.fivespark, PID: 21930 = java.lang.RuntimeException: Failure delivering result ResultInfo{who=3D= @android:requestPermissions:, request=3D0, result=3D-1, data=3DIntent { act= =3Dandroid.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activit= y {com.lifecyclemobile.fivespark/com.lifecyclemobile.fivespark.MainActivity= }: java.lang.SecurityException: Permission Denial: starting Intent { act=3D= android.media.action.IMAGE_CAPTURE flg=3D0x3 cmp=3Dcom.google.android.Googl= eCamera/com.android.camera.CaptureActivity clip=3D{text/uri-list U:file:///= storage/emulated/0/Android/data/com.lifecyclemobile.fivespark/cache/.Pic.jp= g} (has extras) } from ProcessRecord{513cbe8 21930:com.lifecyclemobile.five= spark/u0a235} (pid=3D21930, uid=3D10235) with revoked permission android.pe= rmission.CAMERA = at android.app.ActivityThread.deliverResults(ActivityThread.java:36= 99) = at android.app.ActivityThread.handleSendResult(ActivityThread.java:= 3742) = at android.app.ActivityThread.-wrap16(ActivityThread.java) = at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1= 393) = at android.os.Handler.dispatchMessage(Handler.java:102) = at android.os.Looper.loop(Looper.java:148) = at android.app.ActivityThread.main(ActivityThread.java:5417) = at java.lang.reflect.Method.invoke(Native Method) = at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygot= eInit.java:726) = at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) = Caused by: java.lang.SecurityException: Permission Denial: starting In= tent { act=3Dandroid.media.action.IMAGE_CAPTURE flg=3D0x3 cmp=3Dcom.google.= android.GoogleCamera/com.android.camera.CaptureActivity clip=3D{text/uri-li= st U:file:///storage/emulated/0/Android/data/com.lifecyclemobile.fivespark/= cache/.Pic.jpg} (has extras) } from ProcessRecord{513cbe8 21930:com.lifecyc= lemobile.fivespark/u0a235} (pid=3D21930, uid=3D10235) with revoked permissi= on android.permission.CAMERA = at android.os.Parcel.readException(Parcel.java:1599) = at android.os.Parcel.readException(Parcel.java:1552) = at android.app.ActivityManagerProxy.startActivity(ActivityManagerNa= tive.java:2658) = at android.app.Instrumentation.execStartActivity(Instrumentation.ja= va:1507) = at android.app.Activity.startActivityForResult(Activity.java:3917) = at org.apache.cordova.CordovaActivity.startActivityForResult(Cordov= aActivity.java:332) = at android.app.Activity.startActivityForResult(Activity.java:3877) = at org.apache.cordova.CordovaInterfaceImpl.startActivityForResult(C= ordovaInterfaceImpl.java:63) = at org.apache.cordova.camera.CameraLauncher.takePicture(CameraLaunc= her.java:268) = at org.apache.cordova.camera.CameraLauncher.onRequestPermissionResu= lt(CameraLauncher.java:1205) = at org.apache.cordova.CordovaInterfaceImpl.onRequestPermissionResul= t(CordovaInterfaceImpl.java:182) = at org.apache.cordova.CordovaActivity.onRequestPermissionsResult(Co= rdovaActivity.java:498) = at android.app.Activity.dispatchRequestPermissionsResult(Activity.j= ava:6553) = at android.app.Activity.dispatchActivityResult(Activity.java:6432) = at android.app.ActivityThread.deliverResults(ActivityThread.java:36= 95) = at android.app.ActivityThread.handleSendResult(ActivityThread.java:= 3742)=C2=A0 = at android.app.ActivityThread.-wrap16(ActivityThread.java)=C2=A0 = at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1= 393)=C2=A0 = at android.os.Handler.dispatchMessage(Handler.java:102)=C2=A0 = at android.os.Looper.loop(Looper.java:148)=C2=A0 = at android.app.ActivityThread.main(ActivityThread.java:5417)=C2=A0 = at java.lang.reflect.Method.invoke(Native Method)=C2=A0 = at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygot= eInit.java:726)=C2=A0 = at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)=C2= =A0 {noformat} My app is using Android platform 5.0.0 and Camera plugin 2.0.0=20 If I go into settings and manually enable the camera permission for my app,= it works as expected. It also works as expected on older versions of Andr= oid. was: In my app I call the camera plugin like this: {code} return new Promise(function (resolve, reject) { //PhoneGap camera API navigator.camera.getPicture( function (imageLocalFilePath) { //Success callback =20 resolve(imageLocalFilePath); }, function (errorMessage) { //Error callback reject(new Error(errorMessage)); },=20 { //Image capture options quality: 50, destinationType: Camera.DestinationType.FILE_URI, encodingType: Camera.EncodingType.JPEG, targetWidth: targetWidth, targetHeight: targetHeight, mediaType: Camera.MediaType.PICTURE, correctOrientation: true, saveToPhotoAlbum: useCameraRoll }); }); {code} When this code runs on my Asus Nexus 7 running Android 6.0 (API23) I get th= e permission prompt as expected when I click the take photo button within t= he app for the first time. I click the "Accept" button but the app immedia= tely crashes with the following error, which seems to say that permission w= as denied: =20 12-17 14:27:52.083 21930-21930/com.lifecyclemobile.fivespark E/AndroidRunti= me: FATAL EXCEPTION: main = Process: com.lifecyclemobile.fivespark, PID: 21930 = java.lang.RuntimeException: Failure delivering result ResultInfo{who=3D= @android:requestPermissions:, request=3D0, result=3D-1, data=3DIntent { act= =3Dandroid.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activit= y {com.lifecyclemobile.fivespark/com.lifecyclemobile.fivespark.MainActivity= }: java.lang.SecurityException: Permission Denial: starting Intent { act=3D= android.media.action.IMAGE_CAPTURE flg=3D0x3 cmp=3Dcom.google.android.Googl= eCamera/com.android.camera.CaptureActivity clip=3D{text/uri-list U:file:///= storage/emulated/0/Android/data/com.lifecyclemobile.fivespark/cache/.Pic.jp= g} (has extras) } from ProcessRecord{513cbe8 21930:com.lifecyclemobile.five= spark/u0a235} (pid=3D21930, uid=3D10235) with revoked permission android.pe= rmission.CAMERA = at android.app.ActivityThread.deliverResults(ActivityThread.java:36= 99) = at android.app.ActivityThread.handleSendResult(ActivityThread.java:= 3742) = at android.app.ActivityThread.-wrap16(ActivityThread.java) = at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1= 393) = at android.os.Handler.dispatchMessage(Handler.java:102) = at android.os.Looper.loop(Looper.java:148) = at android.app.ActivityThread.main(ActivityThread.java:5417) = at java.lang.reflect.Method.invoke(Native Method) = at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygot= eInit.java:726) = at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) = Caused by: java.lang.SecurityException: Permission Denial: starting In= tent { act=3Dandroid.media.action.IMAGE_CAPTURE flg=3D0x3 cmp=3Dcom.google.= android.GoogleCamera/com.android.camera.CaptureActivity clip=3D{text/uri-li= st U:file:///storage/emulated/0/Android/data/com.lifecyclemobile.fivespark/= cache/.Pic.jpg} (has extras) } from ProcessRecord{513cbe8 21930:com.lifecyc= lemobile.fivespark/u0a235} (pid=3D21930, uid=3D10235) with revoked permissi= on android.permission.CAMERA = at android.os.Parcel.readException(Parcel.java:1599) = at android.os.Parcel.readException(Parcel.java:1552) = at android.app.ActivityManagerProxy.startActivity(ActivityManagerNa= tive.java:2658) = at android.app.Instrumentation.execStartActivity(Instrumentation.ja= va:1507) = at android.app.Activity.startActivityForResult(Activity.java:3917) = at org.apache.cordova.CordovaActivity.startActivityForResult(Cordov= aActivity.java:332) = at android.app.Activity.startActivityForResult(Activity.java:3877) = at org.apache.cordova.CordovaInterfaceImpl.startActivityForResult(C= ordovaInterfaceImpl.java:63) = at org.apache.cordova.camera.CameraLauncher.takePicture(CameraLaunc= her.java:268) = at org.apache.cordova.camera.CameraLauncher.onRequestPermissionResu= lt(CameraLauncher.java:1205) = at org.apache.cordova.CordovaInterfaceImpl.onRequestPermissionResul= t(CordovaInterfaceImpl.java:182) = at org.apache.cordova.CordovaActivity.onRequestPermissionsResult(Co= rdovaActivity.java:498) = at android.app.Activity.dispatchRequestPermissionsResult(Activity.j= ava:6553) = at android.app.Activity.dispatchActivityResult(Activity.java:6432) = at android.app.ActivityThread.deliverResults(ActivityThread.java:36= 95) = at android.app.ActivityThread.handleSendResult(ActivityThread.java:= 3742)=C2=A0 = at android.app.ActivityThread.-wrap16(ActivityThread.java)=C2=A0 = at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1= 393)=C2=A0 = at android.os.Handler.dispatchMessage(Handler.java:102)=C2=A0 = at android.os.Looper.loop(Looper.java:148)=C2=A0 = at android.app.ActivityThread.main(ActivityThread.java:5417)=C2=A0 = at java.lang.reflect.Method.invoke(Native Method)=C2=A0 = at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygot= eInit.java:726)=C2=A0 = at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)=C2= =A0 My app is using Android platform 5.0.0 and Camera plugin 2.0.0=20 If I go into settings and manually enable the camera permission for my app,= it works as expected. It also works as expected on older versions of Andr= oid. > App crash when using camera plugin with Android platform 5.0.0 on SDK23 d= evice > -------------------------------------------------------------------------= ----- > > Key: CB-10219 > URL: https://issues.apache.org/jira/browse/CB-10219 > Project: Apache Cordova > Issue Type: Bug > Components: Android, Plugin Camera > Affects Versions: 5.0.0 > Reporter: Karl Kemp > > In my app I call the camera plugin like this: > {code} > return new Promise(function (resolve, reject) { > //PhoneGap camera API > navigator.camera.getPicture( > function (imageLocalFilePath) { //Success callback > =20 > resolve(imageLocalFilePath); > }, > function (errorMessage) { //Error callback > reject(new Error(errorMessage)); > },=20 > { //Image capture options > quality: 50, > destinationType: Camera.DestinationType.FILE_URI, > encodingType: Camera.EncodingType.JPEG, > targetWidth: targetWidth, > targetHeight: targetHeight, > mediaType: Camera.MediaType.PICTURE, > correctOrientation: true, > saveToPhotoAlbum: useCameraRoll > }); > }); > {code} > When this code runs on my Asus Nexus 7 running Android 6.0 (API23) I get = the permission prompt as expected when I click the take photo button within= the app for the first time. I click the "Accept" button but the app immed= iately crashes with the following error, which seems to say that permission= was denied: =20 > {noformat} > 12-17 14:27:52.083 21930-21930/com.lifecyclemobile.fivespark E/AndroidRun= time: FATAL EXCEPTION: main > = Process: com.lifecyclemobile.fivespark, PID: 21930 > = java.lang.RuntimeException: Failure delivering result ResultInfo{who= =3D@android:requestPermissions:, request=3D0, result=3D-1, data=3DIntent { = act=3Dandroid.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to acti= vity {com.lifecyclemobile.fivespark/com.lifecyclemobile.fivespark.MainActiv= ity}: java.lang.SecurityException: Permission Denial: starting Intent { act= =3Dandroid.media.action.IMAGE_CAPTURE flg=3D0x3 cmp=3Dcom.google.android.Go= ogleCamera/com.android.camera.CaptureActivity clip=3D{text/uri-list U:file:= ///storage/emulated/0/Android/data/com.lifecyclemobile.fivespark/cache/.Pic= .jpg} (has extras) } from ProcessRecord{513cbe8 21930:com.lifecyclemobile.f= ivespark/u0a235} (pid=3D21930, uid=3D10235) with revoked permission android= .permission.CAMERA > = at android.app.ActivityThread.deliverResults(ActivityThread.java:= 3699) > = at android.app.ActivityThread.handleSendResult(ActivityThread.jav= a:3742) > = at android.app.ActivityThread.-wrap16(ActivityThread.java) > = at android.app.ActivityThread$H.handleMessage(ActivityThread.java= :1393) > = at android.os.Handler.dispatchMessage(Handler.java:102) > = at android.os.Looper.loop(Looper.java:148) > = at android.app.ActivityThread.main(ActivityThread.java:5417) > = at java.lang.reflect.Method.invoke(Native Method) > = at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zyg= oteInit.java:726) > = at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) > = Caused by: java.lang.SecurityException: Permission Denial: starting = Intent { act=3Dandroid.media.action.IMAGE_CAPTURE flg=3D0x3 cmp=3Dcom.googl= e.android.GoogleCamera/com.android.camera.CaptureActivity clip=3D{text/uri-= list U:file:///storage/emulated/0/Android/data/com.lifecyclemobile.fivespar= k/cache/.Pic.jpg} (has extras) } from ProcessRecord{513cbe8 21930:com.lifec= yclemobile.fivespark/u0a235} (pid=3D21930, uid=3D10235) with revoked permis= sion android.permission.CAMERA > = at android.os.Parcel.readException(Parcel.java:1599) > = at android.os.Parcel.readException(Parcel.java:1552) > = at android.app.ActivityManagerProxy.startActivity(ActivityManager= Native.java:2658) > = at android.app.Instrumentation.execStartActivity(Instrumentation.= java:1507) > = at android.app.Activity.startActivityForResult(Activity.java:3917= ) > = at org.apache.cordova.CordovaActivity.startActivityForResult(Cord= ovaActivity.java:332) > = at android.app.Activity.startActivityForResult(Activity.java:3877= ) > = at org.apache.cordova.CordovaInterfaceImpl.startActivityForResult= (CordovaInterfaceImpl.java:63) > = at org.apache.cordova.camera.CameraLauncher.takePicture(CameraLau= ncher.java:268) > = at org.apache.cordova.camera.CameraLauncher.onRequestPermissionRe= sult(CameraLauncher.java:1205) > = at org.apache.cordova.CordovaInterfaceImpl.onRequestPermissionRes= ult(CordovaInterfaceImpl.java:182) > = at org.apache.cordova.CordovaActivity.onRequestPermissionsResult(= CordovaActivity.java:498) > = at android.app.Activity.dispatchRequestPermissionsResult(Activity= .java:6553) > = at android.app.Activity.dispatchActivityResult(Activity.java:6432= ) > = at android.app.ActivityThread.deliverResults(ActivityThread.java:= 3695) > = at android.app.ActivityThread.handleSendResult(ActivityThread.jav= a:3742)=C2=A0 > = at android.app.ActivityThread.-wrap16(ActivityThread.java)=C2=A0 > = at android.app.ActivityThread$H.handleMessage(ActivityThread.java= :1393)=C2=A0 > = at android.os.Handler.dispatchMessage(Handler.java:102)=C2=A0 > = at android.os.Looper.loop(Looper.java:148)=C2=A0 > = at android.app.ActivityThread.main(ActivityThread.java:5417)=C2= =A0 > = at java.lang.reflect.Method.invoke(Native Method)=C2=A0 > = at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zyg= oteInit.java:726)=C2=A0 > = at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)= =C2=A0 > {noformat} > My app is using Android platform 5.0.0 and Camera plugin 2.0.0=20 > If I go into settings and manually enable the camera permission for my ap= p, it works as expected. It also works as expected on older versions of An= droid. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org For additional commands, e-mail: issues-help@cordova.apache.org