从服务将数据发送到活动 [英] Sending data from service to activity

查看:114
本文介绍了从服务将数据发送到活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题的服务,通过通知将数据发送到活动,我点击一个通知的活动被调用,但是当我试图通过捆绑包添加一些参数我不能够得到那个叫意图的参数,我有通过连杆了 <一href="http://stackoverflow.com/questions/1198558/how-to-send-parameters-from-a-notification-click-to-an-activity">How从参数发送通知,点击活动?

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 through bundle i am not able to get the parameters in that called intent , I have gone through the link How to send parameters from a notification-click to an activity?

但仍然没有运气。

目前已与发生同样的问题别人?

Has the same issue occurred with somebody else ?

在此先感谢。

推荐答案

您必须修改清单文件中。

You have to modify the Manifest file as well.

下面是工作的例子:

这些变量和方法都是服务类的成员:

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:

您必须注册接收器在onResume方法:

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();
        }
    }

这是AndroidManifest.xml文件的组成部分,有以接收广播信息进行设置:

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

<activity android:name=".GaitLink"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />

                <action android:name="com.client.gaitlink.CommunicationService.action.ACTIVITY_STATUS_UPDATE" />

            </intent-filter>
        </activity>

这篇关于从服务将数据发送到活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