Не удается выполнить задачу метода onReceive () класса трансляции, когда приложение закрыто. - PullRequest
0 голосов
/ 30 октября 2018

Вот мой сервис MyServiceSMS.java Всякий раз, когда я закрываю свое приложение, я получаю только тост по умолчанию широковещательный приемник "Сообщение получено: xxxxxxx" Остальная часть кода не выполняется ниже на Receiceve. У меня есть некоторые задачи внутри метода onReceiceve, я хочу, чтобы они выполнялись, даже если пользователь закрывает приложение.

public class MyServiceSMS extends Service {

    private IntentFilter mIntentFilter;
    private SMSGetter smsGetter;

    @Override
    public void onCreate() {
        super.onCreate();




   }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        smsGetter = new SMSGetter();
        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
        registerReceiver(smsGetter, mIntentFilter);

        Toast.makeText(this, "Hello I'm a service", Toast.LENGTH_SHORT).show();


        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }


    @Override
    public void onDestroy() {
        super.onDestroy();

        //unregisterReceiver(smsGetter);
    }

    public class SMSGetter extends BroadcastReceiver {


        @Override
        public void onReceive(Context context, Intent intent) {

            Bundle bundle = intent.getExtras();


            if (bundle != null) {

                Object[] pdus = (Object[]) bundle.get("pdus");
                SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdus[0]);

                JSONObject data = new JSONObject();
                try {
                    data.put("from", smsMessage.getDisplayOriginatingAddress());
                    data.put("message", smsMessage.getMessageBody());

                    SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
                    if (sharedPreferences.contains(IP) && sharedPreferences.contains(IP)) {

                        sendSMsToServer sendTextToServer = new sendSMsToServer();
                        sendTextToServer.execute(data.toString(), sharedPreferences.getString(IP, ""), sharedPreferences.getString(PORT, ""));
                        Toast.makeText(context, "Your Ip :" + data.toString(), Toast.LENGTH_LONG).show();

                    } else {

                        Toast.makeText(context, "Your IP is empty .. Scan to get IP Again ..", Toast.LENGTH_LONG).show();
                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }


                // Toast.makeText(context, smsMessage.getDisplayMessageBody(), Toast.LENGTH_SHORT).show();

            }


        }


    }
}

Мой манифест

<service
            android:name=".viewmodel.MyServiceSMS"
            android:enabled="true"
            android:exported="true"></service>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...