Назначение видеокамеры по умолчанию для 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
Я надеюсь, что это помогает.