Android调用系统短信功能,点击返回键返回短信列表而不返回app的问题!

本文主要探讨了在Android应用中调用系统短信功能后,如何设置使得用户点击返回键时,返回到短信列表而不是回到应用本身。这涉及到Android的activity管理和intent的设置。

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

目测原创文章,转载请注明出处,谢谢!

—————————————————————————————————————————————————————

最近开发的项目使用到了短信功能,自然就用到了 intent隐式调用,实现短信的功能,主要是我要说明我的问题;
有两种实现方式,以一个查询余额的短信为例:

一、使用action:Intent.ACTION_SENDTO,通过uri的方式传递参数,最终打开短信编辑页面,但不发送短信,代码如下:
Uri uri = Uri.parse("smsto:10086");
Intent smsIntent = new Intent(Intent.ACTION_SENDTO,uri);
smsIntent.putExtra("sms_body", "YE");
startActivity(smsIntent);
——————————————————————————————
Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:10086"));
smsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(smsIntent);
两种方式都可以正常使用短信功能,后者需要自己编辑短信内容

二、传递相应的参数,直接发送短信:
String provider = SystemUtils.getProvidersName(getApplicationContext());//自定义的获取运营商的方法
SmsManager smsManager = SmsManager.getDefault();
if (smsManager != null && provider != null&& provider.length() > 0) {
							
	if ("中国移动".equals(provider)) {
	<span style="white-space:pre">	</span>smsManager.sendTextMessage("10086", null, "YE",null, null);
	} else if ("中国联通".equals(provider)) {
		smsManager.sendTextMessage("10010", null, "YE",null, null);
	} else if ("中国电信".equals(provider)) {
		smsManager.sendTextMessage("10001", null, "YE",null, null);
<span style="white-space:pre">	</span>}
}


其实就短信功能,我没有什么班门弄斧的,代码多的是,其中我遇到的几个问题:
1、某厂商的手机使用的是Android 5.0系统,在使用第二种方式的时候报错,不知道是他们定制的系统的原因还是其他因素,会有NullPointException的异常;
解决方案:无奈使用第一种方式正常;

2、通过第一种方式的第二个方法打开短信编辑页面,这时候按返回键,会出现两种情况:</span>
1、直接返回启动短信编辑页面的app页面</span>
2、返回短信列表页面</span>
原因:一般我们会认为按返回键肯定是返回到启动它的app页面,但是为什么还会返回到短信列表页面呢?  </span>
出现这种情况的原因是,只要之前打开过短信应用,再使用这个方法就会出现上面的情况了</span>
解决方案:使用第一种方式的第二个方法






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值