当应用关闭时,无法执行广播类的onReceive()方法的任务。

时间:2018-10-30 13:47:56

标签: java android service broadcastreceiver

这是我的服务MyServiceSMS.java 每当我关闭应用程序时,我只会收到默认的Toast broadcastreceiver“消息接收者:xxxxxxx” 其余代码不在onReceiceve下执行。 我在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>

0 个答案:

没有答案