Android中Intent的setData,setType和setDataAndType的区别

原创 2016年05月30日 16:55:20

今天遇到了一个非常可气的问题,当我在Intent里传递图片Uri的时候,出现打开图片时使用Intent.getData()方法返回值为空的这种现象,我很郁闷,后来发现原因。现在给大家写出问题是什么

Intent intent = new Intent("android.intent.action.VIEW");
                intent.setData(mUri);
                intent.setType("image/*");
                intent.putExtra("pictureUrl","file://"+mPath+"/girl.jpg");
                startActivity(intent);
从这段代码你们可以发现我遇到了什么问题么?

有意思的是,两个set方法在源码当中是这么设计的:

public Intent setData(Uri data) {
    mData = data;
    mType = null;
    return this;
}

public Intent setType(String type) {
    mData = null;
    mType = type;
    return this;
}

发现了么,竟然在set值得时候和我以前使用自定义的set ,get方法不一样,两种属性互斥,一定要使用setDataAndType方法,才可以将两个值一起传入,我也是醉了,如下:

Intent intent = new Intent("android.intent.action.VIEW");
                intent.setDataAndType(mUri,"image/*");
                intent.putExtra("pictureUrl","file://"+mPath+"/girl.jpg");
                startActivity(intent);
这个问题研究了一下午,想想挺好笑的,希望有遇到和我一样的问题的同学不要犯这个错误,我给你们提供了借鉴。

相关文章推荐

Android Intent设置类型setType();

android Intent大家都很熟悉了,是连接各大组件的桥梁,调用意图发送短信,彩信,打开指定网页,打开照相机,读取相册图片等等... 这里介绍两个平时用的比较多的两种意图: 一.调用手机默认...
  • a_ycmbc
  • a_ycmbc
  • 2016年05月12日 09:37
  • 5935

android intent.setType("type");的含义

intent.setType(“image/*”);//intent.setType(“audio/*”); //选择音频//intent.setType(“video/*”); //选择视频 (mp...

Android中Intent的setData,setType和setDataAndType的用法

Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。利用Int...
  • gf771115
  • gf771115
  • 2012年08月03日 15:50
  • 30905

Intent 各种跳转

现在开发中的功能需要直接跳转到拨号、联系人、短信界面等等,查找了很多资料,自己整理了一下。 首先,我们先看拨号界面,代码如下: [java] view plaincopypri...

Android通过setDataAndType(uri, "type")打开文件

android打开文件,intent的使用

Android中Intent的setData,setType和setDataAndType的用法

Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。利用Int...

android 打开各种文件(setDataAndType)

Java代码  /**  * 打开文件  * @param file  */  private void openFile(File file){            Intent in...

Android intent.setData方法

1 从文本框中获取内容 EditText mobileText = (EditText)findViewById(R.id.mobile); String mobile = mobileTex...

Android开发中Intent类的putExtra和setData 区别

Android开发中Intent类的putExtra和setData 区别 setData,传入的是Uri,并且可以指定Data 的Type,用于数据的过滤。setData可以被系统用来寻找匹配...

关于Intent的七大属性

原谅我愚昧,Intent七大属性这个概念我也是昨天才接触到,看了一下,都是一些常用的东西,就是没有总结过,那么今天就来简单总结一下。Intent七大属性是指Intent的ComponentName、A...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中Intent的setData,setType和setDataAndType的区别
举报原因:
原因补充:

(最多只允许输入30个字)