Android中Intent的介绍

一.Intent的介绍

Intent的中文意思是“意图,意向”, Intent对Android的核心和灵魂,是各组件之间的桥梁。四大组件分别为Activity 、Service、BroadcastReceiver、ContentProvider。

而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。

Intent的中文意思为“意图”,在Android中可以理解为想要做什么,What do want to do? 所以什么时候要用到Intent就很好理解了。

Activity、Service和Broadcast receiver之间是通过Intent进行通信的,而另外一个组件Content Provider本身就是一种通信机制,不需要通过Intent。

 

二.公共构造函数:

1、Intent() 空构造函数

2、Intent(Intent o) 拷贝构造函数

3、Intent(String action) 指定action类型的构造函数

4、Intent(String action, Uri uri) 指定Action类型和Uri的构造函数,URI主要是结合程序之间的数据共享ContentProvider

5、Intent(Context packageContext, Class<?> cls) 传入组件的构造函数,也就是上文提到的

6、Intent(String action, Uri uri, Context packageContext, Class<?> cls) 前两种结合体

Intent有六种构造函数,3、4、5是最常用的,并不是其他没用!

Intent(String action, Uri uri)  的action就是对应在AndroidMainfest.xml中的action节点的name属性值。在Intent类中定义了很多的Action和Category常量。

三.Intent的属性

Intent的相关属性:

  • Intent由以下各个组成部分:
  • component(组件):目的组件
  • action(动作):用来表现意图的行动
  • category(类别):用来表现动作的类别
  • data(数据):表示与动作要操纵的数据
  • type(数据类型):对于data范例的描写
  • extras(扩展信息):扩展信息(传值)
  • Flags(标志位):期望这个意图的运行模式

 

1.component:目的组件

Intent的Compent属性指定Intent的的目标组件的类名称。

  显示跳转

1、Intent跳转

    Intent intent =new Intent(源Activity的对象,目标Activity的class);

    startActivity(intent);

三种代码方式的跳转 其实代码都是一样

//No1

Intent intent = new Intent();

创建Intent组件来响应

 ComponentName cpN = new ComponentName(MainActivity.this, OtherActivity.class);

 intent.setComponent(cpN);

 startActivity(intent);

 //No2

 Intent intent = new Intent();

 intent.setClass(MainActivity.this, OtherActivity.class);

 startActivity(intent);

 //No3 更简单的

 Intent intent = new Intent(MainActivity.this, OtherActivity.class);

 startActivity(intent);

2.Action动作   用来表示意图的行动 不同应用之间使用Action跳转

category 类型 与Action是一起使用   不能少,也可以跳转,但是很含蓄

以下是Intent类中预定义的部分action:

ACTION_CALL--目标组件为activity, 代表拨号动作;

ACTION_EDIT--目标组件为activity, 代表向用户显示数据以供其编辑的动作;

ACTION_MAIN--目标组件为activity, 表示作为task中的初始activity启动;

ACTION_BATTERY_LOW--目标组件为broadcastReceiver, 提醒手机电量过低;

ACTION_SCREEN_ON--目标组件为broadcast, 表示开启屏幕.

3.data(数据):表示与动作要操纵的数据

    表示android要访问的数据 也可以在intent_filter里面设置

  • type(数据类型):对于data范例的描写
  • 一个完整的Uri由scheme、host、port、path组成,格式是<scheme>://<host>:<port>/<path>

//No6 播放音乐

        Intent intent = new Intent(); 

        intent.setAction(Intent.ACTION_VIEW);

       // intent.setData(Uri.parse("file://storage/朋友.mp3"));

        intent.setDataAndType(Uri.parse("file://storage/朋友.mp3"), "audio/mp3");

        startActivity(intent);

4. Category属性

Intent中的Category属性是一个执行动作Action的附加信息。比如:CATEGORY_HOME则表示放回到Home界面,ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个。下表是SDK文档中关于Category的信息。

<category android:name="android.intent.category.DEFAULT"/> 默认

<category android:name="android.intent.category.LAUNCHER" /> 系统启动

5. Type属性

Intent的Type属性显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

6.Intent的Extra属性

Intent的Extra属性是添加一些组件的附加信息。比如,如果我们要通过一个Activity来发送一个Email,就可以通过Extra属性来添加subject和body。

 

// 调用浏览器

Uri webViewUri = Uri.parse("http://blog.csdn.net/zuolongsnail");

Intent intent = new Intent(Intent.ACTION_VIEW,webViewUri);

