public class GalleryUtil {
/**
* 系统相册的过滤关键词
*/
private static final String[] SYSTEM_GALLERY_FILTERS = new String[]{"gallery", "photo", "picture"};
/**
* 打开系统图片相册
*/
public static void openSystemImageGallery(Activity activity, int reqCode) {
openSystemGallery(activity, reqCode, "image/*");
}
/**
* 打开系统视频相册
*/
public static void openSystemVideoGallery(Activity activity, int reqCode) {
openSystemGallery(activity, reqCode, "video/*");
}
/**
* 打开系统相册
*
* @param type image/* video/*
*/
public static void openSystemGallery(Activity activity, int reqCode, String type) {
try {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, type);
onlyUseSystemGallery(activity, intent);
activity.startActivityForResult(intent, reqCode);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void onlyUseSystemGallery(Context context, Intent intent) {
if (context == null || intent == null) {
return;
}
try {
//查询系统相册包名
PackageManager packageManager = context.getPackageManager();
if (packageManager == null) {
return;
}
List<ResolveInfo> infos = packageManager.queryIntentActivities(intent, 0);
if (infos == null || infos.size() == 0) {
return;
}
final Set<String> backupPackages = new HashSet<>();
for (ResolveInfo resolveInfo : infos) {
if (resolveInfo == null) {
continue;
}
ApplicationInfo applicationInfo = resolveInfo.activityInfo.applicationInfo;
if (applicationInfo != null && applicationInfo.packageName != null
&& (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
backupPackages.add(applicationInfo.packageName);
}
}
for (String pkg : backupPackages) {
if (backupPackages.size() == 1) {
// 如果包名只有一个,则直接使用
intent.setPackage(pkg);
return;
} else {
// 如果包名有多个,则根据关键字再次筛选一次
for (String filter : SYSTEM_GALLERY_FILTERS) {
if (pkg.contains(filter)) {
intent.setPackage(pkg);
return;
}
}
}
}
} catch (Throwable t) {
}
}
}
操作系统相册的工具类
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 在IOS开发中经常会用到系统相册,相机,音视频等功能。每次都写比较麻烦,自己封装了一个工具类,实现一句话调用系统相...
- 在IOS开发中经常会用到系统相册,相机,音视频等功能。每次都写比较麻烦,自己封装了一个工具类,实现一句话调用系统相...
- MIUI果然名不虚传,各种迷之报错。上传图片的时候发现图片的路径返回值与其他的手机不一样,所以封装了下面的工具来解...
- github地址:GKAuthorizatonTool 如果您觉得还不错,请来个star,如果有什么问题请issu...
- 从相册或者相机或者照片已经成为流行APP不可或缺的一部分,然后新手在实现这个功能时总会遇到这种那种的问题,比如无法...