调用相册与相机获取--路径
来源:互联网 发布:单位网络监控怎么办 编辑:程序博客网 时间:2024/06/06 07:16
直接开说,先检查权限,然后启动弹框
//检查权限问题 private void inspectPermission() { // 如果SDK版本大于或等于23才需要检查权限,否则直接拨弹出图库 if (Build.VERSION.SDK_INT >= 23) { // 检查权限是否允许 if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { Log.e("TAG", "没有权限"); // 没有权限,考虑是否需要解释为什么需要这个权限 /*申请权限的解释,该方法在用户上一次已经拒绝过你的这个权限申请时使用。 * 也就是说,用户已经拒绝一次了,你又弹个授权框,你需要给用户一个解释,为什么要授权*/ if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { Log.e("TAG", "没有权限,用户上次已经拒绝该权限,解释为什么需要这个权限"); // Show an expanation to the user *asynchronously* -- don't block this thread //waiting for the user's response! After the user // sees the explanation, try again to request the permission. Toast.makeText(this, "需要权限才能上传图片哦", Toast.LENGTH_SHORT).show(); } else { Log.e("TAG", "没有权限,申请权限"); // 申请权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CALL_PHONE); } } else { Log.e("ydp", "有权限,执行相关操作"); // 有权限,执行相关操作 toPic(); } //当是6.0以下版本时直接执行弹出拍照图库窗口 } else { toPic(); } }
//去图库的方法 private void toPic() { // 写一个去图库选图的Intent Intent intent1 = new Intent(Intent.ACTION_PICK); intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); // 写一个打开系统拍照程序的intent Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), System.currentTimeMillis() + ".jpg"); cameraPath = file.getAbsolutePath(); photoUri = Uri.fromFile(file); intent2.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); // Intent选择器 Intent intent = Intent.createChooser(intent1, "选择头像..."); intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{intent2}); startActivityForResult(intent, 100); }
这里是不同意权限的时候的回调
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CALL_PHONE) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Log.e(TAG, "权限同意"); toPic(); } else { Log.e(TAG, "权限拒绝"); Toast.makeText(this, "权限拒绝", Toast.LENGTH_SHORT).show(); } return; } }
接下来是回调了或去路径
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口 ContentResolver resolver = getContentResolver();// //此处的用于判断接收的Activity是不是你想要的那个 // 作为头像的图片在设备上的本地路径是什么(/sdcard/XXX/XXXX.jpg) String filePath = ""; if (data != null) { // 图片是用户从图库选择得到的 // uri代表用户选取的图片在MediaStroe中存储的位置 Uri uri = data.getData(); // 利用ContentResolver查找uri所对应图片在设备上的真实路径 Cursor cursor = getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA}, null, null, null); cursor.moveToNext(); filePath = cursor.getString(0); Log.i("hxl", "filePath========" + filePath); //显得到bitmap图片 Bitmap bm = null; try { bm = MediaStore.Images.Media.getBitmap(resolver, uri); } catch (IOException e) { e.printStackTrace(); } imgFileName = filePath.substring(filePath.lastIndexOf("/") + 1); Log.i("hxl", "imgFileName========" + imgFileName); File file = new File(filePath); Log.e("ydp", "img========================================" + filePath); Map<String, Object> hashMap = new HashMap<>(); hashMap.put("seq", EMClient.getInstance().getCurrentUser()); post_file("http://192.168.1.180:8082/rest/user/fileUpload", hashMap, file, bm); cursor.close(); } else { /// 这是相机获取的路劲的代码 ///这的在源码有这里我就补贴出来了 }}
这是源码地址 Demo
0 0
- 调用相册与相机获取--路径
- android 调用相机和获取相册图片
- iOS 调用相机,获取相册,截取头像
- iOS 最新版本调用相机与相册
- iOS 获取相机与相册,上传服务器
- Android图片系列(1)-------调用系统相册与相机获取图片
- 安卓调用手机的相册与相机获取图片并适配到控件
- Android调用相机,相册
- 调用相机,相册,裁剪
- 调用系统相机相册
- 调用相册和相机
- 调用系统相册,相机
- 调用相机和相册
- 调用相机,相册。显示
- 调用系统相机相册
- 调用相册,相机
- 调用相册相机
- 获取相册相机,定位
- maven导出依赖的jar包
- POSTMAN test
- php 常用函数
- [Android crash report]Windows部署ACRA
- html打印A4长宽设置
- 调用相册与相机获取--路径
- java org.hibernate.validator 后台参数验证
- 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
- STL 一级配置器
- 线性表学习(2)
- 基于2-channel network的图片相似度判别_2015Learning to Compare Image Patches via Convolutional Neural Networks
- ubuntu 安装配置 gerrit 服务器 [ HTTP 认证 ]
- Watch Out for Malicious Messages
- 341. Flatten Nested List Iterator