【问题标题】:32 - How to overcome the Wi-Fi Direct 32 limit on credentials in Android?32 - 如何克服 Android 中 Wi-Fi Direct 32 对凭据的限制?
【发布时间】:2016-03-24 22:25:03
【问题描述】:
【问题讨论】:
标签:
java
android
android-wifi
wifi-direct
【解决方案1】:
CREDENTIAL_MAX_NUM 是对WififP2pGroupList 将存储的WifiP2pGroup 对象数量的限制。可以成为单个 Wi-Fi Direct 组成员的设备数量不受限制 - 这在理论上受组的 IP 地址范围的限制。它是设备可以存储和使用的持久组数量的限制。
WifiP2pGroupList 由 Wi-Fi P2P 服务实例化并由 wpa_supplicant 填充,因此通过反射更改 CREDENTIAL_MAX_NUM 的值不是解决方案,因为绑定可能继承自 supplicant 和 P2P 服务驻留在系统服务器进程中。
可以通过反射获取列表对象(需要使用动态代理类实现隐藏方法WifiP2pManager.PersistentGroupInfoListener,然后通过IPC将其传递给系统服务),但是它的使用是有限的——对于它不包含凭据的所有组,因此无法缓存以供将来使用。列表的修改将仅限于 WifiP2pManager 公开的方法提供的任何内容。
总而言之,修改CREDENTIAL_MAX_NUM 是不可能的,即使是这样,wpa_supplicant 中也可能存在上限。