2016-04-21 10 views
2

Ich höre mit meinem Broadcast-Empfänger die Änderung der Schaltuhr. Wenn die onReceive() Methode in meinem Broadcast-Empfänger aufgerufen wird, werden die Protokolle (Log.i/v()) innerhalb der onReceive nicht auf Android-Monitor gedruckt, aber Toasts funktionieren einwandfrei.Logcat funktioniert nicht onReceive in Broadcast Receiver beim Abhören der Alarmmeldung in der Tischuhr

Manifest-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.dumbrella.ratemyday"> 

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver android:process=":remote" android:name="AlarmClockReceiver"> 
     <intent-filter> 
      <action android:name="com.android.deskclock.ALARM_DISMISS" /> 
      <action android:name="com.android.deskclock.ALARM_SNOOZE" /> 
      <action android:name="com.android.deskclock.ALARM_ALERT" /> 
      <action android:name="com.android.deskclock.ALARM_DONE" /> 
     </intent-filter> 
    </receiver> 
</application> 
</manifest> 

Broadcast-Empfänger:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.widget.Toast; 
import java.text.SimpleDateFormat; 

public class AlarmClockReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     // This log.v does not get printed on Android Monitor 
     Log.v("Broadcast Test", "In Broadcast Listener"); 

     String message = "Broadcast intent detected " 
      + intent.getAction(); 

     // This toast gets displayed after the alarm is dismissed 
     Toast.makeText(context, message,Toast.LENGTH_LONG).show(); 
    } 
} 

Antwort

0

Sie könnten sicherstellen möchten, dass Sie das richtige Gerät in Ihrer DDMS Perspektive ausgewählt haben, auch dafür sorgen, dass Sie haben wählte die richtige Filteroption und Log-Ebene - in Ihrem Fall möchten Sie "ausführlich" auswählen. Überprüfen Sie auch die ausgewählte Antwort und Vorschläge, warum Logcat is not displaying logs.

+0

Ich benutze das Anhören von Benachrichtigungen von der gleichen App mit einem anderen Broadcast-Empfänger gesendet und Log-Nachrichten werden nur gut in Loagcat angezeigt. Sollte sich die DDMS-Perspektive nicht auf alle Empfänger in derselben Anwendung auswirken? Ich verwende ein physisches Gerät (Nexus 5, Android 6.0.1), um den Code zu testen. –

+1

Das Protokoll wurde angezeigt, aber nicht unter dem Filter "Nur ausgewählte Anwendung anzeigen". Ich entfernte das "android: process =": ​​remote "-Tag aus der Manifest-Datei und dann begann das Protokoll, unter dem Filter" Show only selected application "gedruckt zu werden. Früher schien es, dass das Protokoll gedruckt wurde, aber in den unzähligen anderen Logcat-Ausgaben verloren ging. –

2

Vielleicht ist es zu spät, aber ich überlasse es für zukünftige Programmierer mit diesem Problem, ich hatte ein ähnliches Problem und löste es auf diese Weise.
einfach in Logcat Panel, ändern Sie die Filterung listbox zu "Keine Filter".