其他分享
首页 > 其他分享> > 跪求大神帮忙解决以下android手机拍照功能的问题,使用provider会导致APP打开时闪退,进不去

跪求大神帮忙解决以下android手机拍照功能的问题,使用provider会导致APP打开时闪退,进不去

作者:互联网

跪求大神帮忙解决以下android手机拍照功能的问题,使用provider会导致APP打开时闪退,进不去!!1

在Manifest中添加了provider和相机对应的用户权限:

  <application
    <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.example.myapplication.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"/>
    </provider>
</application>

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

在MainActivity的onCreate中监听进入拍照功能的按钮(mTakePhoto)是否被按下

 mTakePhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//          //以下是最开始使用provider的拍照代码,在Manifest中加了provider后会导致APP闪退,注释掉provider后可以进入APP,但点击拍照按钮后也会闪
//                //创建file对象,用于存储拍照后的图片;
               File outputImage = new File(getExternalCacheDir(), "output_image.jpg");
               try {
                    if (outputImage.exists()) {
                        outputImage.delete();
                    }
                    outputImage.createNewFile();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if (Build.VERSION.SDK_INT >= 24) {
                //兼容android7.0 使用共享文件的形式
                    imageUri = FileProvider.getUriForFile(MainActivity.this,
                            "com.example.myapplication.fileprovider", outputImage);
                } else {
                    imageUri = Uri.fromFile(outputImage);
                }
                //启动相机程序
                Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri );
                startActivityForResult(intent, TAKE_PHOTO);
            }
        });

在下面这个目录下创建了file_path.xml文件,文件内容见下方代码
在这里插入图片描述

<?xml version = "1.0" encoding = "utf-8"?>
<paths xmlns:android = "http://schemas.android.com/apk/res/android">
    <external-path name = "my_images" path = "/sdcard/DCIM/camera"></external-path>
    </paths>

APP的界面如下图,忽略其他功能,只需看take_photo,正常的逻辑是点击该按钮进入相机功能,但如果如上述添加provider,根本连APP都打不开,这个页面是在manifest中注释掉provider那一段代码后才能看到的,但点击take_photo又会闪退,不知道是哪里错了,还请各位大神赐教。这是我第一次搞android开发,以前完全没接触过,代码也都是按照网上的方法弄的,请大神们解释的时候说详细点,谢谢!
在这里插入图片描述

标签:拍照,大神,APP,provider,android,时闪退,outputImage
来源: https://blog.csdn.net/kuangling1212/article/details/99656128