我正在尝试禁用Android StrictMode检查之一-检测未标记的套接字。
我这样做有几个原因:
我们的应用中使用的某些库,例如Crashlytics /毕加索等 在内部使用OkHttp并且StrictMode检测到未标记的套接字 OkHttp代码中的问题(我无法访问第三方库的代码来在那里解决此问题)
我需要清除严格模式下未标记的套接字错误的日志,而这些错误无法修复以消除其他StrictMode问题检测的噪声
要启用VmPolicy,我们使用VmPolicy.Builder.detectAll()方法
通过查看StrictMode的来源,我发现了方法VmPolicy.Builder.permitUntaggedSockets,但其注释为@hidden
,不能在API = 28上使用
我发现此问题的唯一solution是将detectAll()
方法主体复制到我的代码中,并删除对detectUntaggedSockets()
的调用,但在我看来,它易于出错且难以维护。
也许有人可以建议更好地解决所描述的问题?
任何有关“为什么permitUntaggedSockets()
都被隐藏在API 28中”的信息,我们深表感谢。
答案 0 :(得分:4)
所以您的问题是:
有关“为什么allowUntaggedSockets()的任何信息都隐藏在 非常感谢API 28“。
我的回答是(这是一个好问题!XD) 我认为StictMode至少需要一个好的JavaDoc,而我们并没有要求太多。
对您来说,一个好消息是,有一个针对该问题的解决方案,该解决方案基于新的28-API,这是我的代码段: https://gist.github.com/houssemzaier/cf69f9a614f9550408872349e5798e0b
祝你有美好的一天!