我有一个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);
}
}
答案 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)
(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!!)
}
}
结果将是:
答案 2 :(得分:-1)
问题是标签不应全部为大写。如果您使用"接收"或者"收到",没关系。