Невозможно отправить автоматические текстовые сообщения - PullRequest
0 голосов
/ 05 февраля 2019

Я работаю над проектом, который берет дату и время и автоматически отправляет предварительно написанное сообщение в этот день на указанный номер мобильного телефона.Я использую диспетчер тревоги для этого, но он не работает.Я так долго пытался отладить свою программу, что не могу понять, что именно не так.

final Calendar c = Calendar.getInstance();
String date=releaseDateEditText.getText().toString();
String data[]= date.split("-");
c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(data[0]));
c.set(Calendar.MONTH,Integer.parseInt(data[1]));
c.set(Calendar.YEAR,Integer.parseInt(data[2]));
c.set(Calendar.AM_PM, Calendar.PM);
c.set(Calendar.HOUR_OF_DAY, 11);
c.set(Calendar.MINUTE, 18);
c.set(Calendar.SECOND, 0);
Intent _myIntent = new Intent(getApplicationContext(), message.class);
_myIntent.putExtra("name", name.getText());
_myIntent.putExtra("agency", agency.getText());
_myIntent.putExtra("book", bookingDateEditText.getText());
_myIntent.putExtra("release", releaseDateEditText.getText());
pintent = PendingIntent.getBroadcast(getApplicationContext(), 1, _myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pintent);
Toast.makeText(getApplicationContext(), "Alarm set for " + releaseDateEditText.getText(), Toast.LENGTH_LONG).show();

public class message extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String SPhone = "Phonenumber";
        String SSms = intent.getStringExtra("name");
        SSms = SSms + "\n" + intent.getStringExtra("agency") + "\n" + intent.getStringExtra("book") + "\n" + intent.getStringExtra("release");
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(SPhone, null, SSms, null, null);
    }
}

1 Ответ

0 голосов
/ 05 февраля 2019

Если вы пройдете через Использование групп разрешений SMS или журнала вызовов , вы обнаружите, что начиная с DEC 2018 года приложения, использующие разрешения для SEND_SMS, не допускаются в playstore, если только они не являются приложением SMS / Dialer по умолчанию,Либо вам придется подать приложение в качестве исключения или удалить разрешения SMS.

Для приложений, запрашивающих доступ к разрешениям SMS или журнала вызовов, предполагаемое и разрешенное использование включает обработку SMS по умолчанию, обработку телефона по умолчаниюили Возможность работы с помощником.

Приложения должны быть активно зарегистрированы в качестве обработчика SMS, телефона или помощника по умолчанию, прежде чем предлагать пользователям принять любое из вышеуказанных разрешений, и должны немедленно прекратить использование разрешения, когда они больше не будутявляются обработчиком по умолчанию.

ОТВЕТ НА ВОПРОС:

Ну, возвращаясь к вашему вопросу, многие производители устройств Android используют агрессивные политики для экономии заряда батареи.Когда пользователь очищает свое приложение от последних вкладок, приложение принудительно закрывается, что отменяет все тревоги, широковещательные приемники, службы и т. Д. .Это происходит в большинстве производителей устройств, таких как OnePlus, Huwaei, Xiaomi, Vivo, Oppo и т. Д.

У них есть AutoStartManagers / AutoLaunchManager, которые предотвращают фоновый запуск приложений.Вы должны будете внести в белый список свое приложение, используя шаги, упомянутые в ЭТОТ ТАК ОТВЕТ .

...