资讯专栏INFORMATION COLUMN

Intent 使用详解

lifesimple / 2372人阅读

摘要:注意类别指示此的图标应放入系统的应用启动器。如果元素未使用指定图标,则系统将使用元素中的图标使用方法对象是对象的包装器。主要应用于以下场景通知应用小部件定时任务使用注意事项适用于启动的。

极力推荐文章:欢迎收藏
Android 干货分享

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

Intent 是一个消息传递对象,主要用于组建之间的通讯,例如:启动Activity、启动Service、传递Broadcast

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

Intent 主要用途、流程图

Intent 分类

隐式 Intent 接收过滤类型

PendingIntent 使用方法

Intent 7 大常用属性

使用ADB调试 Intent

Intent 常用方法使用总结

Intent 流程图

1. Intent 主要用途 1. 启动Activity

startActivity()

无返回值,直接启动Activity

startActivityForResult()
有返回值,返回值在onActivityResult() 回调

2. 启动Service

startService()

一次性操作

bindService()

绑定组件,随组件生命周期结束而结束

3. 传递 Broadcast

sendBroadcast()

普通无序广播

sendOrderedBroadcast()

有序广播

sendStickyBroadcast()

持续黏性广播

2. Intent 分类 1.显示 Intent

按名称(完全限定类名)指定要启动的组件。
例如:

                    Intent intentActivity = new Intent(MainActivity.this,
                            ActivityMethods.class);
                    startActivity(intentActivity);
2.隐式 Intent

不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它
例如:

    /**
     * 发送短信
     * **/
    public static void SendMms(Context context, String mmsString) {

        Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, mmsString);
        sendIntent.setType("text/plain");
        // sendIntent.setData(Uri.parse("smsto:"));
        // This ensures only SMS apps respond
        // 修改 Intnent 选择器Tittle
        String title = context.getResources().getString(R.string.hello_world);
        Intent chooser = Intent.createChooser(sendIntent, title);

        // 验证是否有Activity 接收
        if (sendIntent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(chooser);
        }
    }
3. 隐式Intent 接收过滤类型

应用可以接收哪些隐式 Intent,请在清单文件中使用 元素为每个应用组件声明一个或多个 Intent 过滤器。每个 Intent 过滤器均根据 Intent 的操作、数据和类别指定自身接受的 Intent 类型。 仅当隐式 Intent 可以通过 Intent过滤器之一传递时,系统才会将该 Intent 传递给应用组件。

name 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。

例如:
java 代码中启动的IntentAction

Intent sendIntent = new Intent("String_action");

Androidmanfest.xml 中过滤标签如下:

使用一个或多个指定数据 URI 各个方面(scheme、host、port、path 等)和 MIME 类型的属性,声明接受的数据类型。

name 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。

例如:

禁止其他应用通过Intent 掉起自己组件

android:exported="false"

应用主要入口点Action

Launcher 图标入口Action

以下两个元素必须配对使用,Activity 才会显示在应用启动器中。

注意:

CATEGORY_LAUNCHER 类别指示此 Activity 的图标应放入系统的应用启动器。 如果 元素未使用 icon 指定图标,则系统将使用 元素中的图标

4. PendingIntent 使用方法

PendingIntent 对象是 Intent 对象的包装器。PendingIntent 的主要目的是授权外部应用使用包含的 Intent,就像是它从您应用本身的进程中执行的一样。

主要应用于以下场景

通知

NotificationManager

应用小部件

AppWidget

定时任务

AlarmManager

PendingIntent 使用注意事项:

1.PendingIntent.getActivity()

适用于启动 Activity Intent

2.PendingIntent.getService()

适用于启动 Service Intent

3.PendingIntent.getBroadcast()

适用于启动 BroadcastReceiver Intent

5. Intent 7 大属性

1 . Component Name(目标组件的全类、组件名称)

setComponent(),
getComponent(),
setClass() ,
setClassName()

2 . Action (intent 将执行的动作)

setAction()
`getAction()
`

3 . Data (用于向Action 属性提供操作数据)

URI对象scheme://host:port/path (协议头,主机,端口,路径)

4 . Type 分类

指定Data所指定的Uri对应的MIME类型,不指定会根据数据自动推导

5 . Category 类别

Action 提供额外的附件类别信息,可以有多个Category,但必须有一个default

   

6 . Extra 数据载体

通过键值对进行数据存储,用于多个Action之间提供数据交换.

7 . Flags 标记

标记组件如何启动,以及启动后如何对待 FALG_ACTIVITY_SINGLE_TOP
FALG_ACTIVITY_CLEAR_TOP等等)

6. 使用ADB调试 Intent

语法

adb shell am start -a  -t  -d  
  -e   -n 

eg :

adb shell am start -a android.intent.action.DIAL 
  -d tel:555-5555 -n org.example.MyApp/.MyActivity
7.Intent 常用方法使用总结

由于总结内容较多,已经另开文章讲述。

Intent 常用方法使用总结

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75830.html

相关文章

  • Activity 使用详解

    摘要:极力推荐文章欢迎收藏干货分享阅读五分钟,每日十点,和您一起终身学习,这里是程序员本篇文章主要介绍开发中的部分知识点,通过阅读本篇文章,您将收获以下内容生命周期简介必须在中注册启动的方法启动带返回值的结束方法状态保存,恢复的方法面 showImg(https://upload-images.jianshu.io/upload_images/5851256-0b56fc8e812963d7...

    Caicloud 评论0 收藏0
  • Service 使用详解

    摘要:只能执行单一操作,无法返回结果给调用方,常用于网络下载上传文件,播放音乐等。绑定模式此模式通过绑定组件等调用启动此服务随绑定组件的消亡而解除绑定。 showImg(https://segmentfault.com/img/remote/1460000019975019?w=157&h=54); 极力推荐文章:欢迎收藏Android 干货分享 showImg(https://segme...

    freewolf 评论0 收藏0
  • Intent以及IntentFilter详解

    摘要:,表明执行操作的字符串。,这个属性可以指示系统如何启动一个,以及启动之后如何处理。是一个字符串,例如这里的的构造函数传入了两个参数,和组件名,调用了方法后,会在当前的应用中启动这个服务。 1. 前言        在Android中有四大组件,这些组件中有三个组件与Intent相关,可见Intent在Android整个生态中的地位高度。Intent是信息的载体,用它可以去请求组件做相应...

    mrcode 评论0 收藏0

发表评论

0条评论

lifesimple

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<