我正在使用 Android Studio 1.3,我有一个IntentService
收集一些数据并通过如下方式发送出去的设置LocalBroadcastManager
:
意向服务
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);
}
});
}
}
主活动 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
?