在 Cordova 中发送和阅读通过本机 SMS 应用程序发送的 SMS 内容

Posted

技术标签:

【中文标题】在 Cordova 中发送和阅读通过本机 SMS 应用程序发送的 SMS 内容【英文标题】:Send and read the SMS content sent via native SMS app in Cordova 【发布时间】:2014-12-21 18:46:25 【问题描述】:

我正在构建一个 Ionic/Cordova 应用程序。在我的应用程序中,用户可以单击电话号码以发送 SMS。当点击该号码时,本地短信应用程序将打开,然后用户可以输入他/她自己的短信并发送短信。有什么方法可以从我的应用程序中获取短信内容吗?

【问题讨论】:

【参考方案1】:

当您使用 ionic/cordova 时,需要一个 SMS 插件来完成此类工作。

除了jsmobile短信插件,还有一个API更多的: http://plugins.cordova.io/#/package/com.rjfun.cordova.sms

如描述中所述:

sendSMS(address(s), text, successCallback, failureCallback);
listSMS(filter, successCallback, failureCallback);
deleteSMS(filter, successCallback, failureCallback);

startWatch(successCallback, failureCallback);
stopWatch(successCallback, failureCallback);

enableIntercept(on_off, successCallback, failureCallback);
restoreSMS(msg_or_msgs, successCallback, failureCallback);

活动

'onSMSArrive'

您可以通过以下任一方式获取短信内容:

    实现 UI,获取用户输入,调用插件 API 发送短信。

或者,

    让默认短信应用发送短信,然后从发送框中读取短信。

顺便说一句,该插件仅适用于 android,仅供参考。

【讨论】:

插件的链接是here 还要注意,这个插件在某些情况下不是免费使用的。如果您需要基于 MIT 的插件,请查看 my answer。【参考方案2】:

@MikeX 建议有cordova-plugin-sms 选项,但请注意它的许可证不是免费使用的。

所以我选择使用Phonegap-SMS-reception-plugin,这是 MIT 许可证。

然后就这样了

 var smsInboxPlugin = cordova.require('cordova/plugin/smsinboxplugin');
  smsInboxPlugin.startReception (function(msg) 
     alert(msg);
     stopReadingSMS(smsInboxPlugin);
   , function() 
     alert("Error while receiving messages");
     stopReadingSMS(smsInboxPlugin);
   );

function stopReadingSMS(smsInboxPlugin) 
    smsInboxPlugin.stopReception (function() 
        console.log("Correctly stopped SMS receiver");
    , function() 
        console.log("Error while stopping the SMS receiver");
    );

【讨论】:

【参考方案3】:

你是说你想知道用户在另一个应用中输入了什么?如果是这样,我不相信你可以。理论上你可以尝试跳过真正的短信应用程序并使用插件:http://plugins.cordova.io/#/package/com.jsmobile.plugins.sms

【讨论】:

我看到了那个插件。但它会发送一个预定义的内容,但我想,用户将输入他/她自己的短信并单击从本地短信应用程序发送。是否有任何与此操作相关的事件(sendsmsbuttonclick?)类似于“endcallbutton”? 它不发送预定义的内容。短信可以是任何东西。【参考方案4】:

现在有用于cordova 扩展的离子包装器。您可以使用 $cordovaSMS (docs here)

module.controller('ThisCtrl', function($cordovaSms) 

 document.addEventListener("deviceready", function () 

    $cordovaSms
      .send('phonenumber', 'SMS content', options)
      .then(function() 
        // Success! SMS was sent
      , function(error) 
        // An error occurred
      );

  );

);

要查看用户输入的内容,您可以让他们在您的应用中编写“短信内容”。当你离开你的应用程序时,我认为你无法从原生 SMS 字段中获取文本

【讨论】:

【参考方案5】:
you can use sms: url for opening native sms app for that you need to add
<access origin="sms:*" launch-external="yes"/> inside config.xml

添加以上行后使用短信链接如下

<a class="button icon-left ion-android-mail button-balanced button-outline" href="sms:9808350855">SMS</a>

【讨论】:

以上是关于在 Cordova 中发送和阅读通过本机 SMS 应用程序发送的 SMS 内容的主要内容,如果未能解决你的问题,请参考以下文章

Cordova - 通过单击按钮打开本机电子邮件应用程序

将值从 iOS 本机代码传递给 cordova

Cordova 插件从本机函数获取异步响应

通过 SMS 发送的位置链接在 Android 浏览器中有效,但在 iPhone 浏览器中无效

cordova 短信插件

如何使用手机的本机应用程序打开图像 - Cordova / phonegap