一、判断题(每小题2分,共10分)1、(对)2、(对)3、(错)4、(错)5、(错)二、单项选择题(在每小题的四个备选答案中,有且只有一个正确答案,请将正确答案的序号填在题干的括号内。每小题2分,共20分)题号12345678910答案DCCADDCBBB三、填空题(每空2分,共10分)1、BroadcastReceiver、ContentProvider2、onCreate、onResume3、getSystemService四、名词解释(每小题5分,共15分)1、答:Activity是一个独立的,可以与用户交互的Android应用组件,在表现形式上它代表一个单独的屏幕。从功能上来说,它作为应用程序的界面框架,负责动态加载各种用户界面视图,实现底层的消息传递等。2、答:在Android中,Intent是一类特殊的组件,它负责对应用中一次操作的动作以及动作相关数据进行描述,包含了动作的产生组件、接收组件和传递的数据信息。Android则根据此描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。3、答:ContentProvider是不同应用程序之间进行数据交换的标准API。ContentProvider以某种Uri的形式对外提供数据,允许其它应用访问和修改数据;其它应用使用ContentResolver根据Uri去访问操作指定数据。五、简答题(每小题5分,共20分)1、答:Android平台的体系架构可以分为以下几层:(1)LinuxKernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。(2)Libraries和AndroidRuntime:Libraries:即C/C++函数库部分,大多数都是开放源代码的函数库,例如WebKit,该函数库负责Android网页浏览器的运行,例如标准的C函数库Libc、OpenSSL、SQLite等,当然也包括支持游戏开发2DSGL和3DOpenGL|ES,在多媒体方面有MediaFramework框架来支持各种影音和图形文件的播放与显示,例如MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等众多的多媒体文件格式。Android的Runtime负责解释和执行生成的Dalvik格式的字节码。(3)ApplicationFramework:(应用软件架构),Java应用程序开发人员主要是使用该层封装好的API进行快速开发。(4)Applications:该层是Java的应用程序层,Android内置的GoogleMaps、E-mail、即时通信工具、浏览器、MP3播放器等处于该层,Java开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。上面四个层次中,下层给上层服务,上层支持下层支持,调用下层的服务,这种严格的分层机制,为Android系统带来很大的灵活性,稳定性和可扩展性。也利于不同层的开发人员专心于该层次的开发任务。2、答:一个Intent组件包含以下属性。(1)component:指定Intent的的目标组件(2)action:要执行的动作(3)category:动作的所属类别,被执行动作的附加信息。(4)data:执行动作要操作的数据(5)type:显式指定Intent的数据类型(6)extras:包含的所有附加信息的集合3、广播消息在本质上就是一个Intent对象。要发送一个广播消息,首先把要发送的信息和相关的属性信息(如Action、Category等)封装进一个Intent对象。调用Context的下列方法之一发送广播消息。sendBroadcast():发送普通广播sendOrderedBroadcast():发送有序广播sendStickyBroadcast():发送持续广播4、开放性问题,没有标准答案。六、编程题(第1小题10分,第2小题15分,共25分)1、解://CalculateSumActivity.javapackagexiong.calculatesum;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.TextView;publicclassCalculateSumActivityextendsActivity{privateEditTextnum1Text=null;privateEditTextnum2Text=null;privateButtonaddBtn=null;privateTextViewresultView=null;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);num1Text=(EditText)findViewById(R.id.num1);num2Text=(EditText)findViewById(R.id.num2);addBtn=(Button)findViewById(R.id.addBtn);resultView=(TextView)findViewById(R.id.result);addBtn.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){doublenum1=Double.parseDouble(num1Text.getText().toString());doublenum2=Double.parseDouble(num2Text.getText().toString());doublesum=num1+num2;resultView.setText(num1+++num2+=+sum);}});}}2、解://CallPhoneActivity.javapackagexiong.callphone;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importandroid.app.Activity;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;publicclassCallPhoneActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);finalEditTextphoneNumText=(EditText)findViewById(R.id.phoneNum);ButtoncallBtn=(Button)findViewById(R.id.callBtn);callBtn.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){StringphoneNum=phoneNumText.getText().toString();if(isValid(phoneNum)){UriphoneUri=Uri.parse(tel:+phoneNum);Intentintent=newIntent(Intent.ACTION_CALL,phoneUri);startActivity(intent);}else{System.out.println(请输入正确的电话号码!);}}privatebooleanisValid(StringphoneNum){Patternp=Pattern.compile(^\\d+$);Matcherm=p.matcher(phoneNum);booleanb=m.matches();returnb;}});}}