我已經成功地使用了IntentService幾次,但在當前的應用程序中,我無法獲取BroadcastReceiver的onReceive()來啓動。 IntentService的Intent操作中以及IntentFilter中的確切字符串以及BroadcastReceiver在onResume中註冊。IntentService有什麼問題
filter = new IntentFilter("com.currencyconverter2.intent.action.MESSAGE");
Log.d("CC2", "intent filter created");
filter.addCategory(Intent.CATEGORY_DEFAULT);
Log.d("CC2", "filter category added");
receiver = new MessageReceiver();
Log.d("CC2", "receiver instantiated");
}
public void onResume(){
super.onResume();
registerReceiver(receiver, filter);
Log.d("CC2", "receiver registered");
}
public void onPause(){
super.onPause();
unregisterReceiver(receiver);
Log.d("CC2", "receiver unregistered");
}
public class MessageReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent){
Log.d(Tag, "entered onReceive...");
String html = intent.getStringExtra("OUTPUT");
webView.setBackgroundColor(Color.parseColor("#f4f36f"));
webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
}
}
我還在Manifest.xml中指定了該服務。
<service android:name=".IntentServiceTest"></service>
我的日誌告訴我intentBroadcast從IntentService廣播,應用程序停在那裏。 BroadcastReceiver似乎沒有收到它。什麼可能是錯誤的?謝謝!
編輯:
我IntentService
Intent broadcastIntent = new Intent();
Log.d(Tag, "setting intent action");
broadcastIntent.setAction("com.currencyconverter2.intent.action.MESSAGE");
Log.d(Tag, "adding intent category");
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
Log.d(Tag, "putting intent extra");
broadcastIntent.putExtra("OUTPUT", data.text());
Log.d(Tag, "sending broadcast");
sendBroadcast(intent);
}catch(Exception e){
e.printStackTrace();
//System.out.println("f");
}
}
}
編輯2:
發現的bug。
Intent broadcastIntent = new Intent();
Log.d(Tag, "setting intent action");
broadcastIntent.setAction("com.currencyconverter2.intent.action.MESSAGE");
Log.d(Tag, "adding intent category");
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
Log.d(Tag, "putting intent extra");
broadcastIntent.putExtra("OUTPUT", data.text());
Log.d(Tag, "sending broadcast");
sendBroadcast(intent);
我應該有sendBroadcast(broadcastIntent);代替。
仍然不觸發過濾器。我把我的IntentService。你看到有什麼問題嗎? – 2012-07-29 09:00:30
而且我已經以編程方式註冊了過濾器和接收器。但是謝謝你! – 2012-07-30 01:04:48