2022年《移动应用开发》试题及答案.pdf
移动应用开发试题及答案移动应用开发试题题目 : 1、请实现点击按钮拨打电话功能。(20 分)2、请实现点击按钮改变文本控件颜色的功能。(30 分)3、请实现使用socket 通信的服务器端代码。(50 分)要求 : 逻辑结构完整, 答案要点突出, 论述充分 , 每题答案字数不少于400 字。答案不得完全照抄书本或其她资料 , 不得互相抄袭。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案中南大学网络教育课程考试移动应用开发答卷本人承诺 : 本试卷确为本人独立完成, 若有违反愿意接受处理。签名 :_学号 :_ 专业 :_ 学习中心 :_题号一二三总分评阅人签字成绩1.答: private Button btn2; btn2=(Button)findViewById(R、id 、btn2);/在 xml 中把 button2改成 btn2, 为该按钮的id btn2 、setOnClickListener(new OnClickListener(); 在 OnClick() Intent in2 = new Intent(); in2、setAction(Intent、ACTION_CALL);/ 指定意图动作 in2、setData(Uri、parse(tel:1836380000);/指定电话号码 startActivity(in2); 在 android系统中 , 所有系统请求 , 必须要在 androidmainfest、xml 中注册在application上面 MainActivity、java: package com 、example、qq; import android、net 、Uri; import android、os、Bundle; import android、app、Activity; import android、app、AlertDialog; import android、app、Dialog; import android、content 、DialogInterface; import android、content 、Intent; import android、view、LayoutInflater; import android、view 、Menu; import android、view 、View; import android、view 、View、OnClickListener; import android、widget 、Button; import android、widget 、EditText; public class MainActivity extends Activity private Button btn; private Button btn2; private EditText et; private EditText et2; Override protected void onCreate(Bundle savedInstanceState) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案 super、onCreate(savedInstanceState); setContentView(R、 layout 、activity_main); et = (EditText)findViewById(R、id 、editText1); et2 = (EditText)findViewById(R、 id 、editText2); btn2 = (Button)findViewById(R、id 、btn2); btn = (Button)findViewById(R、id 、button1); btn、setOnClickListener(new OnClickListener() Override public void onClick(View arg0) / TODO Auto-generated method stub final String str = et、getText()、toString()、trim(); final String str2 = et2、getText()、toString()、trim(); if (str、equals(str2) Intent in = new Intent(MainActivity、this,SecActivity、 class); startActivity(in); else System、out 、 println(!); ); btn2、setOnClickListener(new OnClickListener() Override public void onClick(View arg0) / TODO Auto-generated method stub Intent in2 = new Intent(); in2 、setAction(Intent、ACTION_CALL); in2 、setData(Uri、parse(tel:); startActivity(in2); ); Override public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present、 getMenuInflater()、inflate(R、menu 、main, menu); return true; androidmainfest、xml: 1.Android Layout文件Layout 文件, 用来呈现一个拨打电话的按钮。1. 2. 6.7.12.Activity使用以下代码 ,Android拨打电话 : 1. Intent callIntent = newIntent ( Intent 、ACTION_CALL);2.callIntent、setData ( Uri 、parse (tel:);3.startActivity( callIntent );文件:MainActivity、java 当点击拨打电话按钮时 , 就会拨打 这个号码。1. package net 、cublog 、android ;2. import android 、app、Activity;3. import android 、content 、Context ;4. import android 、content 、Intent ;5. import android 、net 、Uri ;6. import android 、os、Bundle;7. import android 、telephony 、PhoneStateListener;8. import android 、telephony 、TelephonyManager;9. import android 、util、Log;10.import android 、view、View;11.import android 、view、View、OnClickListener;12.import android 、widget 、Button ;13.publicclass MainActivity extendsActivity14.privateButtonbutton ;15.16. Override17.publicvoid onCreate (Bundle savedInstanceState) 18.精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案19.super、onCreate( savedInstanceState);20.setContentView ( R 、layout 、main);21.22.button = ( Button ) findViewById ( R 、id 、buttonCall);23.24./ add button listener25.button 、setOnClickListener(newOnClickListener()26.27. Override28.publicvoid onClick ( Viewarg0) 29.30.Intent callIntent = new Intent( Intent 、ACTION_CALL);31.callIntent、setData ( Uri 、parse (tel:);32.startActivity(callIntent);33.34.35.36.);37.38.39.40.41.Android Manifest拨打电话 ,Android需要 CALL_PHONE的权限。在 AndroidManifest、xml 中添加以下代码 : 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案1. 添加后 : 1. 2. 6.7.8.11.14.15.16.17.18.19.20.PhoneStateListener 例子精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案更新上面的 Activity,模拟拨打电话的状态 , 当电话拨打结束后 , 返回原始 Activity,实际上只就是重启了这个activity。1. package net 、cublog 、android ;2. import android 、app、Activity;3. import android 、content 、Context ;4. import android 、content 、Intent ;5. import android 、net 、Uri ;6. import android 、os、Bundle;7. import android 、telephony 、PhoneStateListener;8. import android 、telephony 、TelephonyManager;9. import android 、util、Log;10.import android 、view、View;11.import android 、view、View、OnClickListener;12.import android 、widget 、Button ;13.publicclass MainActivity extendsActivity14.privateButtonbutton ;15.16. Override17.publicvoid onCreate (Bundle savedInstanceState) 18.19.super、onCreate( savedInstanceState);20.setContentView ( R 、layout 、main);21.22.button = ( Button ) findViewById ( R 、id 、buttonCall);23.24./ add PhoneStateListener25.PhoneCallListener phoneListener =new PhoneCallListener();26.TelephonyManager telephonyManager = ( TelephonyManager) this27.、getSystemService ( Context 、TELEPHONY_SERVICE);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案28.telephonyManager 、listen(phoneListener , PhoneStateListener、LISTEN_CALL_STATE);29.30.31./ add button listener32.button 、setOnClickListener(newOnClickListener()33.34. Override35.publicvoid onClick ( Viewarg0) 36.37.Intent callIntent = new Intent( Intent 、ACTION_CALL);38.callIntent、setData ( Uri 、parse (tel:);39.startActivity(callIntent);40.41.42.43.);44.45.46.47./monitor phone call activities48.privateclass PhoneCallListener extendsPhoneStateListener 49.50.privateboolean isPhoneCalling =false ;51.52.String LOG_TAG = LOGGING 123 ;53.精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案54. Override55.publicvoidonCallStateChanged (intstate , StringincomingNumber)56.57.if( TelephonyManager、CALL_STATE_RINGING = state ) 58./ phone ringing59.Log、i ( LOG_TAG,RINGING, number: + incomingNumber);60.61.62.if( TelephonyManager、CALL_STATE_OFFHOOK = state ) 63./ active64.Log、i ( LOG_TAG,OFFHOOK);65.66.isPhoneCalling =true ;67.68.69.if( TelephonyManager、CALL_STATE_IDLE = state ) 70./ run when class initial and phone call ended, 71./ need detect flag from CALL_STATE_OFFHOOK72.Log、i ( LOG_TAG,IDLE );73.74.if( isPhoneCalling) 75.精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案76.Log、i (LOG_TAG, restart app);77.78./ restart app79.Intent i = getBaseContext () 、getPackageManager()80.、getLaunchIntentForPackage(81.getBaseContext () 、getPackageName ();82.i 、addFlags( Intent 、FLAG_ACTIVITY_CLEAR_TOP);83.startActivity( i );84.85.isPhoneCalling = false;86.87.88.89.90.91.由于 PhoneStateListener需要 READ_PHONE_STATE权限, 需要在 AndroidManifest、xml 中添加以下代码 : 1. 添加后 AndroidManifest、xml 如下: 1. 2. 6.7.8.9.12.15.16.17.18.19.20.21.1、答:MainActivity 、java import android、app、Activity; import android、content 、Intent; import android、net 、Uri; import android、os、Bundle; import android、view、Menu; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案import android、view、View; import android、view、View、OnClickListener; import android、widget 、Button; import android、widget 、TextView; public class MainActivity extends Activity private Button mCallButton; Override protected void onCreate(Bundle savedInstanceState) super、onCreate(savedInstanceState); setContentView(R 、layout 、activity_main); mCallButton = (Button) findViewById(R、id 、btn_call); mCallButton 、setOnClickListener(new OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub / 打给联通客服 10010 Intent intent = new Intent(Intent、ACTION_CALL,Uri 、parse(tel:10010); startActivity(intent); ); / Override / public boolean onCreateOptionsMenu(Menu menu) / / Inflate the menu; this adds items to the action bar if it is present 、/ getMenuInflater()、inflate(R、menu 、main, menu); / return true; / / / public void clickHandler(View source) / TextView tv = (TextView) findViewById(R、id 、show); / tv 、setText(您好!现在时间 : + new java、util、Date(); / 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案activity_main 、xml: AndroidManifest、xml: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案 2、答: 打开表单模板 :%FR_HOME%WebReportWEB-INFreportletsdemoanalyticsmulti_reportall、frm 。选中总体概况按钮,在右侧的属性表中添加点击事件。具体的 js 代码如下 : if(window、oldtd != null) window、 oldtd 、removeAttr(style); var td; if($(e、target)、is(button) td=$(e、target)、parent()、parent(); else td=$(e、target)、find(button)、parent()、 parent(); td、css(background-image:url(),background-color:rgb(170, 223, 248); window、oldtd=td; 3、答: 服务器端author version1 、002008/8/2 / importjava、 net 、ServerSocket; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案importjava、 net 、Socket; importjava、 io 、IOException; importjava、 io 、BufferedReader; importjava、 io 、InputStreamReader; importjava、 io 、PrintWriter; publicclassServerSocketTest privateServerSocketss; privateSocketsocket; privateBufferedReaderin; privatePrintWriterout; publicServerSocketTest() try ss=newServerSocket(10000);/建立服务器 , 监听、System、out 、println(Serverislisteningat10000、 ); while(true) socket=ss 、accept(); / 获取客户端IP 地址StringremoteIP=socket、getInetAddress()、getHostAddress(); / 获取客户端连接端口StringremotePort=:+socket、getLocalPort(); System、out 、println(Aclinetcomein!IP:+remoteIP+remotePort); / 读取客户端输入in=newBufferedReader(newInputStreamReader(socket、getInputStream(); Stringline=in、readLine(); System、out 、println(Clientsendis:+line); / 将服务器端信息发往客户端out=newPrintWriter(socket、getOutputStream(),true); out 、println(YourMessageReceived!); out 、close(); in 、close(); socket 、close(); catch(IOExceptionex) System、out 、println(ex、getCause(); publicstaticvoidmain(Stringargs) newServerSocketTest(); 3、答: 开发环境为eclipse,首先 ,新建两个普通的Java 工程 , 一个命名为server_1,作为服务端 ; 另一个命名为 client_1,作为客户端。 完成的功能就就是在客户端的控制台输入内容后,客户端将内容发送至服务端,在服务端的控制台可以瞧到输入的内容, 当输入的内容为shutdown 时,服务端与客户端都关闭通信, 通信结精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案束。服务端代码 : package server_1; import java、io 、BufferedReader; import java、io 、IOException; import java、io 、InputStreamReader; import java、io 、PrintWriter; import java、net 、ServerSocket; import java、net 、Socket; public class server_1 public static void main(String args) throws IOException /将异常全部抛出 ServerSocket server = new ServerSocket(10000); /用 serversocket来启动服务器 , 并指定端口号 System、out 、println(服务器启动。); Socket socket = server、accept(); /获取客户端的socket 信息 BufferedReader in = null; in = new BufferedReader(new InputStreamReader(socket、getInputStream(); /启动缓冲区 while (true) String msg = in、readLine(); / 将客户端发送来的信息存储在msg中 System、out 、println(msg); if (msg、equals(shutdown) /客户端如果发送的就是shutdown, 就关闭客户端 break; in、close(); /执行相应的关闭操作 考虑这就是一个入门级的程序,所以暂时不考虑各种异常情况。建立 seversocket,并且指定服务器的端口号为10000, 此时服务器端开始运行。( 端口号尽量取大于1024的数字 , 小于 1024 的一般都就是系统程序占用) 然后利用socket 实现与客户端的连接。in 就是一个输入缓冲区, 客户端发送来的信息就暂时存储在这个缓冲区中。然后用while语句 , 循环的监听客户端发送过来的数据, 当就是一般信息时, 就讲客户端发来的内同打印到控制台 , 如果就是“ shutdown”, 则关闭服务器端, 此次通信终止。3、答: 开发环境 Vs 2008 新建一个 win32 console project / 服务器端代码 / Server、 cpp : Defines the entry point for the console application、/ #include stdafx、h #include winsock2、h 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案#pragma comment(lib, ws2_32、lib) #include using namespace std; int _tmain(int argc, char* argv) const int BUF_SIZE = 64; WSADATA wsd; /WSADATA变量SOCKET sServer; / 服务器套接字SOCKET sClient; / 客户端套接字SOCKADDR_IN addrServ; / 服务器地址char bufBUF_SIZE; / 接收数据缓冲区char sendBufBUF_SIZE;/返回给客户端得数据int retVal; / 返回值/ 初始化套结字动态库if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) cout WSAStartup failed! endl; return 1; / 创建套接字sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(INVALID_SOCKET = sServer) cout socket failed! endl; WSACleanup();/释放套接字资源; return -1; / 服务器套接字地址addrServ 、sin_family = AF_INET; addrServ 、sin_port = htons(4999); addrServ 、sin_addr 、s_addr = INADDR_ANY; / 绑定套接字retVal = bind(sServer, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN); if(SOCKET_ERROR = retVal) cout bind failed! endl; closesocket(sServer); / 关闭套接字WSACleanup(); / 释放套接字资源; return -1; / 开始监听retVal = listen(sServer, 1); if(SOCKET_ERROR = retVal) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案 cout listen failed! endl; closesocket(sServer); / 关闭套接字WSACleanup(); / 释放套接字资源; return -1; / 接受客户端请求sockaddr_in addrClient; int addrClientlen = sizeof(addrClient); sClient = accept(sServer,(sockaddr FAR*)&addrClient, &addrClientlen); if(INVALID_SOCKET = sClient) cout accept failed! endl; closesocket(sServer); / 关闭套接字WSACleanup(); / 释放套接字资源; return -1; while(true) / 接收客户端数据ZeroMemory(buf, BUF_SIZE); retVal = recv(sClient, buf, BUF_SIZE, 0); if (SOCKET_ERROR = retVal) cout recv failed! endl; closesocket(sServer); / 关闭套接字closesocket(sClient); / 关闭套接字WSACleanup(); / 释放套接字资源; return -1; if(buf0 = 0) break; cout 客户端发送的数据: buf endl; cout sendBuf; send(sClient, sendBuf, strlen(sendBuf), 0); / 退出closesocket(sServer); / 关闭套接字closesocket(sClient); / 关闭套接字WSACleanup(); / 释放套接字资源; return 0; 3、精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案答:server 、c: #include #include #include /perror错误输出#include #include #include #include #include #include #include #define PORT 8999 #define MAXSIZE (8 * 4096) int main(int argc, char *argv) int sockfd, peer, len; struct sockaddr_in serv_addr, clnt_addr; char recvmsgMAXSIZE, sendmsgMAXSIZE; sockfd = socket(AF_INET, SOCK_STREAM, 0);/创建 socket if (sockfd 0) perror(socket error); return -1; /* 配置 socket */ serv_addr 、sin_family = AF_INET; serv_addr 、sin_port = htons(PORT); serv_addr 、sin_addr 、s_addr = INADDR_ANY; bzero(&(serv_addr、sin_zero), 8); /* 绑定 socket */ if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr) 0) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 20 页,共 23 页 - - - - - - - - - - 移动应用开发试题及答案 perror(bind err); return -1; /* 主动 socket 转为被动监听 socket */ if (listen(sockfd, 1) 0) perror(listen error); return -1; /* 循环监听 */ len = sizeof(clnt_addr); while (1) printf(begin to acceptn); peer = accept(sockfd, (struct sockaddr *)&clnt_addr, &len);/* 接收连接 */ if (peer 0) perror(Server: accept failed、n); continue; memset(recvmsg, 0, MAXSIZE); memset(sendmsg, 0, MAXSIZE); if (read(peer, recvmsg, sizeof(recvmsg) 0) perror(recv err); break; printf(client: %sn, recvmsg); if (!strcmp(recvmsg, quit) printf(close a connectionn); break; strcpy(sendmsg, I get your req); write(peer, sendmsg, strlen(sendmsg) + 1);