[英]Logs/logcat not working in BroadcastReceiver
我有一個 BroadcastReceiver,它有一些問題。 Toast 消息正在顯示,並且 logcat 消息與命令行 logcat 工具一起出現,但不在 Android studio Logcat 顯示中。 為什么? 我已經嘗試過android:debuggable="true"
並且沒有任何改變。
public class AlarmReceiver extends BroadcastReceiver {
private String filePath;
private Ringtone ringtone;
@Override
public void onReceive(Context context, Intent intent) {
Log.d("RECEIVE", "");
Bundle extras = intent.getExtras();
if (extras == null) {
filePath = null;
} else {
filePath= extras.getString("filePath");
}
Log.d("Filepath in receiver", filePath);
ringtone = RingtoneManager.getRingtone(context, Uri.parse(filePath));
ringtone.play();
Toast.makeText(context, "Fooo", Toast.LENGTH_LONG).show();
// setRingsong(context, filePath);
}
}
在 shell 上試試這個。 adb logcat D |grep RECEIVE adb 程序可以在您的 sdk sdk 工具(平台工具)中找到,這是在檢索日志時實際調試器使用的程序。
“D”參數表示它將顯示“調試”日志,如果您希望在調試時打印日志,這補充了 android:debuggable="true" 設置(記住這是兩個不同的事情,使用 Log 對象打印日志和設置“android.debuggable = true”,請查看此鏈接以獲取有關使用 AndroidStudio 進行調試的更多信息)。 否則,請嘗試使用 Log.e 函數而不是 Log.d。 Log.e 通常用於錯誤,在這種情況下,出於測試目的,您可以使用它並確保始終顯示您的日志,因為錯誤日志的優先級高於調試日志。
( optional step
)首先創建一個名為 TAG 的靜態/常量變量:
const val TAG = "aaa"
在 Logcat 窗口 -> 過濾器下拉 -> 編輯過濾器配置:
Log Tag:
字段中輸入在第一步中選擇的名稱:您現在可以在 BroadcastReceiver 或項目中的任何其他地方記錄您想要的內容:
class BroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
context ?: return
Log.d(TAG, intent?.action!!)
}
}
結果將是這樣的:
問題是標簽不應該全部大寫。 如果您使用“接收”或“接收”,就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.