Android中短信发送、界面跳转

这篇博客分享了作者在学习Android时的实践经验,包括如何实现短信发送和界面跳转。通过使用权限管理完成短信的发送,主要利用SmsManager类的getDefault()方法。在创建体重检测器应用中,作者体验到Intent在界面跳转中的关键作用。在Android中,每个界面都是Activity,界面间的跳转需要借助Intent来实现,强调了Android系统的全托管特性,不允许直接创建或调用,而是通过发送请求Intent进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次写技术方面的东西,有点小紧张。下面把我学习Android之后,尝试写一些简单的东西拿出来分享一下。

一开始的时候写了很简单的app,比如短信发送和打电话,使用permission完成授权。

发送短信实际是调用系统的api来完成的,SmsManager类不能new,通过调用其静态方法getDefault()获得对象来完成消息的发送

public void onClick(View v) {
	//每个View控件都有一个id,View是所有界面元素的父类
	switch (v.getId()) {
	case R.id.btSent:
			String number=editNumber.getText().toString().trim();
			String content=editContent.getText().toString().trim();
<span style="white-space:pre">	</span>//使用TextUtils文本工具的静态方法isEmpty()方法来检查输入的号码和文本内容是否为空
			if (TextUtils.isEmpty(number)||TextUtils.isEmpty(content)) {
				Toast.makeText(this, "号码或者内容不能为空!", Toast.LENGTH_SHORT).show();
			}else {
				SmsManager smsManager=SmsManager.getDefault();
				//消息内容过长,我们可以将其分段发送,使用divideMessage()方法
				ArrayList<String> strs=smsManager.divideMessage(content);
				for (Iterator iter = strs.iterator(); iter.hasNext();) {
					String subContent = (String) iter.next();
<span style="white-space:pre">				</span>/*第一个参数是接收短信的号码,第二个参数是短信服务中心,如果为null,就是用当前默认的短信服务中心>//第三个是要发送的短信内                                 容,第四个是发送报告,第五个是短信发送到接收者那里,状态报告生成的pdu*/
					smsManager.sendTextMessage(number, null, subContent, null, null);
				}
				//发送完之后提醒发送成功
				Toast.makeText(this, "消息已发送!", Toast.LENGTH_SHORT).show();
			}
			break;

		default:
			break;
		}
		
	}
//最后一定及得授权SEND_SMS




功能比较简单,今天试着写了一个体重检测器,在登录页面成功登录之后跳转到体重检测页面。

发现Intent很重要。

在Android中,每一个界面都是Activity,所以在创建一个新的界面的时候,不是new 一个class,而是项目下右击new一个Android Activity无论程序还是界面,都不允许直接调用,要求使用请求Intent(意向)来实现。

android系统是全托管的,跟界面或者系统功能有关的,用户无法主动new,只能发出请求,例如调用界面、访问网络、 打电话、地图定位等,比如下面一个示例:

//登录按钮注册的事件中输入正确的用户名和密码,提示登录成功,并创建一个意向Intent对象,跳转到体重检测的界面
//获得上下文环境,可以通过注册监听的控件所在的上下文得到,也可以使用主类.this得到,或者getApplicationContext得到
Toast.makeText(v.getContext(), "登陆成功", 0).show();
//第一个参数是当前界面对象,即上下文;第二个参数是所要跳转的目标类,不一定具有界面对象,所以在这里使用android的特殊反射模式
Intent intent=new Intent(getApplicationContext(), WeightActivity.class);
//因为不同界面通过intent调用,所以有什么需要传递的内容,交给intent就好了
//传递的方式有两种
//1.直接挂在intent上,类似于hashtable的格式 , put类型(String key,value),
//intent.putExtra("one", s);
//intent.putExtra("shu", 123);//只能传递基本数据类型+字符串,以及序列化内容
//2.使用包 封装,/获得一个封装包,将信息封装在里面
Bundle bao=new Bundle();
bao.putString("userName", name);
intent.putExtras(bao);
startActivity(intent);//最后一定要记得启动

//在跳转之后的界面中,不需要new一个新的intent
//接受传进来的值,得到请求当前界面的意向
Intent intent=getIntent();
//通过意向得到bundle
Bundle bao=intent.getExtras();
//取出bundle中的用户名,
name=bao.getString("userName");




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值