【发布时间】:2015-08-25 19:22:47
【问题描述】:
我使用的是 Android Studio 1.3,我有一个 IntentService 设置,它收集一些数据并通过 LocalBroadcastManager 将其发送出去:
IntentService
public class cService extends IntentService {
public cService(){
super("cService");
}
@Override
protected void onHandleIntent(Intent intent) {
SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
Intent broadcastIntent = new Intent("action.getTestData");
broadcastIntent.putExtra("data", response.toString());
LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);
}
}
上面的代码运行了,但是广播没有被捕获。
AndroidManifest.xml
<service android:name=".services.cService"
android:exported="false">
</service>
<receiver android:name=".services.Receiver">
</receiver>
扩展广播接收器的接收器(永远不会被调用)
public class Receiver extends BroadcastReceiver
{
protected MainActivity mainActivityContext;
public Receiver() {}
@Override
public void onReceive(Context context, Intent intent) {
final String data = intent.getStringExtra("data");
mainActivityContext.runOnUiThread(new Runnable() {
@Override
public void run() {
TextView txtData = (TextView)mainActivityContext.findViewById(R.id.textView2);
txtData.setText(data);
}
});
}
}
MainActivity onCreate()
public class MainActivity extends Activity implements View.OnClickListener{
TextView txtData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Dummy text field that should populate with something upon
//onReceive() executing...
txtData = (TextView)findViewById(R.id.textView2);
txtData.setText("Ready.");
IntentFilter filter = new IntentFilter("action.getTestData");
filter.addDataScheme("string");
BroadcastReceiver c = new Receiver();
LocalBroadcastManager.getInstance(this).registerReceiver(c,filter);
}
我在这里做错了什么导致无法接收到广播?我认为这与我的IntentFilter 有关?
【问题讨论】:
-
@Anthea 我发布了我如何设法让我的工作的答案。它运行良好。
标签: android android-intent broadcastreceiver intentfilter localbroadcastmanager