2017-08-07 65 views
1

CodenameOne的Capture.capturePhoto(1000, -1)似乎与Android targetSDKVersion 21权限正常工作。但23日它错误地请求CodenameOne:Capture.capturePhoto()请求错误的权限?

允许访问照片媒体和设备上的文件?

来自用户的权限,但由于缺少android.permission.CAMERA而失败。

(在缺乏一个摄像头的模拟器请求媒体文件,而不是 - 莫不是东西混在一起?)

UPDATE(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

我建议您提供失败,例如,堆栈跟踪DDMS输出等。 –

回答

0

这应该起作用,因为我们使用了一个Intent,它执行所有捕获工作,所以我们甚至不需要该许可。请参阅代码here

然而,正如这个堆栈溢出问题Android M Camera Intent + permission bug?

如果应用程序有一个摄像头许可的意图可能无法阻止这似乎是一个错误行为解释。再次是意图系统的可怕边缘案例...

解决方法的确是提示我们明天(2017年8月11日)为更新而添加的相机权限。

+0

我将DDMS输出添加到问题 – user2661619

+0

谢谢,现在清楚它为什么会打破你而不是别人,它取决于现有的应用程序权限,这可能在这里有所不同。更新后回答 –

+0

我恢复了这一点,并做了更多的阅读。我不明白为什么这首先失败了。你有什么建立提示? –