前提・実現したいこと
Androidアプリを作成しています。
関数の中で、以下の処理を行いたいのですがうまくいきません。
ご教授ください。
- 関数開始
- ブロードキャストレシーバを作成
- 外部サービスを起動
- ブロードキャスト受信まで待つ
- 外部サービスからブロードキャストを受信
- 関数の戻り値でブロードキャストから受け取った値を返す
発生している問題・エラーメッセージ
ブロードキャストが関数が終わるまで受信できない。
3. のサービスが起動して、ブロードキャストを送ることは確認しているので、
ブロードキャストを割り込みで受け取ることができないのでしょうか?
該当のソースコード
Java
1// 1. 関数 2public String getResult(Context context){ 3 // 2. レシーバの登録 4 IntentFilter filter = new IntentFilter(); 5 filter.addAction(GET_RESULT); 6 context.registerReceiver(receiver, filter); 7 // 3. サービスの起動 8 Intent = new Intent(SERVICE_NAME); 9 intent.setPackage(SERVICE_PACKAGE); 10 intent.setAction(ACTION); 11 context.startService(intent); 12 13 // 4. 結果待ち 14 while(!mIsGetResult){ 15 try { 16 Thread.sleep(200); 17 }catch (Exception e){ 18 e.printStackTrace(); 19 } 20 } 21 // 6. 結果の返却 22 return result; 23 } 24 25// レシーバ 26 private final BroadcastReceiver receiver = new BroadcastReceiver() { 27 @Override 28 // 5. 受信 29 public void onReceive(Context context, Intent intent) { 30 if (intent.getAction().equals(GET_RESULT)) { 31 result = intent.getStringExtra(INTENT_EXTRA_ERROR_CODE); 32 }}} 33 }; 34
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。