Android 在图像视图中显示安卓系统中照相机拍摄的照片

Android 在图像视图中显示安卓系统中照相机拍摄的照片,android,imageview,android-photoview,Android,Imageview,Android Photoview,我正在尝试以下几点: 用我的Android设备拍照 使用步骤#1中拍摄的照片填充图像视图 我试着按照下面列出的教程进行操作 但似乎什么都不管用。这是我的密码 简化布局xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="ver

我正在尝试以下几点:

  • 用我的Android设备拍照
  • 使用步骤#1中拍摄的照片填充图像视图
  • 我试着按照下面列出的教程进行操作

  • 但似乎什么都不管用。这是我的密码

    简化布局xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="16dp">
          <ImageView
                    android:id="@+id/crime_photo"
                    android:layout_width="80dp"
                    android:layout_height="80dp"
                    android:background="@android:color/darker_gray"
                    android:contentDescription="@string/show_a_picture"
                    android:cropToPadding="true"
                    android:scaleType="centerInside" />
    
          <ImageButton
                    android:id="@+id/crime_camera"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:contentDescription="@string/take_a_picture"
                    android:src="@android:drawable/ic_menu_camera" />
    </LinearLayout>
    
    我的Android清单

    <provider
                android:name="android.support.v4.content.FileProvider"
                android:authorities="com.myproject.criminalintent.fileprovider"
                android:exported="false"
                android:grantUriPermissions="true">
            <meta-data android:resource="@xml/files" android:name="android.support.FILE_PROVIDER_PATHS"/>
            </provider>
    
    更新#2:拍摄完照片后,相机不会返回到活动结果,就像

  • 更新

    这就是对我有效的解决方案

      private void updatePhotoview() {
        if (mPhotoPath == null) {
          mPhotoPath = mCrime.getPhotoFilePath();
        }
        if (mPhotoPath == null) {
          return;
        }
        final Uri uri = Uri.parse("file://" + mPhotoPath);
        final ViewTreeObserver vo = mPhotoView.getViewTreeObserver();
        vo.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
          @Override
          public void onGlobalLayout() {
            int finalHeight = mPhotoView.getMeasuredHeight();
            int finalWidth = mPhotoView.getMeasuredWidth();
            Bitmap bitmap = PictureUtils.getScaledBitmap(uri, finalHeight, finalWidth, getActivity());
            mPhotoView.setImageBitmap(bitmap);
            CrimeLab.get(getActivity()).updateCrime(mCrime);
            if (Util.isOsVersionGreaterOrEqualTo(Build.VERSION_CODES.JELLY_BEAN)) {
              mPhotoView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
          }
        });
      }
    
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode != Activity.RESULT_OK) {
      return;
    }
    if (requestCode == REQUEST_CAMERA) {
       updatePhotoview();
    }
    }
    
    在XML中:

    <ImageView
        android:id="@+id/profilePic"
        android:layout_width="@dimen/sdp105"
        android:layout_height="@dimen/sdp105"
        android:layout_centerHorizontal="true"
        android:background="@drawable/border"
        android:src="@drawable/ic_profile" />
    
    <ImageButton
        android:id="@+id/crime_camera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/take_a_picture"
        android:src="@android:drawable/ic_menu_camera" /> 
    
    在XML中:

    <ImageView
        android:id="@+id/profilePic"
        android:layout_width="@dimen/sdp105"
        android:layout_height="@dimen/sdp105"
        android:layout_centerHorizontal="true"
        android:background="@drawable/border"
        android:src="@drawable/ic_profile" />
    
    <ImageButton
        android:id="@+id/crime_camera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/take_a_picture"
        android:src="@android:drawable/ic_menu_camera" /> 
    

    只要使用这个类。您可以获得权限,获取图像并在imageview中显示它。 如果需要任何帮助,请回复评论,谢谢

     public class CameraFragment extends android.support.v4.app.Fragment  {
    
        private String imageFilePath;
        private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
        private static final int REQUEST_PERMISSIONS_REQUEST_CODE = 34;
        private String visitingCard;
        private ImageView visitingCardImage;
    
        public CameraFragment() {
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            setHasOptionsMenu(true);
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            View view = inflater.inflate(R.layout.fragment_fragment_camera, container, false);
    
            if(checkPermission()){
                openCameraIntent();
            }
    
            visitingCardImage = view.findViewById(R.id.crime_photo);
            return view;
        }
    
        public static String getBase64String(Bitmap image) {
            String encodeString = null;
            try {
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
                byte[] byteArray = byteArrayOutputStream.toByteArray();
                encodeString = Base64.encodeToString(byteArray, Base64.DEFAULT);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return encodeString;
        }
    
    
    
    
        BitmapFactory.Options options;
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            //getActivity();
            String compressedPath = null;
            if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE && resultCode == RESULT_OK) {
                try {
                    ImageCompressor compressor = new ImageCompressor();
                    compressedPath = compressor.compressImage(imageFilePath, getActivity());
                    Bitmap bitmap = BitmapFactory.decodeFile(compressedPath);
                    visitingCardImage.setImageBitmap(bitmap);
                    visitingCard = getBase64String(bitmap);
                } catch (OutOfMemoryError e) {
                    try {
                        options = new BitmapFactory.Options();
                        options.inSampleSize = 2;
                        Bitmap bitmap =  BitmapFactory.decodeFile(compressedPath, options);
                        visitingCardImage.setImageBitmap(bitmap);
                        visitingCard = getBase64String(bitmap);
                        //return bitmap;
                    } catch(Exception el) {
                        el.printStackTrace();
                    }
                }
    
            } else {
                Toast.makeText(getActivity(), "cancelled image capture", Toast.LENGTH_SHORT).show();
            }
    
        }
    
        private void openCameraIntent() {
            Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (pictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
                File photoFile;
                try {
                    photoFile = createImageFile();
                } catch (IOException e) {
                    e.printStackTrace();
                    return;
                }
                Uri photoUri;
                if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) {
                    photoUri = Uri.fromFile(photoFile);
                } else {
                    photoUri = FileProvider.getUriForFile(getActivity(), getActivity().getPackageName() + ".provider", photoFile);
                }
                pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
                startActivityForResult(pictureIntent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE) {
                if (grantResults.length <= 0) {
                    Log.i(TAG, "User interaction was cancelled.");
                }else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    openCameraIntent();
                }
            }
        }
        //endregion
    
        private File createImageFile() throws IOException {
            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
            String imageFileName = "IMG_" + timeStamp + "_";
            File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
            File image = File.createTempFile(imageFileName, ".jpg", storageDir);
            imageFilePath = image.getAbsolutePath();
            return image;
        }
    
        private boolean checkPermission() {
    
            if (Build.VERSION.SDK_INT >= 23) {
                if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                    return true;
                } else {
                    requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS_REQUEST_CODE);
                    return false;
                }
            } else {
                return true;
            }
    
        }
    
    }
    
    公共类CameraFragment扩展了android.support.v4.app.Fragment{
    私有字符串imageFilePath;
    专用静态最终int摄像机\捕获\图像\请求\代码=100;
    私有静态最终整数请求\权限\请求\代码=34;
    私人字符串访问卡;
    私人图像查看访问CardImage;
    公共摄影机片段(){
    }
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    设置选项菜单(真);
    super.onCreate(savedInstanceState);
    }
    @凌驾
    创建视图上的公共视图(布局、充气机、视图组容器、,
    Bundle savedInstanceState){
    视图=充气机。充气(R.layout.fragment\u fragment\u摄像机,容器,假);
    if(checkPermission()){
    openCameraIntent();
    }
    visitingCardImage=view.findViewById(R.id.crime\U照片);
    返回视图;
    }
    公共静态字符串getBase64String(位图图像){
    字符串encodeString=null;
    试一试{
    ByteArrayOutputStream ByteArrayOutputStream=新建ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
    字节[]byteArray=byteArrayOutputStream.toByteArray();
    encodeString=Base64.encodeToString(byteArray,Base64.DEFAULT);
    }捕获(例外e){
    e、 printStackTrace();
    }
    返回编码字符串;
    }
    选项;
    @凌驾
    ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
    //getActivity();
    字符串compressedPath=null;
    if(requestCode==相机\拍摄\图像\请求\代码和结果代码==结果\确定){
    试一试{
    ImageCompressor=新的ImageCompressor();
    compressedPath=compressor.compressImage(imageFilePath,getActivity());
    位图位图=位图工厂.decodeFile(压缩路径);
    visitingCardImage.setImageBitmap(位图);
    visitingCard=getBase64String(位图);
    }捕获(OutOfMemory错误){
    试一试{
    options=新的BitmapFactory.options();
    options.inSampleSize=2;
    位图位图=BitmapFactory.decodeFile(压缩路径,选项);
    visitingCardImage.setImageBitmap(位图);
    visitingCard=getBase64String(位图);
    //返回位图;
    }捕获(异常el){
    el.printStackTrace();
    }
    }
    }否则{
    Toast.makeText(getActivity(),“取消图像捕获”,Toast.LENGTH_SHORT.show();
    }
    }
    私人空旷露天活动帐篷(){
    意向图片内容=新意向(MediaStore.ACTION\u IMAGE\u CAPTURE);
    if(PictureContent.resolveActivity(getActivity().getPackageManager())!=null){
    文件照片文件;
    试一试{
    photoFile=createImageFile();
    }捕获(IOE异常){
    e、 printStackTrace();
    返回;
    }
    Uri-photoUri;
    if(android.os.Build.VERSION.SDK_INT=23){
    if(ActivityCompat.checkSelfPermission(getActivity(),Manifest.permission.CAMERA)==PackageManager.permission\u已授予
    &&ActivityCompat.checkSelfPermission(getActivity(),Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.permission_已授予){
    返回true;
    }否则{
    requestPermissions(新字符串[]{Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_PERMISSIONS_REQUEST_CODE);
    返回false;
    }
    }否则{
    返回true;
    }
    }
    }
    
    在清单文件中添加

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

    只需使用此类。您可以获得权限,获取图像并在imageview中显示。 如果需要任何帮助,请回复评论,谢谢

     public class CameraFragment extends android.support.v4.app.Fragment  {
    
        private String imageFilePath;
        private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
        private static final int REQUEST_PERMISSIONS_REQUEST_CODE = 34;
        private String visitingCard;
        private ImageView visitingCardImage;
    
        public CameraFragment() {
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            setHasOptionsMenu(true);
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            View view = inflater.inflate(R.layout.fragment_fragment_camera, container, false);
    
            if(checkPermission()){
                openCameraIntent();
            }
    
            visitingCardImage = view.findViewById(R.id.crime_photo);
            return view;
        }
    
        public static String getBase64String(Bitmap image) {
            String encodeString = null;
            try {
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
                byte[] byteArray = byteArrayOutputStream.toByteArray();
                encodeString = Base64.encodeToString(byteArray, Base64.DEFAULT);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return encodeString;
        }
    
    
    
    
        BitmapFactory.Options options;
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            //getActivity();
            String compressedPath = null;
            if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE && resultCode == RESULT_OK) {
                try {
                    ImageCompressor compressor = new ImageCompressor();
                    compressedPath = compressor.compressImage(imageFilePath, getActivity());
                    Bitmap bitmap = BitmapFactory.decodeFile(compressedPath);
                    visitingCardImage.setImageBitmap(bitmap);
                    visitingCard = getBase64String(bitmap);
                } catch (OutOfMemoryError e) {
                    try {
                        options = new BitmapFactory.Options();
                        options.inSampleSize = 2;
                        Bitmap bitmap =  BitmapFactory.decodeFile(compressedPath, options);
                        visitingCardImage.setImageBitmap(bitmap);
                        visitingCard = getBase64String(bitmap);
                        //return bitmap;
                    } catch(Exception el) {
                        el.printStackTrace();
                    }
                }
    
            } else {
                Toast.makeText(getActivity(), "cancelled image capture", Toast.LENGTH_SHORT).show();
            }
    
        }
    
        private void openCameraIntent() {
            Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (pictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
                File photoFile;
                try {
                    photoFile = createImageFile();
                } catch (IOException e) {
                    e.printStackTrace();
                    return;
                }
                Uri photoUri;
                if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) {
                    photoUri = Uri.fromFile(photoFile);
                } else {
                    photoUri = FileProvider.getUriForFile(getActivity(), getActivity().getPackageName() + ".provider", photoFile);
                }
                pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
                startActivityForResult(pictureIntent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE) {
                if (grantResults.length <= 0) {
                    Log.i(TAG, "User interaction was cancelled.");
                }else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    openCameraIntent();
                }
            }
        }
        //endregion
    
        private File createImageFile() throws IOException {
            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
            String imageFileName = "IMG_" + timeStamp + "_";
            File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
            File image = File.createTempFile(imageFileName, ".jpg", storageDir);
            imageFilePath = image.getAbsolutePath();
            return image;
        }
    
        private boolean checkPermission() {
    
            if (Build.VERSION.SDK_INT >= 23) {
                if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                    return true;
                } else {
                    requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS_REQUEST_CODE);
                    return false;
                }
            } else {
                return true;
            }
    
        }
    
    }
    
    公共类CameraFragment扩展了android.support.v4.app.Fragment{
    私有字符串imageFilePath;
    专用静态最终int摄像机\捕获\图像\请求\代码=100;
    私有静态最终整数请求\权限\请求\代码=34;
    私人字符串访问卡;
    私人图像查看访问CardImage;
    公共摄影机片段(){
    }
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    设置选项菜单(真);
    super.onCreate(savedInstanceState);
    }
    @凌驾
    创建视图上的公共视图(布局、充气机、视图组容器、,
    Bundle savedInstanceState){
    视图=充气机。充气(R.layout.fragment\u fragment\u摄像机,容器,假);
    if(checkPermission()){
    openCameraIntent();
    }
    visitingCardImage=view.findViewById(R.id.crime\U照片);
    返回视图;
    }
    公共静态字符串getBase64String(位图图像){
    字符串encodeString=null;
    试一试{
    ByteArrayOutputStream ByteArrayOutputStream=新建ByteArrayOutputStream();
    image.compress(位图.CompressF
    
     public class CameraFragment extends android.support.v4.app.Fragment  {
    
        private String imageFilePath;
        private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
        private static final int REQUEST_PERMISSIONS_REQUEST_CODE = 34;
        private String visitingCard;
        private ImageView visitingCardImage;
    
        public CameraFragment() {
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            setHasOptionsMenu(true);
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            View view = inflater.inflate(R.layout.fragment_fragment_camera, container, false);
    
            if(checkPermission()){
                openCameraIntent();
            }
    
            visitingCardImage = view.findViewById(R.id.crime_photo);
            return view;
        }
    
        public static String getBase64String(Bitmap image) {
            String encodeString = null;
            try {
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
                byte[] byteArray = byteArrayOutputStream.toByteArray();
                encodeString = Base64.encodeToString(byteArray, Base64.DEFAULT);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return encodeString;
        }
    
    
    
    
        BitmapFactory.Options options;
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            //getActivity();
            String compressedPath = null;
            if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE && resultCode == RESULT_OK) {
                try {
                    ImageCompressor compressor = new ImageCompressor();
                    compressedPath = compressor.compressImage(imageFilePath, getActivity());
                    Bitmap bitmap = BitmapFactory.decodeFile(compressedPath);
                    visitingCardImage.setImageBitmap(bitmap);
                    visitingCard = getBase64String(bitmap);
                } catch (OutOfMemoryError e) {
                    try {
                        options = new BitmapFactory.Options();
                        options.inSampleSize = 2;
                        Bitmap bitmap =  BitmapFactory.decodeFile(compressedPath, options);
                        visitingCardImage.setImageBitmap(bitmap);
                        visitingCard = getBase64String(bitmap);
                        //return bitmap;
                    } catch(Exception el) {
                        el.printStackTrace();
                    }
                }
    
            } else {
                Toast.makeText(getActivity(), "cancelled image capture", Toast.LENGTH_SHORT).show();
            }
    
        }
    
        private void openCameraIntent() {
            Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (pictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
                File photoFile;
                try {
                    photoFile = createImageFile();
                } catch (IOException e) {
                    e.printStackTrace();
                    return;
                }
                Uri photoUri;
                if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) {
                    photoUri = Uri.fromFile(photoFile);
                } else {
                    photoUri = FileProvider.getUriForFile(getActivity(), getActivity().getPackageName() + ".provider", photoFile);
                }
                pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
                startActivityForResult(pictureIntent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE) {
                if (grantResults.length <= 0) {
                    Log.i(TAG, "User interaction was cancelled.");
                }else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    openCameraIntent();
                }
            }
        }
        //endregion
    
        private File createImageFile() throws IOException {
            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
            String imageFileName = "IMG_" + timeStamp + "_";
            File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
            File image = File.createTempFile(imageFileName, ".jpg", storageDir);
            imageFilePath = image.getAbsolutePath();
            return image;
        }
    
        private boolean checkPermission() {
    
            if (Build.VERSION.SDK_INT >= 23) {
                if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                    return true;
                } else {
                    requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS_REQUEST_CODE);
                    return false;
                }
            } else {
                return true;
            }
    
        }
    
    }
    
      <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />