您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Android开发讲义(第五章Intent与IntentFilter)
Android开发讲义主讲人:Android开发环境的搭建Android初级界面编程事件处理深入ActivityIntent与IntentFilterAndroid高级界面编程Android应用的资源图形与图象处理Android数据存储技术与数据共享Service与BroadcastReceiverAndroid网络应用多媒体应用开发OpenGL与3D应用开发传感器应用开发GPS应用开发GoogleMap服务项目实战Intent对象详解Intent的属性及intent-filter配置使用Intent创建Tab页面当一个Activity需要启动另一个Activity时,程序并没有直接告诉系统要启动哪个Activity,而是通过Intent来表达自己的意图:需要启动哪个Activity。“Intent”的中文翻译就是“意图”的意思。Android使用Intent来封装程序的“调用意图”,不管程序想启动一个Activity也好,想启动一个Service组件也好,想启动一个BroadcastReceiver也好,Android使用统一的Intent对象来封装这种“启动意图”,很明显使用Intent提供了一致的编程模型。使用Intent的另一个好处:在某些时候,应用程序只是想启动具有某种特征的组件,并不想和某个具体的组件耦合,所以这样就会降低与组件间的耦合度。总之,Intent封装Android应用程序需要启动某个组件的“意图”。不仅如此,Intent还是应用程序组件之间通信的重要媒介。一Intent对象详解Android的应用程序包含三种重要组件:Activity、Service、BroadcastRecevier,应用程序采用了一致的方式来启动它们,就是依靠Intent来进行启动的,Intent就封装了想要启动程序的意图,不仅如此,Intent还可用于与被启动组件交换信息。组件类型启动方法ActivitystartActivity(Intentintent)startActivityForResult(Intent,int)ServiceComponentNamestartService(Intentservice)BooleanbindService(Intent,ServiceConnection,int)BroadcastReceiversendBroadcast(Intentintent)……本节课仅以Activity为例二Intent的属性及Intent-filter配置1.Component属性在上一章中通过了简化的语句来设定要启动的目标Activity,在此可以通过Component属性来设定启动的目标Activity。ComponentNamecomp=newConponentName(res.this,target.class);当前类目标类使用Intent中的Component属性(原类)示例publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);ButtonfinishBtn=(Button)findViewById(R.id.finish);finishBtn.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){ComponentNamecomponent=newComponentName(DemoActivity.this,SecondActivity.class);Intentintent=newIntent();intent.setComponent(component);startActivity(intent);}});}使用Intent中的Component属性(目标类)示例protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.second);EditTexttxt=(EditText)findViewById(R.id.txt);Intentintent=getIntent();ComponentNamecomponent=intent.getComponent();txt.setText(packageName:+component.getPackageName()+\n+className:+component.getClassName());}二Intent的属性及Intent-filter配置2.Action、Category属性与intent-filter配置Intent的Action、Category属性都是一个普通的字符串,其中Action代表该Intent所要完成的一个抽象“动作”,而Cateory则用于为Action增加额外的附加信息。通常Action属性会与Category属性结合使用。Action要完成的只是一个抽象的动作,这个动作具体由哪个组件来完成Action这个字符串本身并不管。针对于Struts2来讲,Action处理用户请求结束后,Action并不会直接指定“跳转”到哪个Servlet,Action的处理方法只是返回一个普通字符串,然后在配置文件中配置该字符串对应到哪个Servlet。采用这种思路就是为了把Action与呈现视图的Servlet分离开。类似的,Intent通过指定Action属性,就可以把该Intent与具体的Activity分离,从而提供高层次的解耦。Action属性举例(主类)示例publicfinalstaticStringDEMO_ACTION=com.android.action.DEMO_ACTION;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);ButtonfinishBtn=(Button)findViewById(R.id.bn);finishBtn.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){Intentintent=newIntent();intent.setAction(DemoActivity.DEMO_ACTION);startActivity(intent);}});}非硬编码方式,而简单定了字符串,该字符串与配置文件中的action属性相对应Action属性举例(跳转的目标类)示例publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.second);EditTextshow=(EditText)findViewById(R.id.show);//获取该Activity对应的Intent的Action属性Stringaction=getIntent().getAction();//显示Action属性show.setText(Action为:+action);}Action属性举例(配置文件)示例applicationandroid:icon=@drawable/iconandroid:label=@string/app_nameactivityandroid:name=.DemoActivity“android:label=@string/app_nameintent-filteractionandroid:name=android.intent.action.MAIN/categoryandroid:name=android.intent.category.LAUNCHER//intent-filter/activityactivityandroid:name=.SecondActivity“android:label=@string/app_nameintent-filteractionandroid:name=com.android.action.DEMO_ACTION/categoryandroid:name=android.intent.category.DEFAULT//intent-filter/activity/application在目标类中定义action元素跳转的目标类Category属性举例(主类)示例publicfinalstaticStringDEMO_ACTION=com.android.action.DEMO_ACTION;publicfinalstaticStringDEMO_CATEGORY=com.android.category.DEMO_CATEGORY;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);ButtonfinishBtn=(Button)findViewById(R.id.bn);finishBtn.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){Intentintent=newIntent();intent.setAction(DemoActivity.DEMO_ACTION);intent.addCategory(DemoActivity.DEMO_CATEGORY);startActivity(intent);}});}定义Action与Category属性Category属性举例(配置文件)示例applicationandroid:icon=@drawable/iconandroid:label=@string/app_nameactivityandroid:name=.DemoActivity“android:label=@string/app_nameintent-filteractionandroid:name=android.intent.action.MAIN/categoryandroid:name=android.intent.category.LAUNCHER//intent-filter/activityactivityandroid:name=.SecondActivity“android:label=@string/app_nameintent-filteractionandroid:name=com.android.action.DEMO_ACTION/categoryandroid:name=com.android.category.DEMO_CATEGORY/categoryandroid:name=android.intent.category.DEFAULT//intent-filter/activity/application定义category属性二Intent的属性及Intent-filter配置3.指定Action、Category调用系统Activity实际上Android内部提供了大量标准的Action、Catetory常量来供开发者使用。实例:1.查看、并获取联系人电话2.返回系统Home
本文标题:Android开发讲义(第五章Intent与IntentFilter)
链接地址:https://www.777doc.com/doc-3606324 .html