zoukankan      html  css  js  c++  java
  • android-意图Intent

    Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递 Intent 来执行动作和产生事件。使用 Intent 可以激活 Android 应用的三个核心组件:活动(Activity)、服务(Service)和广播接收器(BroadcastReceiver)。

    意图
    显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
    Intent intent = new Intent();
    1. intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class));
    2. intent.setClass(MainActivity.this, OtherActivity.class);
    3. Intent intent = new Intent(MainActivity.this,OtherActivity.class);

    隐式意图:没有明确指定组件名的Intent为隐式意图。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(data: URI和数据类型)找到最合适的组件来处理这个意图

    Uri data = Uri.parse("tel:" + phoneCode);
    Intent intent = new Intent(Intent.ACTION_CALL, data);

    在启动的ativity的onCreate中获取intent使用getIntent()方法,获取action使用intent.getAction(),获取data使用intent.getData()。

    意图启动

    启动不返回结果的意图,使用startActivity(intent)。

    启动返回结果的意图,使用startActivityForResult(intent, SHOW_SUBACTIVITY),SHOW_SUBACTIVITY是请求码,用来在接收回调结果的onActivityResult(int requestCode, int resultCode, Intent data)方法中区分打开的子activity的回调。

    若要传递责任给次最佳匹配的组件,则在onCreate中获取intent后使用startNextMatchingActivity(intent)。

    意图过滤器

    如果意图过滤器包含了指定的动作,或者没有指定动作,那么就认为动作匹配。

    意图过滤器必须包含待解析的意图中的所有category,没有指定category的意图过滤器只能和没有任何category的意图相匹配。需要注意的是,Android把所有传给startActivity()的隐式意图当作他们包含至少一个类别:"android.intent.category.DEFAULT" (CATEGORY_DEFAULT常量)。

    意图的数据URI的每一个部分都和意图过滤器的data标签进行比较,没有指定数据值的意图过滤器将会和所有的意图数据值匹配。

    Intent类中的静态字符串常量

    action:

    ACTION_ANSWER 打开一个处理来电的活动

    ACTION_CALL 打开一个电话拨号程序,并立即使用意图URI所提供的号码拨打一个电话

    ACTION_DELETE 启动一个活动,允许删除意图的URI中指定的数据

    ACTION_DIAL 打开一个拨号程序,拨打意图URI所提供的号码

    ACTION_EDIT 请求可以编辑指定的意图URI中的数据的活动

    ACTION_INSERT 打开一个能在意图URI指定的光标出插入新条目的活动

    ACTION_PICK 启动一个子活动,它可以让你从意图URI指定的内容提供器中选择一个条目

    ACTION_SEARCH 启动用于执行搜索的活动

    ACTION_SENDTO 启动一个活动来向意图URI所指定的联系人发送一条消息

    ACTION_SEND 启动一个活动,发送意图中指定的数据

    ACTION_VIEW 通用动作,根据所提供的数据的URI模式来处理视图请求

    ACTION_WEB_SEARCH 根据意图URI提供的文本执行Web搜索

    category:

    ALTERNATIVE 把动作指定为在特定数据类型上执行的默认动作的可选项

    SELECTED_ALERNATIVE 使用动作帮助填充上下文菜单

    BROWSABLE 浏览器内部可用的动作

    DEFAULT 使一个组件成为意图过滤器内指定的数据类型的默认动作

    GADGET 活动可以嵌入到另一个活动中执行

    HOME 不指定action时,意图则作为本地主屏幕的可选项

    LAUNCHER 出现在应用程序的启动器中

  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/mingfung-liu/p/4502829.html
Copyright © 2011-2022 走看看