sms安全管理,10.2 SmsManager(短信管理器)

1.调用系统发送短信功能:2.调用系统提供的短信接口发送短信

本节引言:

本节带来的是中的(短息管理器),见名知意,就是用来管理手机短信的,而该类的应用场景并不多,一般是我们发短信的时候才会用到这个API,当然这种短信是文字短信,对于彩信过于复杂考证书的正规网站,而且在QQ微信各种社交APP横行的年代,你会去发1块钱一条的彩信吗?所以本节我们只讨论发送普通文字短信!官方文档:

1.调用系统发送短信功能:

就是把写好的收信人和内容发送到系统的发送短信的界面,用户验证收件人内容是否真正确再点击发送!说白了就是调用系统发短信的窗口,这样做有一定的好处:

这样发短信,app安装的时候就可以少写一条发短信的权限,那么诸如360这类安全软件在安装的时候就不会提醒用户:”这个APP有短信权限,可能会偷偷滴发短信喔”,而用户对于偷偷发短信的行为是十分厌恶的,当然有些人不看直接安装sms安全管理,10.2 SmsManager(短信管理器),而有些人可能会觉得会偷偷发短信喔,好恶心的应用,我才不装咧,又或者直接禁止我们的APP发送短信,那么当我们APP在发送短信的时候就可能会出现一些异常,或者应用直接崩溃等!所以如果你的应用需要发送短信进行验证或者付费这些东西的话,建议使用这种方式!

核心代码:

public void SendSMSTo(String phoneNumber,String message){        //判断输入的phoneNumber是否为合法电话号码      if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){          //Uri.parse("smsto") 这里是转换为指定Uri,固定写法          Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));                intent.putExtra("sms_body", message);                      startActivity(intent);        }    }    

2.调用系统提供的短信接口发送短信

这个就需要发短信的权限啦

uses- :name=”..”/>

我们直接调用为我们提供的短信接口发送短信:

(, , text, , );

参数依次是:

…那么复杂,pdu是什么卵?好吧,别纠结,简单知道这些参数是:

电话号码,信息中心,短信内容,是否发送成功的监听,以及收信人是否接受的监听就好了!

核心代码:

public void sendSMS(String phoneNumber,String message){      //获取短信管理器       android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();      //拆分短信内容(手机短信长度限制),貌似长度限制为140个字符,就是    //只能发送70个汉字,多了要拆分成多条短信发送    //第四五个参数,如果没有需要监听发送状态与接收状态的话可以写null        List divideContents = smsManager.divideMessage(message);       for (String text : divideContents) {            smsManager.sendTextMessage(phoneNumber, null, text, sentPI, deliverPI);        }  } 

可能你还需要监听短信是否发送成功sms安全管理,或者收信人是否接收到信息,就把下面的加上吧:

1)处理返回发送状态的

//处理返回的发送状态   String SENT_SMS_ACTION = "SENT_SMS_ACTION";  Intent sentIntent = new Intent(SENT_SMS_ACTION);  PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent,  0);  //注册发送信息的广播接收者context.registerReceiver(new BroadcastReceiver() {      @Override      public void onReceive(Context _context, Intent _intent) {          switch (getResultCode()) {          case Activity.RESULT_OK:            Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT).show();              break;          case SmsManager.RESULT_ERROR_GENERIC_FAILURE:    //普通错误            break;        case SmsManager.RESULT_ERROR_RADIO_OFF:         //无线广播被明确地关闭            break;                  case SmsManager.RESULT_ERROR_NULL_PDU:          //没有提供pdu            break;              case SmsManager.RESULT_ERROR_NO_SERVICE:         //服务当前不可用            break;                      }      }  }, new IntentFilter(SENT_SMS_ACTION)); 

2)处理返回接收状态的:

//处理返回的接收状态   String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";  //创建接收返回的接收状态的Intent  Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);  PendingIntent deliverPI = PendingIntent.getBroadcast(context, 0,deliverIntent, 0);  context.registerReceiver(new BroadcastReceiver() {     @Override     public void onReceive(Context _context, Intent _intent) {         Toast.makeText(context,"收信人已经成功接收", Toast.LENGTH_SHORT).show();     }  }, new IntentFilter(DELIVERED_SMS_ACTION)); 

另外这里涉及到了广播的知识,如果你对广播不怎么了解的话,可以看下:

基础入门教程——牛刀小试

基础入门教程——4.3.2 庖丁解牛

本节小结:

好的,本节介绍了发送文字短信的两种方式~非常简单~建议还是使用第一种方案吧,起码用户体验好一点…

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请添加站长微信举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.zhiyeeedu.com/55788.html

(0)
上一篇 2024年 11月 19日 下午9:25
下一篇 2024年 11月 19日 下午9:25

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

18923864400

在线咨询: QQ交谈 邮件:zhiyeeedu@163.com 工作时间:周一至周五,9:00-18:00,节假日休息

关注微信
关注微信
返回顶部
职业教育资格考证信息平台
在线客服