2012-07-29 27 views
0

我已經成功地使用了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);代替。

回答

0

檢查您的AndroidManifest.xml:

<receiver android:name=".MessageReceiver"> 
<intent-filter> 
<action android:name="com.currencyconverter2.intent.action.MESSAGE" /> 
<category android:name="android.intent.category.Default" /> 
</intent-filter> 
</receiver> 

^-^

+0

仍然不觸發過濾器。我把我的IntentService。你看到有什麼問題嗎? – 2012-07-29 09:00:30

+0

而且我已經以編程方式註冊了過濾器和接收器。但是謝謝你! – 2012-07-30 01:04:48