Camera.TakePhoto () создает исключение безопасности в приложении Android, сгенерированном с помощью GX15 U12 (это не происходило до GX15 U11) - PullRequest
0 голосов
/ 10 октября 2018

Мы генерируем код Android с Genexus 15 U12 для панели, где мы делаем снимок.Когда панель открыта, приложение останавливается с ошибкой «исключение безопасности» со строкой ошибки «android.permission.CAMERA».Приложение никогда не запрашивает разрешение на доступ к камере.

Файл AndroidManifest.xml имеет такое разрешение.

Есть ли что-то еще, что нам нужно сделать, чтобы запросить разрешение перед входом в панель, где мы используем API?Camera.TakePhoto ()?

В logcat эта ошибка отображается

10-12 23: 42: 21.376: E / AndroidRuntime (2736): вызвано: java.lang.SecurityException: Отказ в разрешении: запуск 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} (имеет дополнительные функции)} из ProcessRecord {c7a0f9a 2736:ec.com.inalambrik.routik / u0a66} (pid = 2736, uid = 10066) с аннулированным разрешением android.permission.CAMERA

Такое поведение не происходило до GX15 U11

1 Ответ

0 голосов
/ 17 октября 2018

На внешнем объекте я создаю следующий метод:

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.";
    }
}
...