2017-09-02 9 views
2

サービスを理解していて、そのようなことが把握されているため、受信者がAndroid Oreoでの作業を停止しました。受信者がOreoでの受信を停止しました

私はサービスを開始し、このコードを持っている - 私は私のサービスでこれを持って

Intent intent = new Intent(this, MyService.class); 
intent.putExtra("Time", locationUpdatesTime); 
intent.putExtra("Dist", locationUpdatesDistance); 
startService(intent); 

-

Intent intent = new Intent(); 
intent.setAction("com.androidandyuk.laptimerbuddy"); 
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
intent.putExtra("Lat", thisLat); 
intent.putExtra("Lon", thisLon); 

sendBroadcast(intent); 

しかし、私の受信機が呼び出されることはありません。私は受信機を登録しなければならないと思っていますが、これを正しい構文でどのように記述するのか分かりません。誰でも助けてくれますか?

なぜ私はdownvoteしたいと思う場合は、私はあなたが答えを探していたように私は学ぶことができます/それを見つけることができなかったと私は質問を私のように:-)

多くのありがとう!

UPDATE LocalBroadcastManagerを使用しようとしています。

BroadcastReceiver mMessageReceiver; 

私が持っているのonCreate - - 私が持っているMainActivityで

私のサービスで

mMessageReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // Get extra data included in the Intent 
      String message = intent.getStringExtra("message"); 
      Log.i("receiver", "Got message: " + message); 
     } 
    }; 
    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("custom-event-name")); 

を、私は、送信者のメッセージを見るように、この作品

Log.i("sender", "Broadcasting message"); 
       Intent intent = new Intent(); 
       intent.setAction("custom-event-name"); 
       intent.putExtra("message", "This is my message!"); 

LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent); 

をonLocationChanged。

私は間違っていますか?

+1

詳しい情報は、明示的な意図やいくつかの特別な暗黙のアクションを受け取ることができます[MCVE]お願いします。 –

+1

マニフェストに登録された受信者は、暗黙の「インテント」のブロードキャストを受信できません。送信者と受信者が同じアプリケーションと同じプロセスにいる場合は、システムブロードキャスト( 'sendBroadcast()'と 'Context'の' registerReceiver() ')の使用をやめてください。代わりに、 'LocalBroadcastManager'を使用してください。これにより、Android 8.0の変更点を超えるだけでなく、速度とセキュリティが向上します。しかし、Code-Apprenticeが示唆するように、このレシーバーの登録方法を示してください。 – CommonsWare

+0

私は前に受信機を登録していない...私はないと思いますか?しかし、それはオレオの前に働いた。私は他のコードに従うことによって勉強しようとしているので、あなたがやっていることを徐々に理解するだけです。私はこれに従うことを試みた - https://stackoverflow.com/questions/8802157/how-to-use-localbroadcastmanagerしかし、私のサービスは、私はそれが動作しない理由と仮定コンテキストがありますか? – AndyCr15

答えて

関連する問題