BroadcastReceiver tidak menampilkan Log apa pun dari onReceive

Layanan saya berfungsi

broadcaster = LocalBroadcastManager.getInstance(this);
public void sendResult(String message) {
    Log.d("Service", "sendResult "+message);
    Intent intent = new Intent();
    intent.setAction("com.myandroid.app.messagechanged");
    if(message != null)
        intent.putExtra("message", message);
        broadcaster.sendBroadcast(intent);
    }

dan MainActivity punya

BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("MainActivity", "Receiving Broadcast");
        Message = intent.getStringExtra("message");
        Log.d("MainActivity", "Received : "+Message);
        tvMessage.setText(Message);                       
    }
};

dan Manifest punya

<receiver android:name="com.myandroid.app.receiver" >
   <intent-filter>
      <action android:name="com.myandroid.app.messagechanged" />
   </intent-filter>
</receiver>

Kode ini tidak diperbarui TextView tvMessage.

Catatan:

Service   sendResult MyMessage

Hanya log ini yang menunjukkan fungsi-fungsi ini. Tidak menampilkan Log apa pun dari onReceive.

Nama paket saya adalah com.myandroid.app

Nama layanannya adalah AppService

Nama aktivitas adalah MainActivity


person Sushin PS    schedule 25.04.2014    source sumber
comment
Anda membingungkan kelas penerima terdaftar yang nyata, dengan penerima yang dideklarasikan & didaftarkan secara dinamis. Jawaban @Bruno menunjukkan cara mendaftarkan penerima dalam kode\. Anda dapat menemukan info lebih lanjut tentang jawaban yang saya ajukan untuk pertanyaan serupa di sini - stackoverflow.com/a/23154946/383414   -  person Richard Le Mesurier    schedule 28.04.2014
comment
Solusi ini mungkin membantu Anda: stackoverflow.com/questions/32464151/   -  person Saeid    schedule 26.08.2020


Jawaban (1)


Apakah Anda mendaftarkan penerima Siaran?

Anda dapat melakukannya secara terprogram

IntentFilter filter = new IntentFilter("SOME_ACTION");
filter.addCategory("SOME_CATEGORY");
registerReceiver(YOUR_BROADCAST, filter);

Atau dalam manifes

<receiver android:name="YOUR_BROADCAST_CLASS" >
    <intent-filter>
        <action android:name="SOME_ACTION" />
        <action android:name="SOME_CATEGORY" />
    </intent-filter>
</receiver>
person Bruno Santos    schedule 25.04.2014
comment
Saya menambahkan ke file manifes. Masih tidak ada perubahan. Tidak menampilkan log penerimaan - person Sushin PS; 28.04.2014
comment
saya telah mengubah dan manifes, aktivitas utama, dan layanan saya diperbarui dalam pengeditan posting saya. Harap verifikasi dan beri tahu jika ada yang tidak beres. - person Sushin PS; 28.04.2014