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)了,即打电话了。
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"/>
Ÿ Android程序中如果出错,错误不会显示在Console中,而是显示在LogCat界面下。可以从window – show view中打开
Ÿ 日志信息分为5个级别:verbose > debug > info > warn > error 高级的包含低级的
Ÿ 可以创建过滤器对日志进行过滤显示,点击绿色加号,可以按照tag、pid、level进行筛选
Ÿ 在电脑上安装手机驱动
有些手机自带驱动,有些没有,可以从官网下载。或者可以使用“豌豆荚”、“91助手”等软件自动安装。
Ÿ 在手机设置中打开USB调试,将手机用USB数据线连接到电脑
Ÿ 检查Eclipse的设备管理器中是否显示出新设备
如果未能显示出设备,检查驱动安装是否正常,USB调试是否打开。在“我的电脑”-“设备管理器”-USB硬件检查是否未安装驱动。
Ÿ Eclipse上安装程序到手机
Eclipse上右键点击工程 – Run as – Android Application – 选择手机的那个devices即可自动安装运行。
Ÿ 手动打包安装
右键点击工程 – Export – Export Android Application – 选择或创建密钥对程序签名并打包生成apk文件
将apk文件放到手机的SD卡中,通过手机文件浏览器执行安装
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(....)将短信发出去。
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"/>