【Android开发】移动程序设计期末复习练习题(一)

发布时间:2024年01月14日

一、判断题(本题共10小题,每小题1分,共10分)

1、每个Dalvik虚拟机实例都是一个独立的进程空间,并且每个进程之间不可以通信。? (? )

2、TableLayout继承自LinearLayout,因此它完全支持LinearLayout所支持的属性。? ? ? (? )

3、如果要实现多个RadioButton按钮中只能选中一个,则必须将这多个RadioButton放在同一个RadioGroup中。? ? ?(? )

4、创建Activity时,首先调用的是onStart()生命周期方法。 ???????(? )

5、将文件存入Android手机的SD卡中,这种方式是属于内部存储方式。(? )

6、Android中通过内容解析者获取手机通讯录数据库的内容时,不需要加入读取手机通讯录的权限。? ? (? )

7、有序广播的广播效率比无序广播更高。 ??????????????????????(? )

8、使用服务的通信方式进行通信时,必须保证服务是以绑定的方式开启的,否则无法通信。? ? ? ? (? )

9、HttpURLConnection用于发送HTTP请求和获取HTTP响应。 ???(? )

10、Android SDK为开发者提供了org.json包,该包存放了解析JSON数据的类,其中,JSONObject类是用于解析数组结构的JSON数据。 ???????(? )

二、单选题(本题共10小题,每小题1分,共10分)

1、Android项目中的主题和样式资源,通常放在哪个目录下?(? )

A.res/drawable ???B.res/layout? ???C.res/values? ?????D.assets

2、下列关于AndroidManifest.xml文件的说法中,错误的是( ?)。

A. 它是整个程序的配置文件

B. 可以在该文件中配置程序所需的权限

C. 可以在该文件中注册程序用到的组件

D. 该文件可以设置UI布局

3、下列属性中,用于设置线性布局方向的是( ?)。

A.orientation??? ?B.gravity?? ?????C.layout_gravity?? D.padding

4、使用EditText控件时,当文本内容为空时,如果想做一些提示,那么可以使用的属性是(? )。

A.android:text?????? ??????????B.android:background?

C.android:inputType? ??????????D.android:hint

5、下列关于ListView的说法中,正确的是(? )。

A.ListView的条目不能设置点击事件

B.ListView不设置Adapter也能显示数据内容

C.当数据超出能显示范围时,ListView自动具有可滚动的特性

D.若ListView当前能显示10条,一共有100条数据,则产生了100个View

6、下列关于Android中Activity管理方式的描述中,正确的是(? )。

A.Android以堆的形式管理Activity

B.Android以栈的形式管理Activity

C.Android以树的形式管理Activity

D.Android以链表的形式管理Activity

7、下列关于SQLite数据库的描述中,错误的是(? )。

A.SqliteOpenHelper类有创建数据库和更新数据库版本的的功能。

B.SqliteDatabase类是用来操作数据库的。

C.每次调用SqliteDatabase的getWritableDatabase方法时,都会执行SqliteOpenHelper的onCreate()方法。

D.当数据库版本发生变化时,会调用SqliteOpenHelper的onUpgrade()方法更新数据库。

8、如果一个应用程序想要访问另外一个应用程序的数据库,那么需要通过( ?)实现

A.BroadcastReceiver? ?B.Activity?? ?C.ContentProvider? ?D.AIDL

9、如果通过bindService方式开启服务,那么服务的生命周期是(? )。

A.onCreate()→onStart()→onBind()→onDestroy()

B.onCreate()→onBind()→onDestroy()

C.onCreate()→onBind ()→onUnBind()→onDestroy()

D.onCreate()→onStart ()→onBind ()→onUnBind()→onDestroy()

10、下列关于MeidiaPlayer的描述,错误的是(? )。

A.? MediaPlayer是用于播放音频和视频的。

B.? MadiaPlayer对音频文件提供了非常全面的控制方法。

C.? MadiaPlayer会调用底层的音频驱动播放音频。

D.? MadiaPlayer只可以播放音频不能播放视频。

三、填空题(本题共10小题,每空1分,共10分)

1、程序员在编写Android应用程序时,主要是调用___________层提供的接口来实现。

2、Android中查看应用程序日志的工具是___________。

3、项目清单文件里,标签<manifest>的___________属性值定义Android应用的包名。

4、用于设置当前布局与屏幕边界、周围布局或控件的距离的布局属性名为___________。

