短信发送器小案例 smsManager
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" > <EditText
android:id="@+id/et_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入联系人好码" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/et_number"
android:layout_alignParentRight="true"
android:onClick="add"
android:text="+" />
</RelativeLayout> <EditText
android:id="@+id/et_sms_content"
android:layout_width="match_parent"
android:layout_height="250dp"
android:gravity="top"
android:hint="请输入发送短信的内容" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="insert"
android:text="插入短信模板" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="发送短信" /> </LinearLayout>
public class MainActivity extends Activity {
private EditText et_number;
private EditText et_sms_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//[1]获取我们关心的控件
et_number = (EditText) findViewById(R.id.et_number);
et_sms_content = (EditText) findViewById(R.id.et_sms_content);
}
//点击按钮 跳转到短信模板页面
public void insert(View v){
Intent intent = new Intent(this,SmsTemplateActivity.class);
//☆☆☆开启Activity有2种方式
//(1)如果想要开启的Activity的界面的数据 用 startActivityForResult();
//(2)如果就是简简单单页面的跳转 就用startActivity()
startActivityForResult(intent, 2);
}
//点击+ 按钮 跳转到 联系人页面
public void add(View v) {
//[1]创建意图对象
Intent intent = new Intent(this,ContactActivity.class);
//[2]开启Activity
// startActivity(intent);
//[3]小细节 ☆☆☆☆ 如果一个页面开启另外一个页面 并且当开启的这个页面关闭的时候 还要另外一个页面的数据 使用下面这个方法开启Activity
startActivityForResult(intent, 1);
}
//点击按钮实现发送短信的逻辑
public void click(View v) {
String number = et_number.getText().toString().trim();
String content = et_sms_content.getText().toString().trim();
//[1]获取smsManager的实例
SmsManager smsManager = SmsManager.getDefault();
//[1.1]如果短信内容过过多 发不出去 分条发送
ArrayList<String> divideMessages = smsManager.divideMessage(content);
for (String div : divideMessages) {
//[2]发送短信数据
smsManager.sendTextMessage(number, null, div, null, null);
}
}
//当我们开启的Activity的页面关闭的时候这个方法会调用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
//代表我要请求 ContactActivity的数据
String phone = data.getStringExtra("name");
et_number.setText(phone);
}else if (requestCode == 2) {
//代表我要请求SmsTemplateActivity 的数据
String smscontent = data.getStringExtra("smscontent");
et_sms_content.setText(smscontent);
}
/*if (resultCode == 10) {
//说明数据是由 ContactActivity返回
String phone = data.getStringExtra("name");
et_number.setText(phone);
}else if (resultCode == 20) {
//说明数据是由SmsTemplateActivity返回
String smscontent = data.getStringExtra("smscontent");
et_sms_content.setText(smscontent);
}
*/
super.onActivityResult(requestCode, resultCode, data);
}
}
public class SmsTemplateActivity extends Activity {
String objects[] = {"我在开会,请稍后联系","我在吃饭,请稍后联系","我在打代码,请稍后联系","我在开车,请稍后联系","我在约会,请稍后联系"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_template);
//[1]找到lv控件
ListView lv = (ListView) findViewById(R.id.lv);
//[2]创建数据适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.item, objects);
//[3]把数据展示到listview上
lv.setAdapter(adapter);
//[4]给lv设置点击事件
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//[5]获取我们点中条目的数据
String smscontent = objects[position];
//[6]把这个数据返回给调用者
Intent intent = new Intent();
intent.putExtra("smscontent", smscontent);
//[7]通过这个方法把数据返回给调用者
setResult(20, intent);
//[8]要记得调用finish
finish();
}
});
}
}
(6)实现发送短信的功能
//[1]获取smsManager的实例
SmsManager smsManager = SmsManager.getDefault();
//[1.1]如果短信内容过过多 发不出去 分条发送
ArrayList<String> divideMessages = smsManager.divideMessage(content);
for (String div : divideMessages) { //[2]发送短信数据
smsManager.sendTextMessage(number, null, div, null, null);
}
(7)记得要加上发送短信的权限
android.permission.SEND_SMS
短信发送器小案例 smsManager的更多相关文章
- 初识安卓小程序(Android短信发送器)
首先,先创建一个安卓项目(我的版本号是4.4.2的),名字为"短信发送器" 然后在res目录下找到layout目录,找到activity_main.xml或fragment_mai ...
- Android实战--短信发送器
首先设计界面 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- 无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)
1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM ...
- Android_简易的短信发送器
这个随笔将介绍如何完成一个简单的第三方的短信发送器(不打开短信界面,调用android的api完成功能) 1.首先,我们来做布局 由于我这里写的是一个简易的,,短信发送,所以只是一个LinearLay ...
- android开发学习---开发一个简易的短信发送器
一.需求: 开发一个简易的短信发送器,输入:对方手机号码,短信内容,点击发送按钮,短信发送成功,对方手机成功收到短信. 其中要求短信内容过长时可以自动拆分,长度英文是160个英文,中文是70个,中英混 ...
- Android短信发送器_08
1.string xml代码 <?xml version="1.0" encoding="utf-8"?> <resources> &l ...
- Android短信发送器(2)
在上一篇的<Android短信发送器>当中.发送功能并不完好.当发送内容超过限定字数时,短信就会发送失败,此时就须要推断内容是否超过限制,假设不超过限制.就直接发送,反之.则对其进行处理再 ...
- Android项目——短信发送器
因为应用要使用手机的短信服务,所以要在清单文件AndroidManifest.xml中添加短信服务权限: <?xml version="1.0" encoding=" ...
- Android(java)学习笔记86:案例短信发送器
1.一般我们第一步都是先创建这个main.xml布局文件,这是良好的习惯: <?xml version="1.0" encoding="utf-8"?&g ...
随机推荐
- html2canvas 返回的toDataURL()数据为 data:,的解决方法
1.使用的场景是把html转换成PDF保存下来,代码: /* eslint-disable */ import html2canvas from 'html2canvas'; import JsPDF ...
- CS5265低成本替代RTD2172|CS5265替代兼容RTD2172|替代RTD2172
瑞昱RTD2172是TYPEC转HDMI4K60HZ音视频数据转换器芯片.CS5265可以替代兼容RTD2172,除了实现同等的转换功能外且整体方案成本和性价比方面比RTD2172要高,且外围器件较少 ...
- playwright--自动化(二):过滑块验证码 验证码缺口识别
前两天需要自动化登录一个商城的后台 用的是playwright 没有用selenium 中间出了一个滑块验证 现阶段playwright教程不是太多,自己做移动的时候各种找,费劲巴拉的.现在自己整出来 ...
- python+openpyxl 获取最大行数,不是真正想获取的行数,导致替换时,报”NoneType' object has no attribute 'find'
问题描述: 使用excel对接口的数据进行管理,添加接口数据时,可能习惯性选择多行,设置了格式,导致多选了很多空行也被设置了格式,在读取这个sheet的最大行数时,发现有问题,获取到了为None的空行 ...
- js对cookie的操作:读、写、删
js读写cookie //JS操作cookies方法!//写cookiesfunction setCookie(name,value){var Days = 30;var exp = new Date ...
- Go语言系列之标准库strconv
Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi().Itia().pa ...
- SpringBoot学习笔记一之本地环境基础搭建
原文链接: https://www.toutiao.com/i6802935050196222471/ 工程创建 Maven创建工程 搜索maven找到project的创建 创建simple proj ...
- Zuul的应用
一.介绍 注:Zuul中默认就已经集成了Ribbon负载均衡和Hystix熔断机制.但是所有的超时策略都是走的默认值,比如熔断超时时间只有1S,很容易就触发了. 二.依赖 <dependency ...
- vulhub安装教程
0x00 vulhub介绍 Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更 ...
- Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布
一,引言 Azure Pipeline 管道是一个自动化过程:但是往往我们由于某种原因,需要在多个阶段之前获得批准之后再继续下一步流程,所以我们可以向Azure Pipeline 管道添加审批!批准流 ...