вызов активности из службы

Это было спрошено несколько раз раньше, но предоставленное решение не могло решить мою проблему. Я работаю над приложением, которое имеет несколько классов: mainactivity, SMS и MService. сервис имеет таймер. Я пытаюсь позвонить SMS, чтобы отправить текстовое сообщение каждый раз, когда таймер закончился. Может кто-нибудь мне поможет ….
Спасибо за внимание…

public class MService extends Service {

    private Handler HandleIt = new Handler();
    private final int INTERVAL = 60 * 1000;
    private Timer timer = new Timer();
    boolean timeout = false;


    public interface SmsService
    {
        void SmsServiceSenter();
    }



    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }





    class TimeDisplayTimerTask extends TimerTask {



        @Override
        public void run() {
            HandleIt.post(new Runnable(){
               public void run(){
                   Toast.makeText(getApplicationContext(), TextonScreen(), Toast.LENGTH_SHORT).show();
                  // Intent smsintent = new Intent(getBaseContext(), SMS.class);
                  // startService(smsintent);
               }
            });
        }


   }

    private String TextonScreen()
    {
        timeout = true;
        return "it is running";

    }
    boolean isTimeout()
    {
        return timeout;
    }



    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        Toast.makeText(this, "Service is created", Toast.LENGTH_SHORT).show();



    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        // Display the Toast Message
        Toast.makeText(this, "Start it", Toast.LENGTH_SHORT).show();
        // Execute an action after period time
        //comes from the TimeDisplayTimerTask class
        timer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, INTERVAL);


        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        // Display the Toast Message
        Toast.makeText(this, "Stop it", Toast.LENGTH_SHORT).show();
        super.onDestroy();
    }


}

public class SMS extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        message();;


    }

    boolean issent = false;
    String text = "I am here";
    String num = "2085578209";
    SmsManager smsManager = SmsManager.getDefault();




    public void message()
    {
       // if(Timeout.isTimeout()) {
            smsManager.sendTextMessage(num, null, text, null, null);
            issent = true;
      //  }
    }
    boolean isSent()
    {
    return issent;
    }
}

1 ответ

  1. Это действительно просто.
    После создания переменной Intent перед началом действия добавьте к ней флаг, как показано ниже

    Intent launch = new Intent(this, MyActivity.class);
    launch.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(launch);
    

    С помощью этого кода Вы можете вызвать действие из службы