`
yidongkaifa
  • 浏览: 4038775 次
文章分类
社区版块
存档分类
最新评论

Android入门(4) 电话拨打与发送短信

 
阅读更多

4.1电话拨号

4.1.1需求分析效果图

4.1.2设计思路及步骤

1、先画布置,在res文件夹的layout文件夹的main.xml文件夹中。首先分析出此界面只需要linear线性布局就可以了。

2、需要三个控件:一个TextView(显示请输入手机号标签)、一个EditText(用于接受用户输入的手机号)、一个Button(用于点击时拨打电话)

3、核心四路:当用户点击“呼叫此号码”按钮时,即可打出电话。显然需要在Button上注册一个监听器。而打电话需要获取EditText中输入的手机号,所以肯定需要给EditText的唯一的id号为numETButton标签上可直接指定android:onClick属性值为onClick

4、接着就可以直接在自定义的ActivityMainActivity中写代码了,注意MainActivity类必须实现一个方法publicvoidonClick(View)方法(main.xmlButton标签中指定了onClick=”onClick”了呢)打电话需要一个Intent意图对象,设置intentactiondata(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高级的包含低级的

Ÿ可以创建过滤器对日志进行过滤显示,点击绿色加号,可以按照tagpidlevel进行筛选

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号为telNumETcontentETButton标签上可直接指定android:onClick属性值为”doSendMessage”。

4、接着就可以直接在自定义的ActivityMainActivity中写代码了,注意MainActivity类必须实现一个方法publicvoiddoSendMessage(View)方法(main.xmlButton标签中指定了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();//获取要发送的内容

//要根据默认的wcdmacdma的网络制式,选择截取多少字符作为一个短信。

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"/>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics