2017-08-07 3 views
1

CodenameOne Capture.capturePhoto(1000, -1) semble fonctionner correctement avec les autorisations Android targetSDKVersion 21. Mais sur 23 il demande à tort unCodenameOne: Capture.capturePhoto() demande une autorisation incorrecte?

Autoriser l'accès [...] aux photos et aux fichiers sur votre appareil?

la permission de l'utilisateur, mais échoue à cause du android.permission.CAMERA manquant.

(Le simulateur en manque d'une caméra demande des fichiers multimédias à la place - pourrait-il y avoir quelque chose mêlé?)

UPDATE (sortie DDMS)

08-09 15:13:47.866: W/ActivityManager(1676): Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x4000003 cmp=com.sec.android.app.camera/.Camera clip={text/uri-list U:file:///storage/emulated/0/Pictures/XXX/IMG_20170809_151347.jpg} (has extras) } from ProcessRecord{f736f3f 20079:com.XXX/u0a338} (pid=20079, uid=10338) with revoked permission android.permission.CAMERA 
08-09 15:13:47.876: W/System.err(20079): java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x4000003 cmp=com.sec.android.app.camera/.Camera clip={text/uri-list U:file:///storage/emulated/0/Pictures/XXX/IMG_20170809_151347.jpg} (has extras) } from ProcessRecord{f736f3f 20079:com.XXX/u0a338} (pid=20079, uid=10338) with revoked permission android.permission.CAMERA 
08-09 15:13:47.896: E/ConfigFileUtils(3071): Failed to read config file: /data/data/com.google.android.gms/app_chimera/current_modulesets.pb: open failed: ENOENT (No such file or directory) 
08-09 15:13:47.906: W/System.err(20079): at android.os.Parcel.readException(Parcel.java:1620) 
08-09 15:13:47.906: W/System.err(20079): at android.os.Parcel.readException(Parcel.java:1573) 
08-09 15:13:47.906: W/System.err(20079): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3131) 
08-09 15:13:47.906: W/System.err(20079): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1540) 
08-09 15:13:47.906: W/System.err(20079): at android.app.Activity.startActivityForResult(Activity.java:4283) 
08-09 15:13:47.906: W/System.err(20079): at android.app.Activity.startActivityForResult(Activity.java:4230) 
08-09 15:13:47.906: W/System.err(20079): at com.codename1.impl.android.CodenameOneActivity.startActivityForResult(CodenameOneActivity.java:576) 
08-09 15:13:47.906: W/System.err(20079): at com.codename1.impl.android.c.a(AndroidImplementation.java:5869) 
08-09 15:13:47.906: W/System.err(20079): at com.codename1.u.p.b(Display.java:3109) 
08-09 15:13:47.906: W/System.err(20079): at com.codename1.b.a.a(Capture.java:77) 
08-09 15:13:47.906: W/System.err(20079): at com.codename1.b.a.a(Capture.java:125) 
08-09 15:13:47.906: W/System.err(20079): at com.grandgreat.XXX.ai.b(SettingsForm.java:98) 

(SettingsForm.java:98 String path = Capture.capturePhoto(1000, -1);)

+0

Je suggère de fournir la panne que vous avez par exemple. empiler traces DDMS sortie etc. –

Répondre

0

Cela aurait dû fonctionner puisque nous utilisons un Intent qui fait tout le travail de capture de sorte que nous ne demandons même pas cette permission. Voir le code here.

Cependant, comme l'a expliqué cette pile question de trop-plein Android M Camera Intent + permission bug?

Si l'application dispose d'une autorisation de la caméra l'intention pourrait ne pas empêcher ce qui semble être une mauvaise conduite. Encore une fois un horrible bord du système d'intention ...

La solution de contournement est en effet de demander l'autorisation de la caméra que nous allons ajouter pour la mise à jour demain (11 août 2017).

+0

J'ai ajouté la sortie DDMS à la question – user2661619

+0

Merci, il est maintenant clair pourquoi il se brise pour vous et pas pour les autres, cela dépend des autorisations de l'application existantes qui sont probablement différentes ici. Mise à jour post avec la réponse –

+0

Je suis revenu à ceci et ai fait plus de lecture. Je ne vois pas pourquoi cela échoue pour vous en premier lieu. Qu'avez-vous dans vos conseils de construction? –