因为android经常使用到添加图片功能,每次自己写都太麻烦,再加上动态权限的获取,非常容易弄混出错,所以整理一下,以后都这么用,慢慢熟悉。
1、图片选择框架用知乎的 Matisse
GitHub - zhihu/Matisse: A well-designed local image and video selector for Android
Matisse 知乎图片选择框架 - 简书
2、动态权限申请用?XmPermissions
GitHub - lhm0603/XmPermissionsProject: Android动态权限申请框架
Android动态权限申请框架_h461415832的博客-CSDN博客_android 权限申请框架
注意事项 : Matisse 需要自己额外再配置provider ,还要自己引入glide依赖,在调用拍照功能的时候 ,用如下方法
MediaStoreCompat mediaStoreCompat = new MediaStoreCompat(MainActivity.this);
mediaStoreCompat.setCaptureStrategy(new CaptureStrategy(true, "PhotoPicker"));//自己设置的provider属性
mediaStoreCompat.dispatchCaptureIntent(MainActivity.this, 2016);
Uri currentPhotoUri = mediaStoreCompat.getCurrentPhotoUri();
String currentPhotoPath = mediaStoreCompat.getCurrentPhotoPath();
Log.d("lol", "onClick: currentPhotoUri " + currentPhotoUri);
Log.d("lol", "onClick: currentPhotoPath " + currentPhotoPath);
//uri 和 path 都能用
Glide.with(MainActivity.this).load(currentPhotoPath).into(imageView);
不要从?onActivityResult 方法里拿data ,因为data里是空的,这是因为拍照时,提前创建了jpg文件,只是把照片内容保存在已经创建好的文件里,而不是把图片文件作为data返回。(如果按照一般模式,把图片作为data返回,图片会被压缩,变得很模糊)
|