我的原始需求是在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广播接收器有问题?
- 如果不是的话,怎么确保 @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 (作者)
好的,谢谢,我去试试
2016-06-28 17:02
7***@qq.com
回复 lhyh: 请问后面学会了吗 要怎么弄呢 现在还是很懵
2019-06-13 17:20