問題:
BroadcastReceiverを使ってサービスとアクティビティー間で通信を行いたいのですが、onReceiveが呼び出されず受信できません。
実現しようとしている処理
MainActivityからServiceを呼び出しServiceからSecondActivityを呼び出す処理です。
通信はServiceとSecondActivityで行いServiceから何らかのメッセージを受信したらSecondActivityでfinish()を行いたいです。
現在の状況
onReceiveが呼び出されない為finish()出来ない状態です。
よろしくお願い致します。
MainActivity
1public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 Intent service = new Intent(getApplicationContext(), TestService.class); 9 startService(service); 10 } 11}
Service
1public class TestService extends Service { 2 @Override 3 public IBinder onBind(Intent intent) { 4 return null; 5 } 6 public int onStartCommand(Intent intent, int flags, int startId){ 7 intent = new Intent(getApplicationContext(), Overlay.class); 8 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 9 startActivity(intent); 10 sendMessage("こんにちは"); 11 stopSelf(); 12 return START_NOT_STICKY; 13 } 14 @Override 15 public void onCreate() { 16 17 super.onCreate(); 18 } 19 protected void sendMessage(String msg){ 20 Intent broadcast = new Intent(); 21 broadcast.putExtra("message", msg); 22 broadcast.setAction("DO_ACTION"); 23 getBaseContext().sendBroadcast(broadcast); 24 } 25} 26
SecondActivity
1public class Overlay extends Activity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.overlay); 7 8 //ブロードキャストレシーバの登録 9 // receiver 10 UpdateReceiver receiver = new UpdateReceiver(); 11 IntentFilter filter = new IntentFilter(); 12 filter.addAction("DO_ACTION"); 13 registerReceiver(receiver, filter); 14 15 } 16 17 protected class UpdateReceiver extends BroadcastReceiver { 18 @Override 19 public void onReceive(Context context, Intent intent) { 20 Bundle extras = intent.getExtras(); 21 String msg = extras.getString("message"); 22 finish(); 23 } 24 } 25} 26
AndroidStudio4.0.1
AndroidSDK7.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/21 01:00