// 调用地图

Uri mapUri = Uri.parse("geo:100,100");

Intent intent = new Intent(Intent.ACTION_VIEW,mapUri);

// 播放mp3

Uri playUri = Uri.parse("file:///sdcard/test.mp3");

Intent intent = new Intent(Intent.ACTION_VIEW,playUri);

intent.setDataAndType(playUri,"audio/mp3");

// 调用拨打电话

Uri dialUri = Uri.parse("tel:10086");

Intent intent = new Intent(Intent.ACTION_DIAL,dialUri);

// 直接拨打电话,需要加上权限

Uri callUri = Uri.parse("tel:10086");

Intent intent = new Intent(Intent.ACTION_CALL,callUri);

// 调用发邮件(这里要事先配置好的系统Email,否则是调不出发邮件界面的)

Uri emailUri = Uri.parse("mailto:zuolongsnail@163.com");

Intent intent = new Intent(Intent.ACTION_SENDTO,emailUri);

// 直接发邮件

Intent intent = new Intent(Intent.ACTION_SEND);

String[] tos = { "zuolongsnail@gmail.com" };

String[] ccs = { "zuolongsnail@163.com" };

intent.putExtra(Intent.EXTRA_EMAIL,tos);

intent.putExtra(Intent.EXTRA_CC,ccs);

intent.putExtra(Intent.EXTRA_TEXT,"the email text");

intent.putExtra(Intent.EXTRA_SUBJECT,"subject");

intent.setType("text/plain");

Intent.createChooser(intent,"Choose Email Client");

// 发短信

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.putExtra("sms_body","the sms text");

intent.setType("vnd.android-dir/mms-sms");

// 直接发短信

Uri smsToUri = Uri.parse("smsto:10086");

Intent intent = new Intent(Intent.ACTION_SENDTO,smsToUri);

intent.putExtra("sms_body","the sms text");

// 发彩信

Uri mmsUri = Uri.parse("content://media/external/images/media/23");

Intent intent = new Intent(Intent.ACTION_SEND);

intent.putExtra("sms_body","the sms text");

intent.putExtra(Intent.EXTRA_STREAM,mmsUri);

intent.setType("image/png");

// 卸载应用

Uri uninstallUri = Uri.fromParts("package","com.app.test",null);

Intent intent = new Intent(Intent.ACTION_DELETE,uninstallUri);

// 安装应用

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.fromFile(new File("/sdcard/test.apk"),"application/vnd.android.package-archive");

// 在Android Market中查找应用

Uri uri = Uri.parse("market://search?q=愤怒的小鸟");

Intent intent = new Intent(Intent.ACTION_VIEW,uri);

四.带返回结果的跳转

Intent intent = new Intent(MainActivity.this , OtherActivity.class);

//        startActivity(intent);

        //requestCode  int  请求码

        startActivityForResult(intent, requestCode);

必须覆写     当返回这个Activity的时候 响应

@Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        // TODO Auto-generated method stub

        super.onActivityResult(requestCode, resultCode, data);

    }

再另一个Activity上  设置结果码

//resultCode  结果码

        this.setResult(resultCode)

//设置结果码切 往回传递数据

Intent in = new Intent();

        in.putExtra("test", test);

        this.setResult(2,in);

注意,在setResult后,要调用finish()销毁当前的Activity,否则无法返回到原来的Activity,就无法执行原来Activity的onActivityResult函数,看到当前的Activity没反应。

Intent Action 隐士跳转 自定义的

调用系统的Action 其中系统的data type这些需要去查API。

 

原文地址:https://blog.csdn.net/u010845516

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


