目测原创文章,转载请注明出处,谢谢!
—————————————————————————————————————————————————————
最近开发的项目使用到了短信功能,自然就用到了 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>
解决方案:使用第一种方式的第二个方法