lhyh
lhyh
  • 发布:2016-06-28 16:28
  • 更新:2016-07-02 11:18
  • 阅读:2104

java自定义广播,前台js接收

分类:Native.js

如题,在后台通过 sendBroadcast() 发送了一条广播,前台如何接接收?

             final Intent intent=new Intent(SCANNER_RESULT);    
             intent.putExtra("msgContent",  (String)msg.obj);   
             sendBroadcast(intent);   
             Log.i("autoDebug","发送广播");

看过官方Native.js关于接收系统广播的demo,无奈太过愚钝,未找到思路,请大神们指点

2016-06-28 16:28 负责人:无 分享
已邀请:
Android_磊子

Android_磊子

先进行广播事件监听。仿照http://ask.dcloud.net.cn/question/7661。
在执行广播分发,即你的后台分发。

  • lhyh (作者)

    好的,谢谢,我去试试

    2016-06-28 17:02

  • 7***@qq.com

    回复 lhyh: 请问后面学会了吗 要怎么弄呢 现在还是很懵

    2019-06-13 17:20

lhyh

lhyh (作者) - 目前就职成都

我的原始需求是在PDA上实现监听扫描事件的功能,并将扫描到的结果传给webapp中的JS层,进行下一步操作。
然后尝试在java层拿到扫描结果后,我进行了一次广播发送,java代码如下

public static final String SCANNER_RESULT = "android.intent.action.MY_BROADCAST";  

final Intent intent = new Intent(SCANNER_RESULT);  
scanResult = (String) msg.obj;  
intent.putExtra("msgContent", scanResult);  
sendBroadcast(intent);

后台测试用广播接收代码


    public class MyReceiver extends BroadcastReceiver {  

        private static final String TAG = "MyReceiver";  

        @Override  
        public void onReceive(Context context, Intent intent) {  
            String msg = intent.getStringExtra("msgContent");  
            Log.i(TAG, msg);  
        }  

    }

在activity初始化的时候,注册广播接收器

    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        // 注册广播监听事件  
        IntentFilter filter = new IntentFilter();  
        filter.addAction("android.intent.action.MY_BROADCAST");  
        registerReceiver(receiver, filter);  
        }

参照官方Native.js示例,我在js中的监听代码是这样写的。现在的问题是,我在后台确实发送广播了,也在后台正确的接收到了广播。但是在前台就一直没有接收到。
1.是不是我的js广播接收器有问题?

  1. 如果不是的话,怎么确保 @DCloud_Android_磊子 告诉我的,先注册,再发广播
    
    var receiver;  
    mainAc = plus.android.runtimeMainActivity(); //获取activity  
    receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {  
    onReceive: function(context, intent) { //实现onReceiver回调函数  
        plus.android.importClass(intent);  
        alert(intent.getAction());  
        mainAc.unregisterReceiver(receiver);  
    }  
    });  
    var IntentFilter = plus.android.importClass('android.content.IntentFilter');  
    var Intent = plus.android.importClass('android.content.Intent');  
    var filter = new IntentFilter();  
    filter.addAction("android.intent.action.MY_BROADCAST"); //监听自定义吧  

mainAc.registerReceiver(receiver, filter); //注册监听

  • lhyh (作者)

    @1595 帮忙看下哈

    2016-07-02 11:04

该问题目前已经被锁定, 无法添加新回复