您的位置:首页 > 移动开发

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

2015-04-28 15:00 453 查看

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

—————————————————————————————————————————————————————
最近开发的项目使用到了短信功能,自然就用到了 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);
两种方式都可以正常使用短信功能,后者需要自己编辑短信内容[/code]
二、传递相应的参数,直接发送短信:
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>
解决方案:使用第一种方式的第二个方法

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