gpt4 book ai didi

javascript - 如何使用广播接收器从 smsmanager (nativescript) 获取发送的 Intent

转载 作者:搜寻专家 更新时间:2023-11-01 08:31:03 29 4
gpt4 key购买 nike

我正在使用 nativescript 构建一个应用程序,该应用程序将在紧急情况下以编程方式向多个预设方发送预先构建的文本。

我有一个电话号码数组,想遍历每个电话号码,使用 SMSManager 发送文本和 sentIntent 参数 seen in android docs在移动到下一个数组项之前验证文本是否已发送。

我创建了 pendingIntent 变量以传递给“sms.sendTextMessage”,如下所示:

var sms = android.telephony.SmsManager.getDefault();
var utils = require("utils/utils");

//Gets application's current state
var context = utils.ad.getApplicationContext();
//Create a replica of Android's intent object
var intent = new android.content.Intent(context, com.tns.NativeScriptActivity.class);

//Create a replica of Android's pendingIntent object using context and intent
var pendingIntent = android.app.PendingIntent.getActivity(context, 1, intent, android.app.PendingIntent.FLAG_UPDATE_CURRENT);

然后我发送文本,传递未决的 Intent var:

sms.sendTextMessage("5555555555", null, "hello", pendingIntent, null);

然后我尝试使用我在 nativescript docs 中找到的信息制作一个基本的广播接收器当它收到预期的数据时,它应该只在控制台上记录一些东西。

app.android.registerBroadcastReceiver(pendingIntent, function() {
console.log("@@@@@ text sent @@@@@");
});

问题是:没有任何反应。我希望将“@@@@@发送的文本@@@@@”记录到控制台。我在谷歌上搜索了很多,我在想也许我需要在 list 中添加一些关于这个广播接收器的东西,或者也许我的暗示在某处是错误的,但这是我第一次尝试 Android 应用程序,我有点不知所措。任何帮助将不胜感激。

最佳答案

我将在这里回答我自己的问题,以防其他人遇到这个问题。

有效的代码是:

    var app = require("application");
var utils = require("utils/utils");
var context = utils.ad.getApplicationContext();
var sms = android.telephony.SmsManager.getDefault();

var SendMessages = {

init: function() {
var id = "messageSent";
this.sendText(id, this.pendingIntent(id));
},

sendText: function(id, pendingIntent) {
sms.sendTextMessage("5555555555", null, "Hello :)", pendingIntent, null);
this.broadcastReceiver(id, function() {
console.log("$$$$$ text sent $$$$$");
});
},

pendingIntent: function(id) {
var intent = new android.content.Intent(id);
return android.app.PendingIntent.getBroadcast(context, 0, intent, 0);
},

broadcastReceiver: function(id, callback) {
app.android.registerBroadcastReceiver(id, function() {
callback();
});
}

};

module.exports = SendMessages;

解释一下:@Mike M 似乎提到每个 Intent 对象都需要一些字符串作为 id。

然后创建“pendingIntent”对象,正如@Mike M. 提到的,我需要 Hook “getBroadcast”方法,然后我需要将应用程序上下文作为第一个参数传递给未决 Intent ,然后是 0,然后是 Intent 带有 id 的对象。

然后,只需将 Intent ID 作为第一个参数传递并将回调作为第二个参数传递,即可在简单的广播接收器函数中接收未决 Intent 。我已经测试过,它运行良好。

关于javascript - 如何使用广播接收器从 smsmanager (nativescript) 获取发送的 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40814597/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com