Android中Intent相关知识点

Intent用于处理Android各组件之间的通信,地位自然相当重要。我们在开发中也会时常用到,但是很多人对他的了解确并不透彻。今天我大概总结一些和Intent相关的知识点。

1.Intent工作主要有3部分

  • Intent需标明本次通信请求从哪里来、到哪里去、要怎么走。
  • 发起方携带本次通信需要的数据内容,接收方对收到的Intent数据进行解包。
  • 如果发起方要求判断接收方的处理结果,Intent就要负责让接收方传回应答的数据内容。

2.Intent相关参数

元素名称设置方法说明与用途
ComponentsetComponent组件,用于指定Intent的来源与目的
ActionsetAction动作,用于指定Intent的操作行为
DatasetData即Uri,用于指定动作要操纵的数据路径
CategoryaddCategory类别,用于指定Intent的操作类别
TypesetType数据类型,用于指定消息的数据类型
ExtrasputExtra扩展信息,用于指定装载的参数信息
FlagssetFlags标志位,用于指定Intent的运行模式(启动标志)

3.显式Intent的3种调用方式

(1) 在构造函数中指定,示例代码如下:

Intent intent = new Intent(this,ActResponseActivity.class);//创建一个目标确定的意图

(2)调用setClass方法指定,示例代码如下:

Intent intent = new Intent();//创建一个新意图
intent.setClass(this,ActResponseActivity.class);//设置意图要跳转的活动类

(3)调用setComponent方法指定,示例代码如下:

Intent intent = new Intent();//创建一个意图
ComponentName  component = new ComponentName(this,ActResponseActivity.class);
intent.setComponent(component);//设置意图携带的组件信息

4.隐式Intent的系统动作

Intent类的系统动作常量名系统动作的常量值 说明
ACTION_MAINandroid.intent.action.MAINApp启动时的入口
ACTION_VIEWandroid.intent.action.VIEW显示数据给用户
ACTION_EDITandroid.intent.action.EDIT显示可编辑的数据
ACTION_SENDandroid.intent.action.SEND分享内容
ACTION_CALLandroid.intent.action.CALL直接拨号
ACTION_DIALandroid.intent.action.DIAL准备拨号
ACTION_SENDTOandroid.intent.action.SENDTO发送短信
ACTION_ANSWERandroid.intent.action.ANSWER接听电话
ACTION_SEARCHandroid.intent.action.SEARCH导航栏上SearchView的搜索动作

5.拨打电话举例(直接拨通)

Intent intent = new Intent();//创建一个新意图
intent.setAction(Intent.ACTION_CALL);//设置意图动作为直接拨号
Uri uri = Uri.parse("tel:"+phone);//申明一个拨号的Uri
intent.setData(uri);//设置意图前往的路径
startActivity(intent);//启动意图通往的活动页面

6.入口动作配置

<activity
    android:name=".MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <actegory android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

7.隐式Intent发送短信

Intent intent = new Intent();
intent.setAction("android.intent.action.SENDTO");
intent.setData(Uri.parse("smsto:"+"15536935920"));
intent.putExtra("sms_body","小熊熊写代码发送的短信");
startActivity(intent);

8.拨打电话举例(待拨通)

Intent intent = new Intent();//创建一个新意图
intent.setAction(Intent.ACTION_DIAL);//设置意图动作为直接拨号
Uri uri = Uri.parse("tel:"+"15835133570");//申明一个拨号的Uri
intent.setData(uri);//设置意图前往的路径
startActivity(intent);//启动意图通往的活动页面

9.传递参数到下一个页面

Intent intent = new Intent(MainActivity.this,FirstActivity.class);//创建一个目标确定的意图
Bundle bundle = new Bundle();//创建一个新包裹
bundle.putString("name","张三");//往包裹存入一个字符串
bundle.putInt("age",30);//往包裹里存入一个整型数
bundle.putDouble("height",170.0f);//往包裹存入一个双精度数
intent.putExtras(bundle);//把快递包裹塞给意图
startActivity(intent);//启动意图所向往的活动页面

10.接收上一个页面传递的参数

Intent intent = getIntent();//获取前一个页面传来的意图
Bundle bundle = intent.getExtras();//卸下意图里的快递包裹
String name = bundle.getString("name","");//从包裹里取出字符串
int age = bundle.getInt("age",0);//从包裹里取出整数
double height = bundle.getDouble("height",0.0f);//从包裹里取出双精度数

11.向上一个页面返回参数

Intent intent = new Intent();//创建一个新意图
Bundle bundle = new Bundle();//创建一个新包裹
bundle.putString("job","码农");//往包裹存入一个字符串
intent.putExtras(bundle);//把快递包裹塞给意图
setResult(Activity.RESULT_OK,intent);//携带意图返回前一个页面
finish();//关闭当前页面

12.上一个页面接收参数

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Bundle resp = data.getExtras();
    String job = resp.getString("job");
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值