android - 如何在 Android 中自动接受 Wi-Fi Direct 连接请求

标签 android wifi-direct wifip2p

我有 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/

相关文章:

android - 在我的生物识别加密方法应用程序中从 android 扫描仪获取指纹图像

android - 我应该能够在 Android 上创建/etc/myApp 目录吗?

android - 如何在 Jetpack Compose 中测试带注释的字符串超链接单击?

android - getView() 的两种实现有什么区别?

java - WiFi 直接演示

android - 在android中更改Wifi Direct名称

java - WifiP2pManager 在 CreateGroup 上返回 BUSY 状态

android - wifi peer-2-peer(wifi direct)组自动认证

android - WifiP2pManager 空

java - WifiP2p:我的 Activity 不使用BroadcastReceiver(我认为..)