Назначение видеокамеры по умолчанию для Android открывает изображение камеры

Я пытаюсь открыть видеокамеру Android по умолчанию из моего приложения, используя следующий код:

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent, 1);

Но на двух моих телефонах (Samsung Note 2 и Google Pixel) вместо этого открывается камера изображения. У меня есть это разрешение в моем манифесте:

<uses-permission android:name="android.permission.CAMERA"/>

Есть идеи, что вызывает эту проблему? Я также запросил разрешение во время выполнения.

3 ответа

Добавьте следующие права доступа CAPTURE_SECURE_VIDEO_OUTPUT и CAPTURE_VIDEO_OUTPUT

Вы должны добавить следующий код. Устройства имеют Android 6.0 или более позднюю версию.

if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        startActivityForResult(intent, 1);
    } else {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
    }

Если ваше приложение имеет разрешение на использование ХРАНЕНИЯ, мы открываем ХРАНЕНИЕ.

Если ваше приложение не имеет разрешения на использование STORAGE, мы открываем системный диалог. Результат из диалога вы можете увидеть в onRequestPermissionsResult. (Вы должны переопределить это в своей активности).

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
        @NonNull int[] grantResults) {
    if (requestCode == 2) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            startActivityForResult(intent, 1);
        }
    }
}

Я думаю, что вы должны извлечь следующие строки для частного метода.

private void takePhoto() {
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    startActivityForResult(intent, 1);
}

Для получения дополнительной информации см.: https://developer.android.com/training/permissions/requesting.html

Android 6.0 и более поздние версии запрашивают разрешения во время выполнения. Читайте официальный документ здесь: https://developer.android.com/training/permissions/requesting.html

Я надеюсь, что это помогает.

Другие вопросы по тегам