一、初识Intent

Intent 被译作“意图”,在 Android 中提供了 Intent 机制来协助应用间的交互与通信。
Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android 则根据此 Intent 的描述,负责找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。
Intent 不仅可用于应用程序之间,也可用于应用程序内部 Activity/Service 之间的交互。因此,可以将 Intent 理解为不同组件之间通信的“媒介”,专门提供组件互相调用的相关信息。

应用:

1、用来开启Activity。例如根据账号密码登录到相应的用户界面。

2、开启service。例如 点击下载,开始下载服务。

3、发送广播。

二、Intent对象的属性

Intent 是对它要完成的动作的一种抽象描述,Intent 封装了它要执行动作的属性:Action(动作)、Data(数据)、Category(类别)、Type(类型)、Component(组件信息)和 Extras(附加信息)。

1、Component(组件信息)

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

通过方法setComponent()设置。可以实现启动另一个Activity。

            Intent intent = new Intent();            //第一个参数是当前文件的包名,第二个参数是目标文件的包名            ComponentName componentName = new ComponentName("com.example","com.example.DemoActivity");            intent.setComponent(componentName);            startActivity(intent);

2、Action(动作)、Data(数据)

动作名称动作功能
ACTION_M AIN作为一个主要的进入口,而并不期望去接受数据
ACTION_VIEW向用户去显示数据
ACTION_ATTACH_DATA别用于指定一些数据应该附属于一些其他的地方,例如,图片数据应该附属于联系人

ACTION_EDIT

访问已给的数据,提供明确的可编辑

等等,还有很多。

Intent 的 Data 属性是执行动作的 URI 和 MIME 类型,不同的 Action 有不同的 Data 数据指定。

实例:使用Intent实现拨打电话和发送短信等内容。

在xml布局文件中已经添加了两个表示打电话和发送短信的按钮。

在Java中的代码

import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //实现打电话发短信功能        Button btn_phone = findViewById(R.id.btn_phone);        Button btn_email = findViewById(R.id.btn_email);        btn_phone.setOnClickListener(l2);        btn_email.setOnClickListener(l2);    }    //电话短信的监听器对象    View.OnClickListener l2 = new View.OnClickListener() {        @Override        public void onClick(View v) {            Intent intent = new Intent();            Button button = (Button)v;            switch (button.getId()){                case R.id.btn_phone:                    //打电话的固定格式,Uri.parse("tel:phone number")                    intent.setAction(intent.ACTION_DIAL);                    intent.setData(Uri.parse("tel:1111-1111"));                    startActivity(intent);                    break;                case R.id.btn_email:                    //打电话的固定格式,Uri.parse("smsto:phone number")                    intent.setAction(intent.ACTION_SENDTO);                    intent.setData(Uri.parse("smsto:1111-1111"));                    //默认的短信内容                    intent.putExtra("sms_body","Welcome to Android!");                    startActivity(intent);                    break;            }        }    };}
View Code

 

但这些还不够,还需要在AndroidManifest.xml中注册权限。

添加代码在

            "android.permission.CALL_PHONE"/>    "android.permission.SEND_SMS"/>

3、Action(动作)、Category(类别)

Android提供了很多Category常量。

Intent 中的 Category 属性起着对 Action 补充说明的作用。
通过 Action,配合 Data 或 Type 可以准确表达出一个完整的意图(加一些约束会更精准)。Intent 中的 Category 属性用于执行 Action 的附加信息。
例如,CATEGORY_LAUNCHER 表示加载程序时 Activity 出现在最上面,_HOME 表示回到 Home 界面。

4、Extras(附加信息)和Flag(标记)

Intent 的 Extra 属性用于添加一些组件的附加信息。
比如,要通过一个 Activity 执行“发送电子邮件”这个动作请求,可以将电子邮件的 subject、body 等保存在 Extras 里,传给电子邮件发送组件。

Extras方法为putExtras()和setExtras().

Flag方法为putFlag()和setFlag().

例如:

intent.setFlags(intent.FLAG_ACTIVITY_NO_HISTORY);  //表名该activity不在历史栈中保留,用户一旦离开,就自动关闭该activity。

三、intent种类

1、显示Intent

2、隐式intent

3、区别

 综上。

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. 四种清单中 launchMode(启动模式)解释
  5. Android实现本地手机数据库存储数据最简单的方法:LitePal
  6. android 简单实现 RecyclerView 下拉刷新上拉加载
  7. Android实战——简单网络视频播放器
  8. Android(安卓)浅析 ContentProvider (三) 获取原理
  9. Android电池功耗BatteryHistorian数据分析

随机推荐

  1. android4.2上获取应用程序大小的变更点
  2. Android(安卓)解决Handler在运行时加载报
  3. Android中MediaButtonReceiver广播监听器
  4. Android中各种onTouch事件
  5. Android修炼之道—时间测量
  6. Get the Android(安卓)SDK---获取Android
  7. php直播源码安卓自定义Dialog设置自动消
  8. Android(安卓)onMeasure、Measure、measu
  9. Delphi XE5 android toast
  10. Android(安卓)的网络编程(15)-Http JSon