android - 有什么方法可以对所有级别的 api 进行安全的相机 Intent 吗?

标签 android android-intent camera android-4.2-jelly-bean

从 Froyo 到 Ice Cream Sandwich ,就是这样:

Intent intent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(), "test.jpg");
tempUriCameraDeviceNotSuported = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
tempUriCameraDeviceNotSuported);
startActivityForResult(intent, 0);

但是对于 Jelly Bean 来说它不起作用,你必须这样做:

Intent takePicture = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, 0);

我不确定这个错误是否只发生在果冻 bean 上,或者也取决于硬件型号。谷歌没有提及这个问题(为什么?为什么?)。有人知道我在哪里可以找到包含所有设备及其正确相机实现的列表?有人知道最好的方法吗?

最佳答案

您可以随时检查操作系统版本:

    if (android.os.Build.VERSION.SDK_INT >= 17) {
        Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(takePicture, 0);
    } else {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File file = new File(Environment.getExternalStorageDirectory(),
                "test.jpg");
        tempUriCameraDeviceNotSuported = Uri.fromFile(file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                tempUriCameraDeviceNotSuported);
        startActivityForResult(intent, 0);
    }

关于android - 有什么方法可以对所有级别的 api 进行安全的相机 Intent 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14382720/

相关文章:

java - AsyncHttpClient android 互联网问题

android - 如何确定 Android 设备的速度?

Android:如何防止服务在崩溃后重新启动?

Android - Intent 在我的应用程序之外开始一个 Activity

iphone - 如何在 iOS 中拍照并将其作为电子邮件附件发送

opencv - 良好的预制立体相机和机器人车辆建议

java - 在 AndroidStudio 的原始文件夹中播放 mp3 文件时,如何修复 java.lang.NullPointerException?

java - 绑定(bind)到第二个 Activity 的服务

android - 如何查找 Activity 是否是堆栈中的最后一个 Activity

python opencv live camera feed,缩放对象