Использование оператора Conditional внутри onStartCommand функции класса Service не отвечает (не дает вывод) - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь отправить SMS через службы, сопоставляя текущее время и дату со временем и датой, предоставленными пользователем. Значения для currentdate, currenttime, предоставленной пользователем даты («сравнить» в моем случае) и предоставленного пользователем времени (в моем случае - время выполнения) внутри функции onStartCommand все в порядке, поскольку я проверяю их через журнал.Но внутри onStartCommand, когда я использую оператор if () и хочу сравнить текущую дату и время с предоставленными пользователем временем и датой, он не выполняет функцию отправки сообщения.Без заявления if, если я хочу просто отправить SMS без сравнения или условия, это работает.Вы можете проверить код ниже.

public class Serviceclass extends Service {
Databaseclass dbobj;
String messagee;
String phonenumber;
String currenttime;
String comparetime;
String comparedate;
String currentdate;
@Override
public void onCreate() {
    super.onCreate();
    dbobj= new Databaseclass(getApplicationContext());
 Cursor cursor =  dbobj.getalldata();
 cursor.moveToFirst();
    final Calendar c = Calendar.getInstance();
 int  mYear = c.get(Calendar.YEAR);
  int  mMonth = c.get(Calendar.MONTH);
 int mDay = c.get(Calendar.DAY_OF_MONTH);
 int   time = c.get(Calendar.HOUR_OF_DAY);
  int   mMinute = c.get(Calendar.MINUTE);
      currentdate = mDay+"-"+(mMonth + 1)+"-"+mYear+"";
      comparedate = cursor.getString(4);
      currenttime = time + ":" + mMinute;
      comparetime = cursor.getString(3);
      phonenumber=cursor.getString(2);
      messagee=cursor.getString(1);}
  @Override
public IBinder onBind(Intent intent) {
    return null; } @Override
public void onDestroy() {
    super.onDestroy(); }
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("***time(Datetosend)", comparedate);
    Log.i("***time2(currentdate)", currentdate);
    Log.i("***time3(currenttime)", currenttime);
    Log.i("***time4(timetosend)", comparetime);
    Log.i("***time4(numbertosend)", phonenumber); if(currentdate.equals(comparedate) && currenttime.equals(comparetime)) {
        SmsManager sms = SmsManager.getDefault();
        List<String> messages = sms.divideMessage(messagee);
        for (String msg : messages) {
            PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
            PendingIntent deliveredIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0);
            sms.sendTextMessage(phonenumber, null, msg, sentIntent, deliveredIntent);
            Toast.makeText(getApplicationContext(), "Text send", Toast.LENGTH_SHORT).show();
       Log.i("***time2(currentdate)", currentdate);
       }}
    return START_STICKY;
}}
...