5、在布局文件中,设置控件大小通常使用dp作为单位,而设置文字大小的单位是___________。

6、在清单文件中为Activity添加<intent-filter>标签时,必须添加的属性名为________,否则隐式Intent无法开启该Activity。

7、如果想要停止bindService()方法启动的服务,需要调用__________方法。

8、广播接收者需要重写BroadcastReceiver提供的抽象方法__________。

9、在Android系统中,创建与连接SQLite数据库需要使用抽象类__________。

10、在清单文件中注册自定义内容提供者组件所使用的标签是__________。

四、简答题(本题共4小题,每小题10分,共40分)

1、列举Android中的常用布局,并简述他们各自的特点。

2、简述实现Button按钮的点击事件的方式有哪几种?

3、简述Activity的生命周期的方法及什么时候被调用。

4、简述内容提供者的工作原理。

五、程序设计题(本题共2小题,每空2分,共30分)

1、在MainActivity组件对应的布局文件里,定义了两个Button按钮,其id分别设置为button1和button2,单击按钮后,分别启动对应的SecondActivity组件和ThirdActivity组件。从MainActivity跳转到ThirdActivity时,往ThirdActivity传递一个Bundle类型的数据。当从ThirdActivity返回到MainActivity时,同时返回给MainActivity一个字符串数据。

(1)调用其他Activity的主调组件MainActivity的代码如下:

public class MainActivity extends AppCompatActivity {

??? @Override

??? protected void onCreate(Bundle savedInstanceState) {

??????? super.onCreate(savedInstanceState);

??????? setContentView(R.layout.activity_main);

? ??????//获取idbutton1的按钮控件

??????? Button button1 =_____1-1_______(R.id.button1);

??????? button1.setOnClickListener(new View.OnClickListener() {

??????????? @Override

????? ??????public void onClick(View v) {

??????????????? Intent intent = new Intent();

? ??????????????//隐式调用SecondActivity

??????????????? intent.setAction("_________1-2_________");?

? ??????????????//启动SecondActivity,第2个参数为请求码

??????????????? _______1-3____________(intent, 2);?

??????????? }

??????? } );

? ??????//获取idbutton2的按钮控件

??????? Button button2=findViewById(_____1-4_________);

??????? button2.setOnClickListener(new View.OnClickListener() {

?????????? ?@Override

??????????? public void onClick(View v) {

??????????????? Intent intent = new Intent();

?????????????? //显示调用ThirdActivity

??????????????? intent.setClass(MainActivity.this, _____1-5_________);?

?????????????? //设置Bundle类型数据

??????????????? Bundle bundle = new Bundle();?

??????????????? bundle.putString("name", "张三");

??????????????? bundle.___ 1-6____("age", 20);

?????????????? //通过意图对象携带数据

??????????????? intent.putExtra("data", bundle);?

?????????????? //启动ThirdActivity并请求数据回传,第2个参数为请求码

??????????????? startActivityForResult(intent, 3);?

??????????? }

??????? } );

??? }

??? @Override

??? protected void onActivityResult(int requestCode, int resultCode, Intent data) {

??????? super.onActivityResult( requestCode, resultCode, data);

?????? //判断是哪个Activity返回的数据,使用结果码

??????? if(resultCode==3) {

?????????? //获取返回的数据

??????????? String string = data.getStringExtra("hello");

??????? }

??? }

}

(2)其中,在清单文件里,对被调用的第2个Activity组件配置如下:

<activity

android:name=".SecondActivity"

android:label="隐式调用SecondActivity">

<intent-filter>

<action android:name="android.intent.action.ysdy" />

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

</intent-filter>

</activity>

(3)第2个Activity组件的代码如下:

