メイン アクティビティとブロードキャスト インテントを送信するバックグラウンド サービスでブロードキャスト レシーバーを作成しました。実行しようとするたびにアプリケーションがクラッシュし、ログに次のエラー メッセージが表示されます。
10-04 13:30:43.218: ERROR/AndroidRuntime(695): java.lang.RuntimeException: com.client でブロードキャスト インテント { action=com.client.gaitlink.CommunicationService.action.LOGIN_STATUS_UPDATE (エクストラあり) } を受信中にエラーが発生しました。 gaitlink.GaitLink$LoginStatusReceiver@431690e8
ブロードキャスト メッセージは、次のメソッドで CommunicationService クラスから送信されます。
private void announceLoginStatus(){
Intent intent = new Intent(LOGIN_STATUS_UPDATE);
intent.putExtra(SERVER_MESSAGE, mServerResponseMessage);
intent.putExtra(SESSION_STRING, mSessionString);
sendBroadcast(intent);
}
どこ
String LOGIN_STATUS_UPDATE = "com.client.gaitlink.CommunicationService.action.LOGIN_STATUS_UPDATE"
メイン アクティビティでは、次のブロードキャスト レシーバが定義されています。
public class LoginStatusReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String serverMessage = intent.getStringExtra(CommunicationService.SERVER_MESSAGE);
String sessionString = intent.getStringExtra(CommunicationService.SESSION_STRING);
userInfo.setSessionString(sessionString);
saveSettings();
}
}
onResume メソッドに登録します。
IntentFilter loginStatusFilter;
loginStatusFilter = new IntentFilter(CommunicationService.LOGIN_STATUS_UPDATE);
loginStatusReceiver = new LoginStatusReceiver();
registerReceiver(loginStatusReceiver, loginStatusFilter);
また、マニフェスト ファイルには次のものが含まれます。
<activity android:name=".GaitLink"
android:label="@string/app_name">
<intent-filter>
...
<action android:name="com.client.gaitlink.CommunicationService.action.LOGIN_STATUS_UPDATE" />
</intent-filter>
</activity>
ログに上記のメッセージが表示され、アプリケーションがクラッシュする理由を誰かが説明していただければ幸いです。
ありがとう!