android 调用系统的图片选择

有些项目中需要调用系统的图片选择,这里说一下发现的问题
一般情况写的时候会调用

Intent openAlbumIntent = new Intent(Intent.ACTION_PICK);
// openAlbumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
/***************裁剪**************/
// openAlbumIntent.putExtra("crop", "true");
// openAlbumIntent.putExtra("aspectX", 1); //如果xy都为100则是截取圆形
// openAlbumIntent.putExtra("aspectY",1);
/*************裁剪结束***************/
// openAlbumIntent.putExtra("outputX", PhoneUtil.getDisplayWidth(getActivity()));
// openAlbumIntent.putExtra("outputY", PhoneUtil.getDisplayHeight(getActivity()));
// openAlbumIntent.putExtra("return-data", true); //是否要返回值,如果不写这个返回的数据里data是空的
// openAlbumIntent.putExtra("outputFormat", "JPEG");
// openAlbumIntent.putExtra("noFaceDetection", true); //取消人脸识别功能
// intent.setType("audio/*"); //
openAlbumIntent.setType("image/*"); //图片
// intent.setType("audio/amr"); //录音
// Intent wrapperIntent = Intent.createChooser(openAlbumIntent, null); //第二个参数是标题
startActivityForResult(openAlbumIntent, 2001);

设置很多参数,但有些机型在选择的时候会选择不了图片,我在sony的android手机上发现这问题,注意的几点:
1.一定要在new Intent(Intent.ACTION_PICK)这里写ACTION_PICK
2.不要用openAlbumIntent.setDataAndType这个设置选择图片类型,用openAlbumIntent.setType("image/*")
3.其它所有参数都不能设置,一但设置某些手机调用系统选择图片会选择不了
Android调用系统查看图片可以通过使用隐式意图实现。首先需要获取图片的Uri,可以通过图片的文件路径或URL获取。然后使用Intent创建一个ACTION_VIEW的意图,并将图片的Uri作为数据添加到意图中。最后通过调用startActivity方法来启动查看图片系统应用。 具体实现步骤如下: 1. 获取图片的Uri,可以使用FileProvider将文件路径转换为ContentUri,或者直接使用网络图片的URL获取Uri。 2. 创建一个Intent对象,并设置Intent的Action为ACTION_VIEW,指定要查看的数据类型为图片类型(image/*)。 3. 将图片的Uri添加到Intent中,通过setDataAndType方法设置数据和类型。 4. 通过调用startActivity方法启动系统图片查看应用。 以下是一个示例代码: ```java Uri imageUri = FileProvider.getUriForFile(context, "com.example.fileprovider", imageFile); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(imageUri, "image/*"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); context.startActivity(intent); ``` 需要注意的是,如果图片是通过FileProvider的方式获取的Uri,需要添加FLAG_GRANT_READ_URI_PERMISSION标志,以授权其他应用可以读取该Uri的权限。 另外,为了避免没有系统应用可以查看图片的情况,可以先使用resolveActivity方法判断是否有对应的应用可以处理该Intent,如果返回null,则表示没有可以查看图片的应用。可以通过以下代码进行判断: ```java if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } else { // 没有合适的应用可以查看图片 } ``` 以上就是Android调用系统查看图片的简单实现方式。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值