public class SecondActivity extends AppCompatActivity {

??? @Override

??? protected void onCreate(Bundle savedInstanceState) {

?? ?????super.onCreate(savedInstanceState);

??????? setContentView(R.layout.activity_second);

}

(4)第3个Activity组件接收从MainActivity传递的捆绑数据,返回前设置非捆绑数据和结果码,其代码如下:

public class ThirdActivity extends AppCompatActivity {

??? @Override

??? protected void onCreate(Bundle savedInstanceState) {

??????? super.onCreate(savedInstanceState);

??????? setContentView(R.layout.activity_third);

??????? String receiver="接收的数据如下: \n";

??????? Intent intent=getIntent();

??????? Bundle data= intent.getBundleExtra("data");? //获取捆绑数据

?? ?????receiver+="name: "+data.getString("name")+"\n";

??????? receiver+="age: "+data.getInt("age");

??????? //在屏幕上显示接收到的数据

??????? Toast.makeText(this, receiver, Toast.LENGTH_LONG).show();

??????? //通过意图对象携带返回数据

??????? intent=new Intent();

??????? intent.___ 1-7______("hello","How are you?");?

??????? //设置返回数据和结果码

??????? _____1-8_______(3,intent);?

??? }

}

2、编写一个程序,根据不同的Uri获取联系人表中的相关信息如下所示:

(1)通过ContactsContract.Contacts.CONTENT_URI的Uri获取Contacts表中的联系人id和姓名,其字段分别为ContactsContract.Contacts._ID、ContactsContract.Contacts.DISPLAY_NAME。

(2)通过ContactsContract.CommonDataKinds.Phone.CONTENT_URI的Uri获取Data表中的联系人id和电话,其字段分别为ContactsContract.CommonDataKinds.Phone.CONTACT_ID、ContactsContract.CommonDataKinds.Phone.NUMBER。

请根据上述系统联系人数据库的相关信息,编写一个程序,用于读取系统联系人的姓名和电话,并将读取的信息显示在界面中。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private TextView textView;

??? private Button query_contacts;

??? @Override

??? protected void onCreate(Bundle savedInstanceState) {

??????? super.onCreate(savedInstanceState);

??????? setContentView(R.layout.activity_main);

??????? query_contacts = findViewById(R.id.query_contacts);

??????? query_contacts.setOnClickListener(this);

??????? textView = findViewById(R.id.tv);

??? }

??? @Override

??? public void onClick(View v) {

??????? //动态申请读取手机通讯录权限

??????? ActivityCompat.___ 2-1______(MainActivity.this, new String[]{"android.permission.READ_CONTACTS"}, 1);

}

??? @Override

??? public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

????? ??super.onRequestPermissionsResult(requestCode, permissions, grantResults);

??????? if (requestCode == 1) {

??????????? for (int i = 0; i < permissions.length; i++) {

??????????????? if (permissions[i].equals("android.permission.READ_CONTACTS")
??????? && grantResults[i] == PackageManager.___
2-2______) {

??????????????? ????Toast.makeText(MainActivity.this,"已获取权限", Toast.LENGTH_SHORT).show();

??????????????????? fetchContactInformation();

??????????????? }else{

??????????????????? finish();

??????????????? }

??????????? }

??????? }

}

//读取手机联系人信息的方法

??? public void fetchContactInformation() {

??????? String id,name,phoneNumber;

? ??//定义一个字符串变量,用于保存查询结果

??????? String contacts = "";

? ??//获取内容解析器对象,用于对内容提供者的数据进行操作

??????? ContentResolver contentResolver = this.___ 2-3______;

? ??????//首先查询手机联系人表获取联系人的id和姓名

??????? Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,

??????????????? null, null, null, null);

??????? while(cursor.moveToNext()) {

??????????? //获取联系人id

??????????? id = cursor.getString(cursor.getColumnIndex(___ 2-4______));

??????????? //获取联系人姓名

??????????? name = cursor.getString(cursor.getColumnIndex(___ 2-5______));

??????????? contacts+= "姓名:"+name+"\n";

??????????? //然后查询手机联系人数据表获取联系人的电话号码

??????????? //根据id查询相应联系人的电话

??????????? Cursor phoneCursor = contentResolver.query(

?????? ?????????????ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

??????????????????? null, ___ 2-6______ + "=" + id, null, null);

??????????? contacts+= "电话:";

??????????? while(phoneCursor.moveToNext()) {

????? ??????????phoneNumber = phoneCursor.getString(

phoneCursor.getColumnIndex(___ 2-7______));

??????????????? contacts+= phoneNumber +"???????? ";

??????????? }

??????????? contacts+="\n\n";

??????????? phoneCursor.close();

??????? }

??? ????//在界面上显示所查询到的所有手机联系人信息

??????? textView.setText(contacts);

????? ??cursor.close();

??? }

}

都看到这了不点个赞收藏进收藏夹积灰???icon-default.png?t=N7T8https://pan.baidu.com/s/1bs25QlIs9YtjDop6TzzSbw?pwd=jtk8

文章来源:https://blog.csdn.net/JZJ_LYH/article/details/135519764
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。