在android 7.0中使用cordova发送短信时的安全例外

Nid*_*mar 7 android cordova ionic3

我试图通过添加corodova发送sms插件从使用短信管理器的设备发送短信.这个应用程序工作正常,直到android6.0设备它发送短信也,但当我试图从android7.0发送短信时,它显示我以下安全例外.在发送短信之前,它要求获得许可,我也同意了.

例外:

java.lang.SecurityException: 
at android.os.Parcel.readException(Parcel.java:1683)
at android.os.Parcel.readException(Parcel.java:1636)
at com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy.getGroupIdLevel1(IPhoneSubInfo.java:583)
at android.telephony.TelephonyManager.getGroupIdLevel1(TelephonyManager.java:2163)
at android.telephony.SmsMessage.hasEmsSupport(SmsMessage.java:854)
at com.android.internal.telephony.SmsMessageBase.calcUnicodeEncodingDetails(SmsMessageBase.java:409)
at com.android.internal.telephony.gsm.SmsMessage.calculateLength(SmsMessage.java:796)
at android.telephony.SmsMessage.fragmentText(SmsMessage.java:354)
at android.telephony.SmsManager.divideMessage(SmsManager.java:450)
at com.cordova.plugins.sms.Sms.send(Sms.java:143)
at com.cordova.plugins.sms.Sms.access$400(Sms.java:22)
at com.cordova.plugins.sms.Sms$1.run(Sms.java:102)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Run Code Online (Sandbox Code Playgroud)

发送短信的代码:

  var smsdata = ' ????: ' + this.currentbilldate + ' ???? ???: ' + this.save_details.vehicle_bill_no + ' ???????????? ??????????? ?????????: ' + this.smselements.toString() + ', ?????? ??????????: ' + totalcount + '';
    var farmermobileno = this.entry_details.farmer_mobile_no;
    this.sms.send(farmermobileno, smsdata).then((result) => {
      this.commonService.presentToast('Message sent successfully');
    }, (error) => {
      console.log('Error in sending message', error);
      this.commonService.presentToast('Message Failed');
    });
Run Code Online (Sandbox Code Playgroud)

插件名称:cordova-sms-plugin

短信发送文字:

 var smsdata = '?????? ???????? ????? 23-8-17 ????????? ???? ?500  ?????????????????.??????? ?5000';
Run Code Online (Sandbox Code Playgroud)

Sam*_*ath 3

希望您可以使用以下方法来检查权限。

\n\n
\n

在 Android 上,会提供一个额外的函数来了解您是否有发送短信的权限(Android Marshmallow 权限)。

\n
\n\n
var app = {\n    checkSMSPermission: function() {\n        var success = function (hasPermission) { \n            if (hasPermission) {\n                sms.send(...);\n            }\n            else {\n                // show a helpful message to explain why you need to require the permission to send a SMS\n                // read http://developer.android.com/training/permissions/requesting.html#explain for more best practices\n            }\n        };\n        var error = function (e) { alert(\'Something went wrong:\' + e); };\n        sms.hasPermission(success, error);\n    }\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

您也可以在 Git 上查看更多详细信息。

\n\n

更新:

\n\n
var smsdata = \'\xe0\xae\x89\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xa3\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 23-8-17 \xe0\xae\x85\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\xb5\xe0\xae\xbe\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb8\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x8a\xe0\xae\x95\xe0\xaf\x88\' + \'\xe2\x82\xb9500\' +  \'\xe0\xae\xb5\xe0\xae\xb4\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f\xe0\xaf\x81\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3\xe0\xae\xa4\xe0\xaf\x81.\xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81\'+ \'\xe2\x82\xb95000\';\n
Run Code Online (Sandbox Code Playgroud)\n