HTML代码中要想改变字体颜色,常常需要使用CSS样式表。CSS是一门用来描述网页上样式的语言,通过编写CSS代码可以实现网页中各元素的大小、颜色、字体等各种样式的控制。那么如何在HTML代码中应用CSS样式来改变字体颜色呢?这里为大家介绍一下。 首先,在HTML代码...
HTML代码如何让字体盖住图片呢?需要使用CSS的position属性及z-index属性。 img { position: relative; z-index: -1; } p { position: absolute; to...
HTML代码字体设置 在HTML中,我们可以使用标签来设置网页中的文字字体。常用的字体标签是font和style,下面我们来学习如何使用这些标签。 1. font标签 使用font标签可以改变文字的字体、颜色和大小。它有三个属性font-family、color和...
在网页设计中,HTML代码的字体和字号选择是非常重要的一个环节,因为它们直接关系到页面的可读性和视觉效果。 要指定文本的字体和字号,可以使用HTML中的样式属性。使用样式属性设置字体和字号,如下所示: <p style="font-family: Aria...
HTML(Hypertext Markup Language,超文本标记语言)是一种用于创建网页的标准语言。它由许多标签(一对尖括号包围的关键字)组成,这些标签告诉浏览器如何显示内容。使用HTML代码,我们可以轻松地创建各种类型的图像和图形,如太极图。 在HTM...
外链是指在一个网页中添加一个指向其他网站的链接,用户可以通过这个链接直接跳转到其他网站。在HTML中,实现外链的方法很简单,只需要使用标签就可以了。 <a href="http://www.example.com">这是一个外链,点击跳转到www.ex...
HTML代码是实现网页界面的基础,而网页中的各种表单则是用户和网站进行交互的重要方式之一。下面我们来介绍如何使用HTML代码实现一个简单的报名表格。 <form action="submit.php" method="post"> &lt...
HTML是一种标记语言,用于开发网站和其他互联网内容。字体是网站设计中的关键元素之一,它可以决定网站的整体风格和呈现效果。HTML提供了字体编辑器,使网站设计变得更加容易。 <font face="Arial"> 这里是Arial字体 &...
HTML代码中,字体样式是开发者们必备的一部分。在HTML中,我们可以通过特定的标签和属性设置字体的样式、颜色和大小,以达到更好的排版效果。 <p style="font-size: 14px; color: #333; font-family:...
HTML中的字体可以设为粗体,以强调文本信息。我们可以通过使用一些标签来实现这一功能。其中,常用的标签包括: 1. 标签:该标签会把文本加粗显示,语法如下: 这是一段加粗的文本 2. 标签:与标签作用相同,但语义更强,表示该文本内容的重要性。语法如下:...
HTML代码可以实现文件的上传和下载,在网页开发中相当常见。通过使用<input>标签和<form>标签,我们可以轻松创建一个文件上传表单。 <form action="upload.php" method="post" enct...
HTML代码非常常见于网页设计中。在一些需要处理时间相关数据的场景下,可能需要将时间戳转换为实际时间,这时候就需要使用一些特定的HTML代码。 function timeStamp2Time(time){ var date = new Date(time...
HTML是一种用于创建网页的标记语言。在HTML中,我们可以使用超链接标签实现下载文件到本地的功能。 具体实现步骤如下: <a href="文件的URL" download="文件名">下载文件</a> 其中,href属性是文件...
在HTML代码中,对于字体靠左对齐有各种方法。其中最简单的方式之一是使用pre标签。 使用pre标签可以保留一段文本中的空格和换行符,从而使代码排版更加整齐。下面是一个例子: <p>这是一个段落。</p> &lt...
HTML代码字典是一本解释HTML标记和属性的参考文献。这本字典中包含了最常用的HTML代码以及它们的属性和值的详细描述。 例如,以下是HTML代码字典中的一部分内容: <a href="url">link text</a> 在...
在网页开发过程中,遇到一些需要用户复制的内容,我们通常都会提供复制按钮,让用户更方便地复制所需内容。下面我们来介绍如何使用html代码实现一键复制的功能。 var copyBtn = document.querySelector('#copy-bt...
用户登录 欢迎来到公司登录界面,请输入用户名和密码登录 用户名: 密码: 代码解释: 第1行:定义了一个 HTML 文档 第2行:开始了 HTML 头部 第3行:定义了...
HTML 代码是用来创建网页的语言,它包含了许多不同的元素和属性,让我们可以在网页中添加各种不同的元素和内容,如文字、图片、链接等等。在编写 HTML 代码时,我们可以使用各种不同的样式来美化我们的网页,例如更改字体、颜色、大小等等。 font-family:...
HTML代码中的字体转移 在编写HTML代码时,我们经常会使用各种字体来增强页面的可读性和视觉效果。但是,有些字符或特殊符号可能会在HTML中具有不同的含义,这就需要使用字体转义转换成HTML可以正常显示的字符。 在HTML中,使用"&"符号表示一个特殊字符将要被转...
HTML 编程语言中,你可以使用字体属性来更改文本的字体大小、颜色和样式。其中,字体颜色是最常用的样式更改。在 HTML 中,你可以使用 "color" 属性来更改文本的颜色。下面是一个使用 "pre" 标签的代码示例,演示如何使用 "color" 属性来更改字体颜色...