Camera.TakePhoto () 在使用 GX15 U12 生成的 Android 应用程序中产生安全异常(直到 GX15 U11 才发生这种情况)

Camera.TakePhoto () produces security exception in Android application generated with GX15 U12 (this did not happen until GX15 U11)

我们正在使用 Genexus 15 U12 为我们拍照的面板生成 android 代码。当面板打开时,应用程序停止并出现 "security exception" 错误,错误行 "android.permission.CAMERA"。应用程序从不请求访问相机的权限。

AndroidManifest.xml 文件有此权限。

在进入我们使用 api Camera.TakePhoto () 的面板之前,我们还需要做些什么来请求权限吗?

在 logcat 上显示此错误

10-12 23:42:21.376: E/AndroidRuntime(2736): Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x80003 cmp=com.android.camera/.Camera clip={text/uri-list U:content://ec.com.inalambrik.routik.file_provider/external/Android/data/ec.com.inalambrik.routik/files/Pictures/2018-10-12--23-42-21-3331914767202.jpg} (has extras) } from ProcessRecord{c7a0f9a 2736:ec.com.inalambrik.routik/u0a66} (pid=2736, uid=10066) with revoked permission android.permission.CAMERA

此行为直到 GX15 U11 才出现

在外部对象上,我创建了以下方法:

public static String askForPermission(){
    try{            
        Log.d("PERMISSION", "askForPermission" );
        // Context context = MyApplication.getInstance();
        Context context = MyApplication.getAppContext();        

        // Launch Settings screen.
        /*Intent intent = new Intent();
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        Uri uri = Uri.fromParts("package", context.getPackageName(), null);
        intent.setData(uri);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);*/

        Intent intent = new Intent(context, InalambrikRequestPermissionActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

        return "";
    }catch(Exception e){
        e.printStackTrace();
        return "Por favor intentar nuevamente. Si el problema persiste, debe ir Ajustes del dispositivo > Aplicaciones > Ir a detalles de la aplicación > Habilitar los permisos manualmente.";
    }
}