Sending data from service to activity

后端 未结 1 464
太阳男子
太阳男子 2020-12-04 17:26

I am having issue when sending data from Service to Activity through Notification , I click a Notification an Activity get invoked but when i try to add some parameters thro

1条回答
  •  执笔经年
    2020-12-04 17:50

    You have to modify the Manifest file as well.

    Here is the example that works:

    These variables and methods are members of Service class:

    public static final String MOVEMENT_UPDATE = "com.client.gaitlink.AccelerationService.action.MOVEMENT_UPDATE";
        public static final String ACCELERATION_X = "com.client.gaitlink.AccelerationService.ACCELERATION_X";
        public static final String ACCELERATION_Y = "com.client.gaitlink.AccelerationService.ACCELERATION_Y";
        public static final String ACCELERATION_Z = "com.client.gaitlink.AccelerationService.ACCELERATION_Z";
    
    private void announceAccelerationChanges()//this method sends broadcast messages
        {
            Intent intent = new Intent(MOVEMENT_UPDATE);
            intent.putExtra(ACCELERATION_X, accelerationX);
            intent.putExtra(ACCELERATION_Y, accelerationY);
            intent.putExtra(ACCELERATION_Z, accelerationZ);
    
            sendBroadcast(intent);
        }
    

    And this are the methods from Main activity:

    You have to register receiver in the onResume method:

        @Override
        public void onResume()
        {   
    
            IntentFilter movementFilter;
            movementFilter = new IntentFilter(AccelerationService.MOVEMENT_UPDATE);
            accelerationReceiver = new AccelerationServiceReceiver();
            registerReceiver(accelerationReceiver, movementFilter);
    
    
            startAccelerationService();
    
            super.onResume();
        }
    
        private void startAccelerationService()
        {
            startService(new Intent(this, AccelerationService.class));
        }
    
        public class AccelerationServiceReceiver extends BroadcastReceiver
        {
          @Override
            public void onReceive(Context context, Intent intent)//this method receives broadcast messages. Be sure to modify AndroidManifest.xml file in order to enable message receiving
            {
                accelerationX = intent.getDoubleExtra(AccelerationService.ACCELERATION_X, 0);
                accelerationY = intent.getDoubleExtra(AccelerationService.ACCELERATION_Y, 0);
                accelerationZ = intent.getDoubleExtra(AccelerationService.ACCELERATION_Z, 0);
    
                announceSession();
    
                updateGUI();
            }
        }
    

    This is the part of AndroidManifest.xml file that has to be set in order to receive broadcast messages:

    
                
                    
                    
    
                    
    
                
            
    

    0 讨论(0)
提交回复
热议问题