首发地址
http://www.eoeandroid.com/thread-228079-1-1.html

1 案例目的

本案例通过一个简单通讯工具来巩固android的activity、LinearLayout布局、基本控件Button、打电话发短信以及应用程序交互通信Intent的使用。本案例重点讲解android中事件处理原理以及该原理在项目中的应用。
2 案例介绍
零距通这个通讯工具可以实现发短信打电话的功能,无论在天涯海角,只需使用零距通,让你跟你的朋友,家人从此变成零距离无障碍沟通,零距通,让你的生活从此零距离。
3 案例分析
本项目采用android2.3.3开发。由于该项目主要实现打电话发短信的功能,用Intent激活程序---电话与短信本篇中使用的 Intent 打电话程序中,Intent 的行为是 ACTION_DIAL,同时在 Intent 中传递被呼叫人的电话号码。拨打电话的关键有两个方面,首先,要在 AndroidManifest 中添加 uses-permission,并声明android:name="android.permission.CALL_PHONE" 权限。由於打电话是属於手机的底层服务,与用户隐私及通话费用等话题息息相关,困此,程序必须取得权限。其次,通过自定义 Intent 对象,带入“ACTION_CALL” 这个关键(Action),以及通过Uri.parse()的方法将用户输入电话号码(Data)带入,最后以 startActivity()方法,即可完成。要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中添加如下内容
<uses-permissionandroid:name=”android.permission.SEND_SMS”/> 

4 案例设计

单击“发短信”,“打电话”按钮时的事件处理流程如下:
  (1)创建“发短信”,“打电话”按钮事件源。
  (2)事件源向点击事件监听器类注册。
  (3)当点击事件源“发短信”,“打电话”按钮时触发事件并调用事件监听器类中的onClick(View)方法处理业务逻辑。
5 业务逻辑设计
if(myeditText.getText().length()>0{
Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+myeditText.getText().toString()));
Phone.this.startActivity(myIntent);
}
String mobile=myEditText.getText().toString();
String content=EditText2.getText().toString();
SmsManager sms=SmsManager.getDefault();
PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,0, new Intent(), 0);

先来效果图:

      

6 案例实现:

案例实现的部分重要代码如下:
1.首页界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="165dp"
android:layout_marginLeft="23dp"
android:background="@drawable/button"
android:text="打电话" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentRight="true"
android:background="@drawable/button"
android:text="发短信"

2.主界面activity

public class SmsAndPhoneActivity extends Activity {
/** Called when the activity is first created. */
Button button1,button2; @Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //根据ID查找相应控件
button1=(Button) findViewById(R.id.button1);
button2=(Button) findViewById(R.id.button2); //按钮监听事件
button1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//跳转到打电话页面
Intent intent = new Intent(SmsAndPhoneActivity.this,
Phone.class);
startActivity(intent);
}
}); button2.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//跳转到发短信页面
Intent intent1=new Intent(SmsAndPhoneActivity.this,
SmsActivity.class);
startActivity(intent1);
}
});
}
}

3.发短信界面activity

public class SmsActivity extends Activity{
@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sms); Button butsend=(Button) findViewById(R.id.butsend);
final EditText myEditText=(EditText)findViewById(R.id.mobile);
final EditText EditText2=(EditText)findViewById(R.id.content);
butsend.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub 

String mobile=myEditText.getText().toString();
String content=EditText2.getText().toString();
SmsManager sms=SmsManager.getDefault();
PendingIntent sentintent =PendingIntent.getBroadcast(SmsActivity.this,
0, new Intent(), 0);
try {
if(content.length()>70)
{
List<String> msgs=sms.divideMessage(content);
for(String msg:msgs)
{
sms.sendTextMessage(mobile, null, msg, sentintent, null);
}
}
else
{ sms.sendTextMessage(mobile, null, content, sentintent, null);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Toast.makeText(SmsActivity.this, "短信发送成功", 1000).show();
}
});

4.打电话界面Activity

public class Phone extends Activity{
@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.phone); final EditText myeditText=(EditText) findViewById(R.id.myedittext);
Button butphone=(Button) findViewById(R.id.butphone); butphone.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(myeditText.getText().length()>0)
{
Intent myIntent=new Intent(Intent.ACTION_CALL,Uri.parse
("tel:"+myeditText.getText().toString()));
Phone.this.startActivity(myIntent);
}
}
});
}
}

源码下载:SmsAndPhone.zip

转载于:https://www.cnblogs.com/nuliniaoboke/archive/2012/11/14/2769819.html

