【移动应用开发技术】10天学通Android开发(3-3)-Intent使用_第1页
【移动应用开发技术】10天学通Android开发(3-3)-Intent使用_第2页
【移动应用开发技术】10天学通Android开发(3-3)-Intent使用_第3页
【移动应用开发技术】10天学通Android开发(3-3)-Intent使用_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】10天学通Android开发(3-3)-Intent使用

Intent:可以理解为:与基本组件关联的数据对象,用来指定用来启动或激活的目标组件

Android引入了Intent的概念来唤起components,component包括:1、Activity(UI元件)2、Service(后台代码)3、Broadcastreceiver(处理广播消息的代码)4、Contentprovider(抽象数据的代码)

Intent(意图)主要是解决Android应用的各项组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)为了实现这个目的,listActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intentintent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。

IntentFilter:对Intent进行过滤,用来指定基本组件所在地址,如很多,则过滤到最后给用户选择,如只有一个则直接显示。

可根据组件名称,直接启动。

Intent的构成Intent可以带有action,data(由URI表达),extradata(key/valuemap,键值对),指定的类名(成为componentname)。一个intent至少携带上述的一个内容。Action。Action名,在上一笔记中已经给出两种例子,一种是系统自带的,如Intent.ACTION_DAIL,一种是开发者通过AndroidManifest.xml进行注册的,在创建intent时给出:Intentintent=newIntent(Stringaction_name);。action_name字符串的名字前缀是类名。Data。由不同action决定有效的URI的格式。intent.setData(Uri.parse(”xxxxxx”));。被唤起的activity可以同activity.getIntent()来获得intent,然后通该intent的getData()来获取数据

//触发方。

Intenti=newIntent(actionName);StringuriStr="wei://";i.setData(Uri.parse(uriStr));this.startActivity(i);<imgwidth="32"height="32"align="right>//被触发方。需要在AndroidManifest.xml中在intent-filter中注册data信息,后文详细说明Intentintent=this.getIntent();Stringdata=intent.getData();

案例分析:新建一类aty1

publicclassAty1extendsActivity{

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.aty1);

}}

添加对应的内容

<LinearLayoutxmlns:android="/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Aty1"

android:textAppearance="?android:attr/textAppearanceLarge"/>

</LinearLayout>3)直接根据组件名称,直接对应组件,不管是Activity、还是服务,传入对应的包名及具体类名

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

Intenti=newIntent();

//直接根据组件名称,直接对应组件,不管是Activity、还是服务

i.setComponent(newComponentName("ent3_3","ent3_3.Aty1"));

startActivity(i);

}

运行,点击可看到启动了Aty1

4)下面隐式启动,AndroidManifest.xml中给intent-filter给Activity指定地址<activityandroid:name="Aty1">

<intent-filter>

<actionandroid:name="ent3_3.action.Aty1"/>

<categoryandroid:name="ent.category.DEFAULT"/>

</intent-filter>

</activity>5)启动Intenti=newIntent("ent.action.Aty1");

startActivity(i);

可以运行了,6)拨打电话publicvoidonClick(Viewv){

Intenti=newIntent(Intent.ACTION_VIEW);

i.setData(Uri.parse("tel:10086"));

startActivity(i);

}

7)打开新浪网页findViewById(R.id.btnNavSina).setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论