Android 7.0调用相机崩溃
来源:互联网 发布:sql的意义和应用 编辑:程序博客网 时间:2024/06/05 09:36
错误提示:
android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_1041503431.jpg exposed beyond app through ClipData.Item.getUri()
处理方式
/** * Open camera */private void showCameraAction() { if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, getString(R.string.mis_permission_rationale_write_storage), REQUEST_STORAGE_WRITE_ACCESS_PERMISSION); } else { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (intent.resolveActivity(getActivity().getPackageManager()) != null) { try { mTmpFile = FileUtils.createTmpFile(getActivity()); } catch (IOException e) { e.printStackTrace(); } if (mTmpFile != null && mTmpFile.exists()) { /*获取当前系统的android版本号*/ int currentapiVersion = android.os.Build.VERSION.SDK_INT; Log.e("currentapiVersion","currentapiVersion====>"+currentapiVersion); if (currentapiVersion<24){ intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile)); startActivityForResult(intent, REQUEST_CAMERA); }else { ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, mTmpFile.getAbsolutePath()); Uri uri = getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(intent, REQUEST_CAMERA); } } else { Toast.makeText(getActivity(), R.string.mis_error_image_not_exist, Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(getActivity(), R.string.mis_msg_no_camera, Toast.LENGTH_SHORT).show(); } }}
import android.content.Context;import android.content.pm.PackageManager;import android.os.Environment;import android.text.TextUtils;import java.io.File;import java.io.IOException;import static android.os.Environment.MEDIA_MOUNTED;/** * 文件操作类 * */public class FileUtils { private static final String JPEG_FILE_PREFIX = "IMG_"; private static final String JPEG_FILE_SUFFIX = ".jpg"; public static File createTmpFile(Context context) throws IOException{ File dir = null; if(TextUtils.equals(Environment.getExternalStorageState(), Environment.MEDIA_MOUNTED)) { dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); if (!dir.exists()) { dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM + "/Camera"); if (!dir.exists()) { dir = getCacheDirectory(context, true); } } }else{ dir = getCacheDirectory(context, true); } return File.createTempFile(JPEG_FILE_PREFIX, JPEG_FILE_SUFFIX, dir); } private static final String EXTERNAL_STORAGE_PERMISSION = "android.permission.WRITE_EXTERNAL_STORAGE"; public static File getCacheDirectory(Context context) { return getCacheDirectory(context, true); } public static File getCacheDirectory(Context context, boolean preferExternal) { File appCacheDir = null; String externalStorageState; try { externalStorageState = Environment.getExternalStorageState(); } catch (NullPointerException e) { // (sh)it happens (Issue #660) externalStorageState = ""; } catch (IncompatibleClassChangeError e) { // (sh)it happens too (Issue #989) externalStorageState = ""; } if (preferExternal && MEDIA_MOUNTED.equals(externalStorageState) && hasExternalStoragePermission(context)) { appCacheDir = getExternalCacheDir(context); } if (appCacheDir == null) { appCacheDir = context.getCacheDir(); } if (appCacheDir == null) { String cacheDirPath = "/data/data/" + context.getPackageName() + "/cache/"; appCacheDir = new File(cacheDirPath); } return appCacheDir; } public static File getIndividualCacheDirectory(Context context, String cacheDir) { File appCacheDir = getCacheDirectory(context); File individualCacheDir = new File(appCacheDir, cacheDir); if (!individualCacheDir.exists()) { if (!individualCacheDir.mkdir()) { individualCacheDir = appCacheDir; } } return individualCacheDir; } private static File getExternalCacheDir(Context context) { File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data"); File appCacheDir = new File(new File(dataDir, context.getPackageName()), "cache"); if (!appCacheDir.exists()) { if (!appCacheDir.mkdirs()) { return null; } try { new File(appCacheDir, ".nomedia").createNewFile(); } catch (IOException e) { } } return appCacheDir; } private static boolean hasExternalStoragePermission(Context context) { int perm = context.checkCallingOrSelfPermission(EXTERNAL_STORAGE_PERMISSION); return perm == PackageManager.PERMISSION_GRANTED; }}
3 0
- Android 7.0调用相机崩溃
- Android 7.0调用相机崩溃
- android 7.0调用相机 崩溃
- Android 7.0系统调用相机崩溃
- Android 7.0系统调用相机崩溃
- android 7.0 调用系统相机崩溃问题
- Android 7.0以上调用相机崩溃
- Android 7.0 调用系统相机崩溃解决 android.os.FileUriException
- android 7.0 调用系统相机崩溃的解决方案
- 关于android 7.0调用相机拍照崩溃问题
- 关于android 7.0调用相机拍照崩溃问题
- Android 6.0+ 相机图册调用崩溃解决方案
- Android 7.0调用相机方法
- android 7.0调用相机权限
- Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException
- Android 7.0 系统相机崩溃解决android.os.FileUriExposedException
- Android 7.0 调取相机崩溃 android.os.FileUriExposedException
- ios10调用相机崩溃!(设置权限)
- C++智能指针简单剖析
- 基于邻接矩阵的有回溯最小堆优化的单源最短路Dijkstra算法
- Linux之split命令详解
- Java-6.22-接口多态性
- JAVA中重要的8张图
- Android 7.0调用相机崩溃
- 关于Android的.so文件你所需要知道的
- Spark java程序入门(二)创建RDD与查看RDD内容
- JAVA成员变量和局部变量的区别
- 前台和后台验证的必要性经验总结
- stl-红黑树容器01
- 安卓开发之广播机制
- Android进阶之自定义view(二)
- 欢迎使用CSDN-markdown编辑器