java - 图库按钮打开相机和图库

标签 java android camera

在“我的应用程序”中,用户可以将图像从图库或相机上传到我的服务器,然后将这些图像转换为 PDF

我用于访问相机和图库的按钮位于对话框中,

现在我的问题是,当您选择图库时,它会在图库顶部打开相机(因此,当您退出相机时,它会将您带到图库)

我正在使用 PhotoUtils 库进行图像处理

https://github.com/kosalgeek/PhotoUtil

这是我的对话框代码

AlertDialog.Builder pictureDialog = new AlertDialog.Builder(this);
        pictureDialog.setTitle("Select Action");
        String[] pictureDialogItems = {
                "Select photo from gallery",
                "Capture photo from camera"};
        pictureDialog.setItems(pictureDialogItems,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which) {
                            case 0:
                                if (ContextCompat.checkSelfPermission(SecondActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                                    getImageFromGallery();
                                } else {
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                        if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
                                            Toast.makeText(getApplicationContext(), "Permission Needed.", Toast.LENGTH_LONG).show();
                                        }
                                    }
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, PICK_IMAGE);
                                    }
                                }
                            case 1:
                                if (ContextCompat.checkSelfPermission(SecondActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                                    try {
                                        getImageFromCamera();
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }
                                } else {
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                        if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
                                            Toast.makeText(getApplicationContext(), "Permission Needed.", Toast.LENGTH_LONG).show();
                                        }
                                    }
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                        requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CAMERA);
                                    }
                                }
                                break;

                        }
                    }
                });
        pictureDialog.show();
    }

这是相机 Intent 代码

private void getImageFromCamera() throws IOException {

        Button upload=findViewById(R.id.upload);
        upload.setVisibility(View.VISIBLE);
        cameraPhoto = new CameraPhoto(getApplicationContext());
        Intent in = cameraPhoto.takePhotoIntent();
        startActivityForResult(in, REQUEST_CAMERA);
        Bungee.split(SecondActivity.this);

这是画廊 Intent 的代码

 private void getImageFromGallery() {
        Button upload=findViewById(R.id.upload);
        upload.setVisibility(View.VISIBLE);
        Intent intent=galleryPhoto.openGalleryIntent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(Intent.createChooser(intent, "Select Pictures"), PICK_IMAGE);
            Bungee.split(SecondActivity.this);

        }
    }

最佳答案

因为问题是您错过了 case 0Break 语句。这就是它执行这两种情况的原因。

代码应如下所示:

switch (which) 
{
     case 0:
        // Your logic
     break;
     case 1:
        // Your logic
     break;

     default:
     break;


}

关于java - 图库按钮打开相机和图库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58196771/

相关文章:

java - Android 值到 Sqlite 表

swift 3;照片未保存到照片库

c# - 统一: Record video from device camera

java - Spring 转换服务 - 从 List<A> 到 List<B>

java - 按单个数组上的 ArrayList 索引(行)对三个数组进行排序

android - 通过 ADB Android 发送 AT 命令

camera - Onvif 模拟器用于测试 Onvif Web 服务客户端

mysql - 如何在 Linux Mint 中使用 OpenJDK 连接 MySQL

java - 从 R.ID 接收微调器给出 NullPointerException

java - 如何修复 'Unable to start activity... null object reference'