LocalBroadcastManagerを使おうとしていますが、うまくいかないようです。基本的に、intentServiceが実行されているときはいつでもインテントをブロードキャストするようにします。次に、ユーザーがアクティビティをアクティブに使用しているときはいつでも、アクティビティにブロードキャストを受信させたいと思います。
私はここの指示に従おうとしました: LocalBroadcastManagerの使い方は?
しかし、それは何らかの理由で機能しません。呼び出されているレシーバーのログエントリがありません。
これが私のコードの関連部分です:
public class MainActivity extends Activity {
// Debug log tag
private static final String tag = "PhoneControlMainActivity";
// Broadcast receiver
PhoneControlBroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
// Register the receiver with the local broadcast manager
receiver = new PhoneControlBroadcastReceiver();
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter(PhoneControlBroadcastReceiver.SERVICE_OUTPUT));
// Start IntentService
try {
serviceName = startService(new Intent(this, PhoneControlIntentService.class));
}
catch(SecurityException e)
{
Log.d(tag,"SecurityException occured when starting IntentService: "+ e.getMessage());
return;
}
if(serviceName != null) {
Log.d(tag,"serviceName NOT NULL");
}
else {
Log.d(tag,"serviceName NULL");
}
}
}
public class PhoneControlIntentService extends IntentService {
public PhoneControlIntentService() {
super("PhoneControlIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
Intent msgIntent = new Intent(PhoneControlBroadcastReceiver.SERVICE_OUTPUT);
msgIntent.putExtra("message", "This is my message!");
LocalBroadcastManager.getInstance(this).sendBroadcast(msgIntent);
}
}
public class PhoneControlBroadcastReceiver extends BroadcastReceiver{
// Action
public static final String SERVICE_OUTPUT = "com.axr0284.phonecontrol.SERVICE_OUTPUT";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(tag,"onReceive called");
}
}
何か助けていただければ幸いです。ありがとうアーミッシュ