我有 2 台使用 WiFi Direct 的 Android 设备。在一台设备上,我可以使用 WifiP2pManager
类获取有关另一台设备的信息,并请求连接到另一台设备。但是,当我请求连接时,另一台设备会弹出一个小窗口并询问用户是否要接受连接请求。
是否可以自动接受这些连接请求? I.E 能够在没有用户确认的情况下连接到其他设备?
最佳答案
借助 Xposed framework 可以轻松完成.您只需要替换其中一个 android java 类中的单一方法(请参阅 snihalani 的回答中的链接)。但是当然,要使用 Xposed,您的设备必须已获得 root 权限。主要思想可以用下面的代码来表达(使用Xposed)
@Override
public void handleLoadPackage(LoadPackageParam lpparam) {
try {
Class<?> wifiP2pService = Class.forName("android.net.wifi.p2p.WifiP2pService", false, lpparam.classLoader);
for (Class<?> c : wifiP2pService.getDeclaredClasses()) {
//XposedBridge.log("inner class " + c.getSimpleName());
if ("P2pStateMachine".equals(c.getSimpleName())) {
XposedBridge.log("Class " + c.getName() + " found");
Method notifyInvitationReceived = c.getDeclaredMethod("notifyInvitationReceived");
final Method sendMessage = c.getMethod("sendMessage", int.class);
XposedBridge.hookMethod(notifyInvitationReceived, new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
final int PEER_CONNECTION_USER_ACCEPT = 0x00023000 + 2;
sendMessage.invoke(param.thisObject, PEER_CONNECTION_USER_ACCEPT);
return null;
}
});
break;
}
}
} catch (Throwable t) {
XposedBridge.log(t);
}
}
我在 SGS4 库存 4.2.2 ROM 上对其进行了测试并且它有效。 我想同样可以在 Substrate 的帮助下完成安卓系统。
关于android - 如何在 Android 中自动接受 Wi-Fi Direct 连接请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10544906/