Android小项目之--电话与短信服务(附源码)

2024-06-06 04:08

本文主要是介绍Android小项目之--电话与短信服务(附源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 Android上实现电话与短信服务相信己经是老生常谈了,有些人或许认为没有必要拿出来谈,网上一抓一大把。确实是,网上现在有很多调用 Android 电话与短信服务的例子,今天特地拿出来谈,只是因为有一些小技巧还是有拿出来谈的必要的。


什麽是Intent使用 Intent之前我们有必要先认识一下 Intent。


Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向 Android 表达某种请求或者意愿,Android 会根据意愿的内容选择适合的组件来请求。比如本例中使用的打电话功能,那么这个Acitivity只需要发出 Intent.ACTION_CALL 请求给Android ,剩下只要交给Android 来处理即可。
Intent的主要组成部份Intent对象抽象地描述了要执行的操作,其描述的基本内容可以分为组件名称、Action(动作)、Data(数据)、Category(类别)、Extra(附加信息)和Flag(标志位)6部份,具体的使用功能可查看相关文档,这里不多介绍。


解析 IntentIntent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图。作为一个完整的消息传递机制, Intent 不仅需要发送端,还需要接收端。那么Intent如何解析 Intent 的请求内容,并选择合适的组件响应 Intent 请求呢?本篇就会告诉大家,请继续往下看。


用Intent激活程序---电话与短信本篇中使用的 Intent 打电话程序中,Intent 的行为是 ACTION_DIAL,同时在 Intent 中传递被呼叫人的电话号码。


拨打电话的关键有两个方面,首先,要在 AndroidManifest 中添加 uses-permission(即为程序分配使用权限),并声明android:name="android.permission.CALL_PHONE" 权限。由於打电话是属於手机的底层服务,与用户隐私及通话费用等话题息息相关,困此,程序必须取得权限。其次,通过自定义 Intent 对象,带入“ACTION_CALL” 这个关键(Action),以及通过Uri.parse()的方法将用户输入电话号码(Data)带入,最后以 startActivity()方法,即可完成,代码如下:

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.*;
public class phoneAndsmsAcitivity extends Activity {
private Button myButton;
private EditText myEditText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton=(Button)findViewById(R.id.button); 
myEditText=(EditText)findViewById(R.id.mobile); 
myButton.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())); 
phoneAndsmsAcitivity.this.startActivity(myIntent); 
} 
} 
}); 
}
}

运行效果:

短信也是任何一款手机不可或缺的应用之一,几乎是手机使用频率最高的应用之一(不发短信的飘过~~~~~~)。Android自带有一个发短信的类 SmsManager,利用这个类,我们可以完成手机的短信发送与接收工作,其中 sentTextMessage() 方法需要传入五个值,依次是收件人地址(String)、发送人地址(String)、正文(String)、发送服务(PendingIntent)、与送达服务(PendingIntent),其中收件人与正文是不可为NULL的参数。跟打电话一样,涉及到与金钱有关的必须在配置文件分配权限,权限代码如下:<uses-permission android:name="android.permission.SEND_SMS"/>,smsManager的公开方法如下:

简单的发送短信代码:

package com.terry;
import java.util.List; 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.gsm.SmsManager; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast;
@SuppressWarnings("deprecation")
public class smsAcitivity extends Activity {
private Button myButton;
private EditText myEditText; 
private EditText EditText2;
@Override 
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); 
setContentView(R.layout.sms);
myButton=(Button)findViewById(R.id.button);
myEditText=(EditText)findViewById(R.id.mobile);
EditText2=(EditText)findViewById(R.id.content);
myButton.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(smsAcitivity.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(smsAcitivity.this, "短信發送成功", 1000).show(); 
}
});
}
}

关於一个测试的小技巧:发送短信的时候我们需要两台机子可以测试,这时候我们要同时启动两个模拟器己达到发送与接收的效果,这时候你可以如下操作:开始 --cmd--emulator -data foo 依此在 dos 命令中输入,即可重新打开一个模拟器,下面是收送测试效果图:

源码下载

 

这篇关于Android小项目之--电话与短信服务(附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035047

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py