Intent的使用

原创 2011年01月24日 01:24:00

显式Intent

显式Intent会在自己的说明中直接声明由哪个Activity来接收 处理这个Intent。

//告诉Android,此Intent交由AlertDialog处理
Intent intent = new Intent();
intent
.putExtra("name", editText.getText().toString());
//也可以通过setComponent()、setClassName()等方法来做
intent
.setClass(ActivityLifecycle.this, AlertDialog.class);

隐式Intent

隐式Intent没有明确的目标,只是描述了一下自己的情况

Intent intent = new Intent();
intent
.putExtra("name", editText.getText().toString());
//在AndroidManifest中找intent-filter中action为com.roiding.sample.action.MAIN
intent
.setAction("com.roiding.sample.action.MAIN");

1.在AndroidManifest文件中,对每个Activity都做了说明,就是intent-filter,它说明了当前这个Activity接收什么样的需求,这样当Intent与这个Intent-filter中的说明一致时,Intent就找到了Activity。

2.如果有多个 Activity成为候选,那么在程序运行的时候Android提示你从多个Activity中手动选择一个来作为最终的intent接收执行者。

3.对于Activity来说,在它的intent-filter中,可以有多个action,多个category,多个data,这样可以有多个Intent可以与之匹配。

4.data 动作操作的数据,这部分数据携带给接收它的Activity,Uri格式。和extras功能差不多。 data的重要的作用就是,它提供了一种反向挑选的机制,使 Activity对Intent也可以提出要求,要求Intent的data必须是intent-filter中声明的data中之一(因为可以有多个 data)。这点是非常重要的,不然又会出现ActivityNotFoundException之类的错误了。

AndroidManifest中intent-filter参数解释

在Intent Filter节点里使用下面的标签(关联属性),你能指定组件支持的动作、种类和数据:

    action

     
使用android:name特性来指定对响应的动作名。动作名必须是独一无二的字符串,所以,一个好的习惯是使用基于Java包的命名方式的命名系统。


   
category

     
使用android:category属性用来指定在什么样的环境下动作才被响应。每个Intent Filter标签可以包含多个category标签。你可以指定自定义的种类或使用Android提供的标准值,如下所示:

     
ALTERNATIVE

         
你将在这章的后面所看到的,一个Intent Filter的用途是使用动作来帮忙填入上下文菜单。ALTERNATIVE种类指定,在某种数据类型的项目上可以替代默认执行的动作。例如,一个联系人的默认动作时浏览它,替代的可能是去编辑或删除它。

     
SELECTED_ALTERNATIVE

         
ALTERNATIVE类似,但ALTERNATIVE总是使用下面所述的Intent解析来指向单一的动作。SELECTED_ALTERNATIVE在需要一个可能性列表时使用。

     
BROWSABLE

         
指定在浏览器中的动作。当Intent在浏览器中被引发,都会被指定成BROWSABLE种类。

     
DEFAULT

         
设置这个种类来让组件成为Intent Filter中定义的data的默认动作。这对使用显式Intent启动的Activity来说也是必要的。

     
GADGET

         
通过设置GADGET种类,你可以指定这个Activity可以嵌入到其他的Activity来允许。

     
HOME

         HOME
Activity是设备启动(登陆屏幕)时显示的第一个Activity。通过指定Intent FilterHOME种类而不指定动作的话,你正在将其设为本地home画面的替代。

     
LAUNCHER

         
使用这个种类来让一个Activity作为应用程序的启动项。


   
data

      data
标签允许你指定组件能作用的数据的匹配;如果你的组件能处理多个的话,你可以包含多个条件。你可以使用下面属性的任意组合来指定组件支持的数据:

     
android:host

         
指定一个有效的主机名(例如,com.google)。

     
android:mimetype

         
允许你设定组件能处理的数据类型。例如,<type android:value=”vnd.android.cursor.dir/*”/>能匹配任何Android游标。

      ❑ android:path

         有效地URI路径值(例如,/transport/boats/)。

      ❑ android:port

         特定主机上的有效端口。

      ❑ android:scheme

         需要一个特殊的图示(例如,content或http)。

显示了如何配置Activity的Intent Filter,使其以在特定数据下的默认的或可替代的动作的身份来执行SHOW_DAMAGE动作

<activity android:name=”.EarthquakeDamageViewer”
         
android:label=”View Damage>

   
<intent-filter>

       
<action android:name=”com.paad.earthquake.intent.action.SHOW_DAMAGE”>
       
</action>

       
<category android:name=”android.intent.category.DEFAULT”/>

       
<category android:name=”android.intent.category.ALTERNATIVE_SELECTED”/>

       
<data android:mimeType=”vnd.earthquake.cursor.item/*”/>

   
</intent-filter>

</activity>

Android中Intent的几种使用方法

Intent不仅用于应用程序间的交互,大部分时候还是用于应用间Activity/Service之间的交互,例如启动一个新的Activity等。本文简单总结一些关于Intent的使用方法。 1、启动一个...
  • u013921245
  • u013921245
  • 2015年10月09日 20:51
  • 2804

Android中Fragment中使用Intent

在继承了Fragment的class里想要使用Intent,可以用下面的方法 public void goToIntent(View view) { Intent intent = new I...
  • wu_wxc
  • wu_wxc
  • 2016年03月21日 23:39
  • 2507

android学习记录(五)显式Intent与隐式Intent的功能与使用方法解析。

显式Intent与隐式Intent的功能与使用方法解析。   Intent,在中文中的意思是意图。就是想要做的事。   而使用startActivity(Intentintent)或者startAct...
  • zuolovefu
  • zuolovefu
  • 2014年12月14日 09:23
  • 1335

Intent详解(四):使用隐式Intent

《Intent详解(一):显式Intent》 《Intent详解(二):隐式Intent》 《Intent详解(三):Intent的Flags》 《Intent详解(四):使用隐式Intent》...
  • Todo_
  • Todo_
  • 2016年02月25日 15:31
  • 751

Android Studio Intent使用(显式、隐式) 第一行代码

使用Intent能够使程序在不同活动中跳转,意及能够使用不同界面。Intent用法分为显示和隐式 Intent概念:Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当...
  • u012005313
  • u012005313
  • 2015年07月22日 17:23
  • 4707

在Fragment中是用Intent

1、 public void goToAttract(View v) { Intent intent = new Intent(getActivity(), MainActivityList...
  • mcy478643968
  • mcy478643968
  • 2014年05月27日 10:05
  • 6797

使用Intent在活动之间穿梭(Intent初识)

Intent英文意思:意图。 Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、...
  • btt2013
  • btt2013
  • 2016年01月07日 09:43
  • 611

Android使用Intent实现拨打电话的动作

使用Intent实现打电话的动作,我们需要在 AnroidMainfest.xml中加入通话权限,打开这个文件,在application节点的前面加入以下内容<uses-permission a...
  • w_yunlong
  • w_yunlong
  • 2015年12月29日 11:54
  • 5782

Android Preference 中intent action的使用及出现的问题

  • wangjicong_215
  • wangjicong_215
  • 2017年01月03日 14:31
  • 360

Android Intent使用

在文章Android Activity活动探究中,我们介绍了如何
  • yyywyr
  • yyywyr
  • 2014年08月10日 23:40
  • 7148
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Intent的使用
举报原因:
原因补充:

(最多只允许输入30个字)