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

4.1 电话拨号

4.1.1需求分析效果图

Android入门(4) 电话拨打与发送短信_第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类必须实现一个方法public void onClick(View)方法(main.xmlButton标签中指定了onClick=”onClick”了呢)打电话需要一个Intent意图对象,设置intentactiondata(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 高级的包含低级的

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

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 需求分析效果图

Android入门(4) 电话拨打与发送短信_第2张图片

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类必须实现一个方法public void doSendMessage(View)方法(main.xmlButton标签中指定了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();//获取要发送的内容

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

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

你可能感兴趣的:(android,android)