4.1电话拨号
4.1.1需求分析效果图
4.1.2设计思路及步骤
1、先画布置,在res文件夹的layout文件夹的main.xml文件夹中。首先分析出此界面只需要linear线性布局就可以了。
2、需要三个控件:一个TextView(显示请输入手机号标签)、一个EditText(用于接受用户输入的手机号)、一个Button(用于点击时拨打电话)
3、核心四路:当用户点击“呼叫此号码”按钮时,即可打出电话。显然需要在Button上注册一个监听器。而打电话需要获取EditText中输入的手机号,所以肯定需要给EditText的唯一的id号为numET。Button标签上可直接指定android:onClick属性值为”onClick”。
4、接着就可以直接在自定义的Activity类MainActivity中写代码了,注意MainActivity类必须实现一个方法publicvoidonClick(View)方法(因main.xml的Button标签中指定了onClick=”onClick”了呢)。打电话需要一个Intent意图对象,设置intent的action与data(data中只接受Uri,需要用tel:协议,即tel:电话号码)后,就可以startActvity(intent)了,即打电话了。
4.1.3电话拨号示例代码
packagecom.test.phone;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
publicclassMainActivity3extendsActivity{
privateButtoncallBT;
privateEditTextphoneET;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//1.获取callphone的按钮对象,可以通过findVeiwById
//若Button没有指定onClick,则需要获取button对象,指定好onClickListener监听器
callBT=(Button)findViewById(R.id.callBT);
//2.获取输入的数字EditText对象
phoneET=(EditText)findViewById(R.id.numET);
//3.本应该在是callBT即按钮上注册onClickLintener监听器的,
//但自定义的Activity可以现时实现此监听接口,所以只需要注册自己即可
//AndroidMainfest.xml文件中,支持可以直接在Button中配置好onClick=doXXX即可。
}
publicvoiddoCallPhone(Viewv){
/4.获取输入的具体数字是多少
StringsourceNum=phoneET.getText().toString();
if(sourceNum.length()<1){
Toast.makeText(getApplicationContext(),"你没脑子啊,没输号码直接拨打电话",Toast.LENGTH_SHORT).show();
return;//注册Toast.markText(..)方法,要有.show()。不可忘记哦。
}
//拨打电话其实是一个想法意图,需要先构造一个意图对象,在意图对象中指定好要做的动作及需要的数据,
//然后开启一个activity就可以了。
Intentintent=newIntent();//构造一个意图对象
intent.setAction(Intent.ACTION_CALL);//指定意图将要做的动作
intent.setData(Uri.parse("tel:"+sourceNum));//指定意图要动作时的需要的数据。
startActivity(intent);//开启一个Activity
}
}
5、需要注意打电话,必须在清单文件AndroidManifest.xml文件中配置声明应用程序需要打电话的许可。
<uses-permissionandroid:name="android.permission.CALL_PHONE"/>
4.2查看程序错误信息
ŸAndroid程序中如果出错,错误不会显示在Console中,而是显示在LogCat界面下。可以从window–showview中打开
Ÿ日志信息分为5个级别:verbose>debug>info>warn>error高级的包含低级的
Ÿ可以创建过滤器对日志进行过滤显示,点击绿色加号,可以按照tag、pid、level进行筛选
4.3将程序安装到真实手机
Ÿ在电脑上安装手机驱动
有些手机自带驱动,有些没有,可以从官网下载。或者可以使用“豌豆荚”、“91助手”等软件自动安装。
Ÿ在手机设置中打开USB调试,将手机用USB数据线连接到电脑
Ÿ检查Eclipse的设备管理器中是否显示出新设备
如果未能显示出设备,检查驱动安装是否正常,USB调试是否打开。在“我的电脑”-“设备管理器”-USB硬件检查是否未安装驱动。
ŸEclipse上安装程序到手机
Eclipse上右键点击工程–Runas–AndroidApplication–选择手机的那个devices即可自动安装运行。
Ÿ手动打包安装
右键点击工程–Export–ExportAndroidApplication–选择或创建密钥对程序签名并打包生成apk文件
将apk文件放到手机的SD卡中,通过手机文件浏览器执行安装
4.4短信发送
4.4.1需求分析效果图
4.4.2设计思路及步骤
1、先画布置,在res文件夹的layout文件夹的main.xml文件夹中。首先分析出此界面只需要linear线性布局就可以了。
2、需要五个控件:二个TextView(显示请输入手机号码与短信内容标签)、两个EditText(用于接受用户输入的手机号与短信内容)、一个Button(用于点击时发送短信)
3、核心四路:当用户点击“发送短信”按钮时,即可发送出短信。显然需要在Button上注册一个监听器。而发送短信需要获取EditText中输入的手机号与短信内容,所以肯定需要给这两个EditText分别的唯一的id号为telNumET、contentET。Button标签上可直接指定android:onClick属性值为”doSendMessage”。
4、接着就可以直接在自定义的Activity类MainActivity中写代码了,注意MainActivity类必须实现一个方法publicvoiddoSendMessage(View)方法(因main.xml的Button标签中指定了onClick=”doSendMessage”了呢)。发送短信,首先需要SmsManager对象,此对象的获取可以通过SmsManager.getDefault()方法获取SmsManager的对象,接着根据获取出来的内容content,用smsManager.divideMessage(content)分割多条信息的List<String>messages对象。最后循环遍历messages,采用smsManager.sendTextMessage(....)将短信发出去。
4.4.3短信发送示例代码:
packagecom.test.sendmessage;
importjava.util.List;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.telephony.SmsManager;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
privateEditTexttelNumET;
privateEditTextcontentET;
privateSmsManagermanager;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取手机号控件
telNumET=(EditText)findViewById(R.id.telNumET);
//获取短信内容控件
contentET=(EditText)findViewById(R.id.contentET);
//发送短信,必须要用SmsManager对象的相应的方法。如sendTextMessage(....);
manager=SmsManager.getDefault();
}
publicvoiddoSendMessage(Viewview){
try{
StringtelNum=telNumET.getText().toString();//获取要发送到哪个手机号上
Stringcontent=contentET.getText().toString();//获取要发送的内容
//要根据默认的wcdma或cdma的网络制式,选择截取多少字符作为一个短信。
List<String>messages=manager.divideMessage(content);//发送内容的短信集合,若信息很长时会被截取成多条短信发送
for(Stringmessage:messages){
//第一个参数,要发送到的手机号。第二参数,发送者手机信息服务提供中心地址,null为采用根据手机网络制式选择。
//第三个参数,要发送的内容。第四、五参数与发送广播意图相关,可直接指定为null
manager.sendTextMessage(telNum,null,message,null,null);
}
contentET.setText("");
Toast.makeText(getApplicationContext(),"发送成功",Toast.LENGTH_SHORT).show();
}catch(Exceptione){
e.printStackTrace();
//当前一Activity也是一个Context对象的
Toast.makeText(this,"发送失败",Toast.LENGTH_SHORT).show();
}
}
}
6、需要注意发短信,必须在清单文件AndroidManifest.xml文件中配置声明应用程序需要打电话的许可。
<uses-permissionandroid:name="android.permission.SEND_SMS"/>