Я использую nativescript для создания приложения, которое будет программно отправлять предварительно встроенный текст нескольким предустановленным сторонам в случае возникновения чрезвычайной ситуации.Как использовать широковещательный приемник для получения намерения от smsmanager (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);
я затем отправить текст, переходящим в ожидании умысел вар:
sms.sendTextMessage("5555555555", null, "hello", pendingIntent, null);
Я тогда попытайтесь сделать базовый вещательный приемник, используя информацию, которую я нашел в nativescript docs, которая должна просто записывать что-то на консоль, когда она получает ожидаемые данные.
app.android.registerBroadcastReceiver(pendingIntent, function() {
console.log("@@@@@ text sent @@@@@");
});
Проблема в том, что ничего не происходит. Я бы ожидал получить «@@@@@ [email protected]@@@@», который был отправлен на консоль. Я много искал и думаю, может быть, мне нужно добавить что-то об этом приемнике трансляции в манифест или возможно, мое вмешательство где-то не так, но это моя первая трещина в приложении Android, и я немного потеряю. Любая помощь будет оценена.
Я не делаю NativeScript, но если вы регистрируете приемник во время выполнения, вам нужно отправить неявное 'Intent'; то есть «Intent», созданный с помощью уникального, произвольного аргумента действия «String», а не «Context» и «Class». Затем вам нужно зарегистрировать приемник для этого действия «String», и, похоже, для этого действие должно быть первым аргументом в вашем вызове 'registerBroadcastReceiver()', а не 'pendingIntent'. И ваш 'PendingIntent' должен быть получен с помощью' getBroadcast() ', а не' getActivity() '. –
Эй, это помогло мне найти решения :) спасибо! Я создаю код, который работал – HelloWorld