Logs / logcat在BroadcastReceiver中不起作用

时间:2015-09-08 17:48:06

标签: android android-studio android-logcat

我有一个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);
        }
    }

3 个答案:

答案 0 :(得分:0)

在shell上试试这个。 adb logcat D | grep RECEIVE adb程序可以在你的sdk sdk工具(平台工具)上找到 这是实际调试器在检索日志时使用的程序。

" D"参数表示它将显示" debug"日志,这补充了android:debuggable =" true"设置是否要在调试时打印日志(请记住这些是两个不同的事情,使用Log对象打印日志并设置" android.debuggable = true",检查this link以获取有关调试的更多信息AndroidStudio)。 否则,请尝试使用Log.e函数而不是Log.d. Log.e通常用于出错,在这种情况下,出于测试目的,您可以使用它并确保始终显示日志,因为错误日志具有更高的优先级来调试日志。

答案 1 :(得分:0)

  1. optional step)首先创建一个名为TAG的静态/常量变量:

    const val TAG = "aaa" 
    
  2. 在Logcat窗口中->过滤器下拉菜单->编辑过滤器配置:

enter image description here

  1. 然后在Log Tag:字段中输入在第一步中选择的名称:

2

您现在可以在BroadcastReceiver或项目的其他任何位置记录所需的内容:

class BroadcastReceiver : BroadcastReceiver() {

  override fun onReceive(context: Context?, intent: Intent?) {
      context ?: return

      Log.d(TAG, intent?.action!!)
  }
}

结果将是:

3

答案 2 :(得分:-1)

问题是标签不应全部为大写。如果您使用"接收"或者"收到",没关系。