资源描述
《移动应用开发》试题
题目:
1、请实现点击按钮拨打电话功能。(20分)
2、请实现点击按钮改变文本控件颜色得功能。(30分)
3、请实现使用socket通信得服务器端代码。(50分)
要求:逻辑结构完整,答案要点突出,论述充分,每题答案字数不少于400字。答案不得完全照抄书本或其她资料,不得互相抄袭。
中南大学网络教育课程考试
《移动应用开发》答卷
本人承诺:本试卷确为本人独立完成,若有违反愿意接受处理.签名:______________
学号:____________________专业:__________________学习中心:_________________
题号
一
二
三
总分
评阅人签字
成绩
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上面
<uses-permission android:name=”android、permission、CALL_PHONE"/〉
MainActivity、java:
package 、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) {
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:
〈?xml version="1、0" encoding="utf-8"?>
〈manifest xmlns:android=”"
package="、example、qq"
android:versionCode=”1”
android:versionName=”1、0" >
<uses-sdk
android:minSdkVersion=”17"
android:targetSdkVersion=”17” /〉
〈uses-permission android:name=”android、permission、CALL_PHONE”/〉
<application
android:allowBackup="true"
android:icon="drawable/ic_launcher"
android:label="string/app_name"
android:theme="style/AppTheme" 〉
〈activity
android:name="、example、qq、MainActivity”
android:label="string/app_name” >
<intent—filter〉
<action android:name="android、intent、action、MAIN" /〉
<category android:name="android、intent、category、LAUNCHER” /〉
</intent—filter〉
〈/activity>
〈activity
android:name="、example、qq、SecActivity"
android:label="string/title_activity_sec" 〉
</activity>
〈/application>
</manifest〉
1.
①Android Layout文件ﻫLayout文件,用来呈现一个拨打电话得按钮。
1. <?xml version=”1、0” encoding="utf-8”?>
2. 〈LinearLayout xmlns:android=”"
3. android:layout_width="fill_parent"
4. android:layout_height="fill_parent"
5. android:orientation=”vertical" >
6.
7. 〈Button
8. android:id="+id/buttonCall"
9. android:layout_width="wrap_content"
10. android:layout_height=”wrap_content"
11. android:text="call ” />
12. </LinearLayout>
②Activityﻫ使用以下代码,Android拨打电话:
1. Intent callIntent = new Intent(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. public class MainActivity extends Activity {
14. private Button button;
15.
16. Override
17. public void onCreate(Bundle savedInstanceState) {
18.
19. super、onCreate(savedInstanceState);
20. setContentView(R、layout、main);
21.
22. button = (Button) findViewById(R、id、buttonCall);
23.
24. // add button listener
25. button、setOnClickListener(new OnClickListener() {
26.
27. Override
28. public void onClick(View arg0) {
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中添加以下代码:
1. 〈uses—permission android:name="android、permission、CALL_PHONE" />
添加后:
1. <?xml version=”1、0” encoding="utf-8”?>
2. <manifest xmlns:android="”
3. package="net、cublog、android”
4. android:versionCode="1"
5. android:versionName=”1、0" >
6. <uses-sdk android:minSdkVersion="7” /〉
7. 〈uses-permission android:name="android、permission、CALL_PHONE” /〉
8. <application
9. android:icon="drawable/ic_launcher”
10. android:label="string/app_name" >
11. 〈activity
12. android:name=”、MainActivity"
13. android:label=”string/app_name" 〉
14. <intent-filter〉
15. 〈action android:name="android、intent、action、MAIN" />
16. <category android:name="android、intent、category、LAUNCHER" />
17. 〈/intent-filter>
18. </activity〉
19. </application>
20. 〈/manifest>
④PhoneStateListener 例子
更新上面得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. public class MainActivity extends Activity {
14. private Button button;
15.
16. Override
17. public void onCreate(Bundle savedInstanceState) {
18.
19. super、onCreate(savedInstanceState);
20. setContentView(R、layout、main);
21.
22. button = (Button) findViewById(R、id、buttonCall);
23.
24. // add PhoneStateListener
25. PhoneCallListener phoneListener = new PhoneCallListener();
26. TelephonyManager telephonyManager = (TelephonyManager) this
27. 、getSystemService(Context、TELEPHONY_SERVICE);
28. telephonyManager、listen(phoneListener,PhoneStateListener、LISTEN_CALL_STATE);
29.
30.
31. // add button listener
32. button、setOnClickListener(new OnClickListener() {
33.
34. Override
35. public void onClick(View arg0) {
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 activities
48. private class PhoneCallListener extends PhoneStateListener {
49.
50. private boolean isPhoneCalling = false;
51.
52. String LOG_TAG = "LOGGING 123";
53.
54. Override
55. public void onCallStateChanged(int state, String iningNumber) {
56.
57. if (TelephonyManager、CALL_STATE_RINGING == state) {
58. // phone ringing
59. Log、i(LOG_TAG, "RINGING, number: ” + iningNumber);
60. }
61.
62. if (TelephonyManager、CALL_STATE_OFFHOOK == state) {
63. // active
64. 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_OFFHOOK
72. Log、i(LOG_TAG, "IDLE");
73.
74. if (isPhoneCalling) {
75.
76. Log、i(LOG_TAG, "restart app");
77.
78. // restart app
79. 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. 〈uses—permission android:name="android、permission、READ_PHONE_STATE" /〉
添加后AndroidManifest、xml如下:
1. 〈?xml version="1、0” encoding="utf—8"?>
2. <manifest xmlns:android=""
3. package="net、cublog、android"
4. android:versionCode="1"
5. android:versionName="1、0” >
6. <uses-sdk android:minSdkVersion="7” />
7. 〈uses-permission android:name="android、permission、CALL_PHONE" />
8. 〈uses-permission android:name=”android、permission、READ_PHONE_STATE" />
9. <application
10. android:icon=”drawable/ic_launcher"
11. android:label="string/app_name" 〉
12. <activity
13. android:name="、MainActivity”
14. android:label="string/app_name” >
15. <intent-filter>
16. 〈action android:name=”android、intent、action、MAIN" />
17. <category android:name="android、intent、category、LAUNCHER" />
18. 〈/intent-filter〉
19. 〈/activity>
20. 〈/application〉
21. </manifest>
1、
答:MainActivity、java
import android、app、Activity;
import android、content、Intent;
import android、net、Uri;
import android、os、Bundle;
import android、view、Menu;
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());
// }
}
ﻫactivity_main、xml:
〈RelativeLayout xmlns:android=””
xmlns:tools=""
android:layout_width=”match_parent”
android:layout_height="match_parent”
android:paddingBottom="dimen/activity_vertical_margin”
android:paddingLeft=”dimen/activity_horizontal_margin"
android:paddingRight=”dimen/activity_horizontal_margin"
android:paddingTop="dimen/activity_vertical_margin"
tools:context="、MainActivity” >
<TextView
android:id="+id/show”
android:layout_width="wrap_content"
android:layout_height="wrap_content”
android:layout_alignParentLeft=”true"
android:layout_alignParentTop="true"
android:text=”string/hello_world” /〉
〈Button
android:id=”+id/btn_click”
android:layout_width="wrap_content"
android:layout_height="wrap_content”
android:layout_below=”id/show"
android:text=”点击我”
android:onClick=”clickHandler"/〉
<Button
android:id="+id/btn_call”
android:layout_width="wrap_content"
android:layout_height="wrap_content”
android:layout_below="id/btn_click”
android:text="拨打电话"/>
〈/RelativeLayout〉
ﻫAndroidManifest、xml:
<?xml version="1、0" encoding="utf-8"?〉
<manifest xmlns:android="”
package=”、xiami、caipiao”
android:versionCode="1"
android:versionName=”1、0" >
<uses—sdk
android:minSdkVersion=”8”
android:targetSdkVersion="18" />
ﻩ<uses-permission android:name="android、permission、CALL_PHONE”/〉
〈application
android:allowBackup="true”
android:icon="drawable/ic_launcher"
android:label="string/app_name"
android:theme=”style/AppTheme” >
<activity
android:name="、xiami、caipiao、MainActivity"
android:label="string/app_name” >
〈intent-filter>
〈action android:name=”android、intent、action、MAIN” />
〈category android:name=”android、intent、category、LAUNCHER" />
</intent—filter>
</activity>
</application>
〈/manifest>
2、
答:打开表单模板:%FR_HOME%\WebReport\WEB-INF\reportlets\demo\analytics\multi_report\all、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、Se
展开阅读全文