您的位置:首页 > 移动开发 > Android开发

Android开发入门之电话拨打与发送短信

2012-12-22 11:13 671 查看

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类必须实现一个方法public void onClick(View)方法(因main.xml的Button标签中指定了onClick=”onClick”了呢)。打电话需要一个Intent意图对象,设置intent的action与data(data中只接受Uri,需要用tel:协议,即tel:电话号码)后,就可以startActvity(intent)了,即打电话了。

4.1.3 电话拨号示例代码

package com.test.phone;

import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

public class MainActivity3 extends Activity {

private Button callBT;

private EditText phoneET;

@Override

public void onCreate(Bundle savedInstanceState) {

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即可。

}

public void doCallPhone(View v){

/4.获取输入的具体数字是多少

String sourceNum = phoneET.getText().toString();

if(sourceNum.length()<1){

Toast.makeText(getApplicationContext(), "你没脑子啊,没输号码直接拨打电话", Toast.LENGTH_SHORT).show();

return; //注册Toast.markText(..)方法,要有.show()。不可忘记哦。

}

//拨打电话其实是一个想法意图,需要先构造一个意图对象,在意图对象中指定好要做的动作及需要的数据,

//然后开启一个activity就可以了。

Intent intent = new Intent(); //构造一个意图对象

intent.setAction(Intent.ACTION_CALL); //指定意图将要做的动作

intent.setData(Uri.parse("tel:"+sourceNum));//指定意图要动作时的需要的数据。

startActivity(intent); //开启一个Activity

}

}

5、需要注意打电话,必须在清单文件AndroidManifest.xml文件中配置声明应用程序需要打电话的许可。

<uses-permission android:name="android.permission.CALL_PHONE"/>

4.2 查看程序错误信息

Ÿ Android程序中如果出错,错误不会显示在Console中,而是显示在LogCat界面下。可以从window – show view中打开

Ÿ 日志信息分为5个级别:verbose > debug > info > warn > error 高级的包含低级的

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

4.3 将程序安装到真实手机

Ÿ 在电脑上安装手机驱动

有些手机自带驱动,有些没有,可以从官网下载。或者可以使用“豌豆荚”、“91助手”等软件自动安装。

Ÿ 在手机设置中打开USB调试,将手机用USB数据线连接到电脑

Ÿ 检查Eclipse的设备管理器中是否显示出新设备

如果未能显示出设备,检查驱动安装是否正常,USB调试是否打开。在“我的电脑”-“设备管理器”-USB硬件检查是否未安装驱动。

Ÿ Eclipse上安装程序到手机

Eclipse上右键点击工程 – Run as – Android Application – 选择手机的那个devices即可自动安装运行。

Ÿ 手动打包安装

右键点击工程 – Export – Export Android Application – 选择或创建密钥对程序签名并打包生成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类必须实现一个方法public void doSendMessage(View)方法(因main.xml的Button标签中指定了onClick=”doSendMessage”了呢)。 发送短信,首先需要SmsManager对象,此对象的获取可以通过SmsManager.getDefault()方法获取SmsManager的对象,接着根据获取出来的内容content,用smsManager.divideMessage(content)分割多条信息的List<String> messages对象。最后循环遍历messages,采用smsManager.sendTextMessage(....)将短信发出去。

4.4.3 短信发送示例代码:

package com.test.sendmessage;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.telephony.SmsManager;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

public class MainActivity extends Activity {

private EditText telNumET;

private EditText contentET;

private SmsManager manager;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//获取手机号控件

telNumET = (EditText) findViewById(R.id.telNumET);

//获取短信内容控件

contentET = (EditText) findViewById(R.id.contentET);

//发送短信,必须要用SmsManager对象的相应的方法。如sendTextMessage(....);

manager = SmsManager.getDefault();

}

public void doSendMessage(View view){

try{

String telNum = telNumET.getText().toString();//获取要发送到哪个手机号上

String content = contentET.getText().toString();//获取要发送的内容

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

List<String> messages = manager.divideMessage(content); //发送内容的短信集合,若信息很长时会被截取成多条短信发送

for (String message : messages) {

//第一个参数,要发送到的手机号。第二参数,发送者手机信息服务提供中心地址,null为采用根据手机网络制式选择。

//第三个参数,要发送的内容。第四、五参数 与发送广播意图相关,可直接指定为null

manager.sendTextMessage(telNum, null, message, null, null);

}

contentET.setText("");

Toast.makeText(getApplicationContext(), "发送成功", Toast.LENGTH_SHORT).show();

}catch(Exception e){

e.printStackTrace();

//当前一Activity也是一个Context对象的

Toast.makeText(this, "发送失败", Toast.LENGTH_SHORT).show();

}

}

}

6、需要注意发短信,必须在清单文件AndroidManifest.xml文件中配置声明应用程序需要打电话的许可。

<uses-permission android:name="android.permission.SEND_SMS"/>

大学生毕业后头5年决定你的一生海量android源码和学习教程与资料集

数字电视接口规范大全(行业标准)程序员必备:英语口语学习教程大全

20本Linux电子书学习教程2013年25家IT高科技公司薪酬排行榜

2013年Android平台8大预测优秀Android开发人员必须注意的10个误区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: