Android Logcat无法打印URL与邮箱,其他设备正常,求解决方案
解决Android Logcat无法打印URL/邮箱(OkHttp日志被屏蔽)的问题
你遇到的是部分Android定制ROM的日志敏感信息屏蔽问题——系统自动把日志里的URL、邮箱这类内容替换成了星号,其他没有这个过滤机制的设备就能正常显示。你的日志示例:
2023-06-23 15:44:05.092 6896-7945 okhttp.OkHttpClient I --> GET *****************************************************************************
下面是几个可行的解决办法:
自定义OkHttp日志拦截器(最通用)
别用OkHttp默认的日志拦截器,自己写一个拦截器手动打印请求细节,绕开系统的过滤:class CustomHttpLogger : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val req = chain.request() // 直接打印完整URL Log.d("CustomOkHttp", "--> ${req.method} ${req.url}") // 如果请求头里有邮箱信息,也可以单独打印 req.headers.forEach { name, value -> if (value.contains("@")) { Log.d("CustomOkHttp", "Header $name: $value") } } val response = chain.proceed(req) // 按需打印响应信息 return response } }初始化OkHttpClient时添加这个拦截器:
val okHttpClient = OkHttpClient.Builder() .addInterceptor(CustomHttpLogger()) .build()关闭系统日志敏感信息过滤(限部分设备)
部分国产厂商的开发者选项里有专门的开关控制这个:- 打开「设置」→「开发者选项」
- 找「日志敏感信息保护」「隐私日志过滤」这类选项
- 关闭后重启Logcat或设备,再看日志是否正常显示
用adb命令抓取原始日志
设备自带的Logcat应用可能会做过滤,但adb抓取的是原始日志内容:adb logcat -s okhttp.OkHttpClient:I执行命令后触发请求,终端里就能看到未被屏蔽的完整URL和邮箱。
如果是厂商系统强制做的屏蔽,自定义拦截器是最稳的方案,不受系统规则限制。
内容的提问来源于stack exchange,提问作者Mohit Findoriya
相关产品推荐
相关产品推荐

