Android 发送广播不工作
我一直在尝试实现自定义的Bradscart。但是当我注册它时,我的意图返回null。我不知道这里出了什么问题 ? 我的活动在这里Android 发送广播不工作,android,Android,我一直在尝试实现自定义的Bradscart。但是当我注册它时,我的意图返回null。我不知道这里出了什么问题 ? 我的活动在这里 private MyReciever mReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.mReceiver = new MyReciever(); Intent r
private MyReciever mReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mReceiver = new MyReciever();
Intent result=registerReceiver(this.mReceiver, new IntentFilter(
"com.example.Broadcast"));
int status = result.getIntExtra("HighScore",0);
System.out.println(status+" Yahoo");
setContentView(R.layout.activity_main);
for (int i = 0; i < 10; i++) {
try {
if (i == 7) {
// MyReciever mr=new MyReciever();
Intent intent = new intent();
intent.setAction("com.example.Broadcast");
intent.putExtra("HighScore", 1000);
sendStickyBroadcast(intent);
break;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
unregisterReceiver(mReceiver);
}
我已在android mainfest文件中授予权限
<uses-permission android:name="android.permission.BROADCAST_STICKY"/>
它将返回null
,因为在您调用registerReceiver()
在清单文件中声明您的接收者时,该操作尚未广播任何内容
<receiver
android:name=".MyReceiver"
</receiver>
“执行一个“粘性”的sendBroadcast(Intent),这意味着您发送的意图在广播完成后仍然存在,以便其他人可以通过registerReceiver(BroadcastReceiver,IntentFilter)的返回值快速检索该数据。在所有其他方面,这与sendBroadcast(Intent)的行为相同。”@user2130718:文档中没有说Android有时间机器。在调用sendStickyBroadcast()
之前,您正在调用registerReceiver()
。这没关系,但在发送stickybroadcast之前,我们需要先注册它。什么是好方法?@user2130718:好的,好方法就是不要使用粘性广播。我猜每1000个应用中只有不到一个需要它们。除此之外,欢迎您首先调用registerReceiver()
,但您的代码中需要有逻辑来处理null
从registerReceiver()
返回的数据。我需要通过stickybroadcast来实现这一点。它希望通过使用粘性广播来实现它。根据文档,它将在何时返回意图。我需要一个例子。我想我已经动态注册了它,所以不需要在mainfest文件中定义
<receiver
android:name=".MyReceiver"
</receiver>