个人信息界面(二)

2018-11-07  本文已影响0人  小T呀

目标:点击头像打开系统自带相册

参考:android打开系统图库终极适配Android个人中心的头像上传,图片编码及截取

android中调用系统图库本来是一个很基本的东西,几乎每个app都用的到(最基本的更换用户头像),网上的相关容很多,本来找了几篇看了一下,拿几台测试机试了一下感觉就没什么问题了,但是适配问题慢慢就来了。

一.打开图库的基本方法。

通过查询资料,调用系统图库基本有3种方法。

1.使用Intent.ACTION_PICK

程序:

Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media. EXTERNAL_CONTENT_URI); //调用android的图库

//i.setType("image/*");//不可设置type,否则noactivityfound

startActivityForResult(Intent. createChooser(i,null) , 2) ;

        这个intent在android6.0以下是可以用的,但是到了6.0就无效了,具体打印log忘记了,官方文档也只用了这

Intent来获取留联系人,所以pass掉。

2.使用Intent.ACTION_GET_CONTENT

程序:

action_get_content是通过intent中设置的type属性来判断具体调用哪个程序的。官方文档上说,这个intent是用来“检索一个特定类型的文件”并且回返回检索到的文件的一个引用(文件的copy)这个貌似是可以用的,而且也是大多数人选择。

3.使用Intent.ACTION_OPEN_DOCUMENT

程序:

这个action只支持4.4以上的版本。官方文档上说,这个intent是用来“打开一个特定类型的文件”,与检索相比,感觉跟适合我们的应用场景。同样可以使用EXTRA_ALLOW_MULTIPLE来支持多选。这个貌似更适合,只是需要判断sd版本,4.4及以上使用ACTION_OPEN_DOCUMENT,4.3及以下用Intent.ACTION_GET_CONTENT,这也是一些比较好的攻略

4.常见的Activity Action Intent常量用法

调用图库,获取所有本地图片:

Intent imageIntent = new Intent();

intent.setAction(Intent.ACTION_GET_CONTENT);

imageIntent.setType("image/*");

startActivityForResult(imageIntent,PICK_CODE); //PICK_CODE是常量

调用本地联系人

Intent intent = new Intent(Intent.ACTION_PICK);

intent.setType(ContactsContract.Contacts.CONTENT_TYPE);

startActivityForResult(intent,PICK_CONTACT);

或者:

金乐demo1例子

调用音乐,获取所有本地音乐文件:

Intent audioIntent = new Intent(Intent.ACTION_GET_CONTENT);

audioIntent.setType("audio/*");

startActivityForResult(audioIntent,PICK_AUDIO);

调用视频,获取所有本地视频文件:

Intent videoIntent = new Intent(Intent.ACTION_GET_CONTENT);

videoIntent.setType("video/*");

startActivityForResult(videoIntent,PICK_VIDEO);

打开网页链接Intent.ACTION_VIEW

金乐demo1例子

⑥发送邮件,Intent.ACTION_SENDTO


金乐demo1例子

使用方法

上一篇下一篇

猜你喜欢

热点阅读