我正在尝试使用以下代码从我的应用中打开Android默认视频摄像头:
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent, 1);
但在我的两部手机(Samsung Note 2和Google Pixel)上,它会打开相机。我在我的清单中有这个许可:
<uses-permission android:name="android.permission.CAMERA"/>
任何想法导致此问题的原因是什么? 我还在运行时请求了许可。
答案 0 :(得分:0)
您必须添加下一个代码。设备具有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,我们会打开STORAGE。
如果您的应用没有使用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
答案 1 :(得分:0)
添加以下权限CAPTURE_SECURE_VIDEO_OUTPUT和CAPTURE_VIDEO_OUTPUT
答案 2 :(得分:0)
Android 6.0及更高版本要求在运行时询问权限。阅读官方文档:https://developer.android.com/training/permissions/requesting.html
我希望它有所帮助。