跪求大神帮忙解决以下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