使用广播接收器

时间:2017-01-23 16:45:34

标签: android android-intent broadcast receiver

我试图将字符串从服务发送到活动 - 但我无法做到这一点。我找到了很多例子 - 没有什么不行。 我使用LocalBroadcastManger 我将这部分代码添加到mainactivity中。

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
             Logger.e("RECEIVEEEEER!!!!!!!!!!!!!!!!");
        }
    };

和onResume / onStart

LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(
                mMessageReceiver, new IntentFilter("myIntentKey"));

并在服务中添加此代码

Intent intent = new Intent("myIntentKey");
intent.putExtra("key", "keyfromservice");        LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent)

服务从推送通知开始。主要活动来自" CordovaActivity"。 当服务中的代码启动时 - 我的广播接收器没有得到消息(或调用blabla)但是如果sendBroadcast从主活动运行那么这个代码工作。伙计们错了吗? 服务中我需要进行一些计算的主要问题是我需要将这个新计算发送到活动以便在主UI上显示。请有人可以帮帮我吗?为什么我不能将字符串从服务发送到活动。

UPD 我有从cordovaActivity延伸的活动(所以我的UI是其网页)。我写了js部分,我从java调用屏幕上的更新数据。 当pushNotificaiton来了 - 我在这里开始服务

 @Override
    public void onMessageReceived(String from, Bundle data) {

了解服务清单中的日志我写

 <service android:exported="false" android:name=".services.MyService" android:process=":myProcess">

所以在logcat中我可以选择我的监控过程。

当我删除

android:process=":myProcess"

广播开始按需工作。感谢@ Mike.M

0 个答案:

没有答案