【问题标题】:StrictMode: How to disable "Untagged socket detected" in Android for targetSdk >= 28StrictMode:如何在 Android 中为 targetSdk >= 28 禁用“检测到未标记的套接字”
【发布时间】:2019-01-16 08:04:01
【问题描述】:

我正在尝试禁用一项 Android StrictMode 检查 - 检测未标记的套接字。

我这样做有几个理由:

  • 我们的应用程序中使用的一些库,例如Crashlytics /毕加索等 在内部使用 OkHttp 并且 StrictMode 检测到未标记的套接字 OkHttp 代码中的问题(我无权访问第三方库的代码来解决此问题)

  • 我需要清除我无法修复的严格模式未标记套接字错误的日志,以消除其他 StrictMode 问题检测的噪音

要启用 VmPolicy 我们使用VmPolicy.Builder.detectAll() 方法

通过查看 StrictMode 的来源,我找到了方法 VmPolicy.Builder.permitUntaggedSockets,但它注释为 @hidden 并且不能在 API = 28 上使用

我发现这个问题的唯一solution 是将detectAll() 方法体复制到我的代码中并删除对detectUntaggedSockets() 的调用,但在我看来它容易出错且难以维护。

也许有人可以为所描述的问题提出更好的解决方案?

非常感谢有关“为什么permitUntaggedSockets() 隐藏在 API 28 中”的任何信息。

Crashlytics: Details about StrictMode problem

OkHttp: Bug report about Untagged socket problem

【问题讨论】:

    标签: android android-strictmode


    【解决方案1】:

    所以你的问题是:

    任何关于“为什么 permitUntaggedSockets() 被隐藏在 API 28" 非常感谢。

    我的回答是(这是个好问题!XD) 我认为 StictMode 至少需要一个好的 JavaDoc,我们并没有要求太多。

    对您来说好消息是有一个基于新的 28-API 的解决方案,这是我的代码 sn-p: https://gist.github.com/houssemzaier/cf69f9a614f9550408872349e5798e0b

    祝你有美好的一天!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 2023-01-25
      • 2021-11-25
      相关资源
      最近更新 更多