手把手教你如何在安卓平台上实现打电话发短信的功能相关推荐

  1. 安卓之实现一个简单的短信发送功能

    1.首先,新建一个安卓项目,打开项目下的res下的layout,里面有个activity_main.xml布局文件,打开来,修改里面的代码,其中第一个EditText下的android:inputTy ...

  2. java通过SMS短信平台实现发短信的功能

    一.使用java发送短信的方法: java发送手机短信,通常有几种方法: (1)使用webserive接口发送手机短信: (2)使用短信猫的方式进行短信的发送,比较常用的方式,不过需要购买硬件设备: ...

  3. 在电脑上通过手机发短信

    [b]1.电脑和e398通过usb连通.[/b]//******************************************// [b]2.查看com端口[/b] For USB, how ...

  4. 短信平台的相关资料之短信猫

     短信猫 短信猫 所谓短信猫,其实是一种用来收发短信的设备,他和我们用的手机一样,需要手机SIM卡的支持,在需要收发短信的时候,在短信猫里面插入一张我们平时用的手机卡,插上电源,通过(USB或者串口. ...

  5. 微商城搭建教程,手把手教你开通自己的线上/定制微商城!

    微商城应该如何开通和搭建?这个问题一直困扰着很多商家,今天就为大家整理一份关于微商城从开通到搭建的具体教程,手把手教商家搭建自己的线上微商城. 微商城搭建教程,手把手教你开通自己的线上微商城! (一) ...

  6. android手机号码恢复,手把手教你如何恢复安卓手机通讯录里面丢失的数据

    原标题:手把手教你如何恢复安卓手机通讯录里面丢失的数据 虽然现在的智能手机有非常多的功能,但是通话仍然是手机里面最为重要也最为常用的功能,通讯录也是十分重要的,他存放着我们手机内所有联系人的手机号.那 ...

  7. 手把手教你制作AppPreview视频并上传到appStore进行审核

    手把手教你制作AppPreview视频并上传到appStore进行审核 注意,你需要使用iMovie才能够制作AppPreview视频文件,用QuickTime录制的无效! 最终效果 1. 新建一个事 ...

  8. android没有adm_这可能是安卓平台上最好的下载器:ADM

    下载一直是安卓用户难以磨灭的痛苦,PC上的P2P神器迅雷在安卓平台上的表现也是差强人意.其实除了P2P下载之外,多线程下载也是一种不错的解决方案.他既没有P2P对于上传的要求,也不会占用过多的CPU功 ...

  9. android http 网关,安卓平台上实现基于HTTP协议数据网关的方法

    摘要:文章介绍了一种在安卓平台上实现基于HTTP协议数据网关的方法,并详细阐述了数据网关与终端网络设备之间数据传输的实现过程. 关键词:安卓平台: 服务器: 应用开发: Abstract:This p ...

最新文章

  1. Cookie和Session的区别与联系
  2. 【NOIP2012模拟10.25】旅行
  3. 解密蚂蚁金服MISA:37℃的自助语音交互是怎么做到的?
  4. shell常见的文件属性检查
  5. 知乎上 40 个有趣回复,很精辟!
  6. 判断字符串中是否为数字的三种方法
  7. linux生成文件自带时间,linux生成固定日期文件及删除一定日期前的文件
  8. 通过Java代码浅谈HTTP协议
  9. 重新解释i++和++i
  10. 世界顶级黑市拳赛内幕
  11. 电脑c语言发音,C的发音
  12. npm包--rimraf
  13. java自动转换与强制转换
  14. SAINT:一个基于transformer的知识跟踪模型
  15. 读书笔记002:《伤寒论》-十二经络
  16. tiny4412 裸机程序 九、串口排查驱动原因及字符图片显示
  17. php扩展ts和nts,浅谈php的TS和NTS的区别
  18. mysql重迭算法_一句话实现MySQL库中的重叠分组
  19. tc: 模拟网络异常的工具-----------鸟窝
  20. 存储ic载板_PCB行业分析:从PCB、IC载板到类载板

热门文章

  1. OpenCV的dnn模块调用TesorFlow训练的MoblieNet模型
  2. 实现与优化深度神经网络
  3. 图像数据转换成db(leveldb/lmdb)文件(转)
  4. 镶嵌至新栅格ArcGIS出现send to mail闪退情况的解决方法
  5. TTL怎么计算拉电流和灌电流_带你深入了解灌电流、拉电流与吸电流
  6. php7.3 mysql gd支持_配置PHP对gd库的支持
  7. ajax-loader.gif不存在怎么解决_高温下水泥路面材料膨胀路面上出现裂缝怎么处理?...
  8. Win11正式发布新功能
  9. 软考网络工程师学习笔记3-广域通信网
  10. esp32查询剩余内存_SQL 查询语句先执行 SELECT?兄弟你认真的么?