目前android已经在只能手机市场已经具有强大的霸主地位,也吸引了越来越多的追捧者。android的学习也越来越火。但是,报名费用确实大多人望而却步
一、新建项目callphone
1.1、建立项目
二、设置界面与项目名称
2.1、更改项目名称
res/values下strings.xml中更改app_name电话拔号器
string.xml
1
2
3
4
5
6
7
8
|
<?xml version= "1.0" encoding= "utf-8" ?> <resources> <string name= "app_name" >电话拔号器</string> <string name= "action_settings" >settings</string> <string name= "hello_world" >hello world!</string> <string name= "dail" >拔打电话</string> <string name= "defaul_prop" >请输入电话号码</string> </resources> |
2.2、设置文件框与按键
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<relativelayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/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" > <edittext android:id= "@+id/et_number" android:layout_width= "match_parent" android:layout_height= "wrap_content" android:inputtype= "phone" android:hint= "@string/defaul_prop" > <requestfocus /> </edittext> <button android:id= "@+id/btn_dail" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_alignparentright= "true" android:layout_below= "@+id/et_number" android:text= "@string/dail" /> </relativelayout> |
三、写java代码
3.1、mainactivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
package com.pb.dial; import android.net.uri; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.app.activity; import android.content.intent; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //根据id找到id,拔号按键的id button bt_dail= (button) findviewbyid(r.id.btn_dail); //为按键设置点击事件 bt_dail.setonclicklistener( new myonclicklistener()); } //单击监听事件 private class myonclicklistener implements onclicklistener{ /** * 单击按键被点击时调用的方法 */ @override public void onclick(view v) { //取出输入框中的内容 //先找到id edittext et_number=(edittext) mainactivity. this .findviewbyid(r.id.et_number); //根据id出内容 string phonenumber=et_number.gettext().tostring(); //意图,想做什么事 intent intent= new intent(); //开始拔打电话 intent.setaction(intent.action_call); //设置动作内容 uri:统一资源标识符,url的类型 统一资源定位符 intent.setdata(uri.parse( "tel:" +phonenumber)); //开启新的界面 startactivity(intent); } } } |
或者
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
package com.pb.dial; import android.net.uri; import android.os.bundle; import android.text.textutils; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.toast; import android.app.activity; import android.content.intent; public class mainactivity extends activity implements onclicklistener{ private button bt_dail; private edittext et_number; @override protected void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //根据id找到id,拔号按键的id bt_dail= (button) findviewbyid(r.id.btn_dail); //取出输入框中的内容 //先找到id //根据id出内容 et_number=(edittext) mainactivity. this .findviewbyid(r.id.et_number); //为按键设置点击事件 bt_dail.setonclicklistener( this ); } @override public void onclick(view v) { string phonenumber=et_number.gettext().tostring().trim(); //判断内容是否为空 textutils是个工具类 if (textutils.isempty(phonenumber)){ toast.maketext( this , "电话号码不能为空" , toast.length_long).show(); //如果是内容类请将this改为mainactivity.this return ; } //意图,想做什么事 intent intent= new intent(); //开始拔打电话 intent.setaction(intent.action_call); //设置动作内容 uri:统一资源标识符,url的类型 统一资源定位符 intent.setdata(uri.parse( "tel:" +phonenumber)); //开启新的界面 startactivity(intent); } //单击监听事件 /* private class myonclicklistener implements onclicklistener{ *//** * 单击按键被点击时调用的方法 *//* @override public void onclick(view v) { //取出输入框中的内容 //先找到id edittext et_number=(edittext) mainactivity.this.findviewbyid(r.id.et_number); //根据id出内容 string phonenumber=et_number.gettext().tostring(); //意图,想做什么事 intent intent=new intent(); //开始拔打电话 intent.setaction(intent.action_call); //设置动作内容 uri:统一资源标识符,url的类型 统一资源定位符 intent.setdata(uri.parse("tel:"+phonenumber)); //开启新的界面 startactivity(intent); } }*/ } |
3.2、添加权限
1
2
|
<!--添加权限 --> <uses-permission android:name= "android.permission.call_phone" /> |
3.3、运行
下面给大家分享一段代码 ————android电话拔号器和短信发送器
android电话拔号器
因为应用要使用手机的电话服务,所以要在清单文件androidmanifest.xml中添加电话服务权限:
1
2
3
4
5
6
7
8
9
|
<?xml version= "1.0" encoding= "utf-8" ?> <manifest xmlns:android= "http://schemas.android.com/apk/res/android" package = "cn.itcast.action" android:versioncode= "1" android:versionname= "1.0" > 略.... <uses-sdk android:minsdkversion=“ 6 " /> <uses-permission android:name= "android.permission.call_phone" /> </manifest> |
界面布局:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?xml version= "1.0" encoding= "utf-8" ?> <linearlayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation= "vertical" android:layout_width= "fill_parent" android:layout_height= "fill_parent" > <textview android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:text= "@string/inputmobile" /> <edittext android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:id= "@+id/mobile" /> <button android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "@string/button" android:id= "@+id/button" /> </linearlayout> |
linearlayout (线性布局)、absolutelayout(绝对布局)、relativelayout(相对布局)、tablelayout(表格布局)、framelayout(帧布局)
activity:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class dialeraction extends activity { @override public void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); setcontentview(r.layout.main); button button = (button)findviewbyid(r.id.button); button.setonclicklistener( new view.onclicklistener(){ public void onclick(view v) { edittext edittext = (edittext)findviewbyid(r.id.mobile); intent intent = new intent(intent.action_call, uri.parse( "tel:" + edittext.gettext())); dialeraction. this .startactivity(intent); } }); } } |
短信发送器
因为应用要使用手机的短信服务,所以要在清单文件androidmanifest.xml中添加短信服务权限:
1
|
<uses-permission android:name= "android.permission.send_sms" /> |
界面布局:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?xml version= "1.0" encoding= "utf-8" ?> <linearlayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation= "vertical“ android:layout_width=" fill_parent“ android:layout_height= "fill_parent" > <textview android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:text= "@string/inputmobile" /> <edittext android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:id= "@+id/mobile" /> <textview android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:text= "@string/content" /> <edittext android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:minlines= "3" android:id= "@+id/content" /> <button android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "@string/button" android:id= "@+id/button" /> </linearlayout> |
activity主要代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
string mobile = mobileview.gettext().tostring(); string content = contentview.gettext().tostring(); smsmanager smsmanager = smsmanager.getdefault(); pendingintent sentintent = pendingintent.getbroadcast(smssender. this , 0 , new intent(), 0 ); if (content.length()> 70 ){ //如果字数超过70,需拆分成多条短信发送 list<string> msgs = smsmanager.dividemessage(content); for (string msg : msgs){ smsmanager.sendtextmessage(mobile, null , msg, sentintent, null ); //最后二个参数为短信已发送的广播意图,最后一个参数为短信对方已收到短信的广播意图 } } else { smsmanager.sendtextmessage(mobile, null , content, sentintent, null ); } toast.maketext(smssender. this , "短信发送完成" , toast.length_long).show(); |