Dav*_*hel 10 android wifi-direct wifip2p
我有2台使用WiFi Direct的Android设备.在一台设备上,我可以使用WifiP2pManager该类获取有关其他设备的信息,并请求连接到另一台设备.但是,当我请求连接时,另一个设备弹出一个小窗口并询问用户是否要接受连接请求.
是否可以自动接受这些连接请求?IE无法在没有用户确认的情况下连接到其他设备?
它可以在Xposed框架的帮助下轻松完成.你只需要替换一个android java类中的单个方法(参见snihalani的回答链接).但是当然要使用Xposed,你的设备必须扎根.主要思想可以用以下代码表示(使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
我在SGS4 stock 4.2.2 ROM上进行了测试,它运行良好.我想同样可以在Substrate for android 的帮助下完成.
根据评论,如果您只想跟踪和记录周围的车辆,您真的需要连接到设备吗?
我不知道该项目的范围,但您可以简单地使用在 WifiP2pManager 中请求对等点时获得的WifiP2pDeviceList。您可以获得您周围的设备(〜=车辆)列表并可以记录它。
我想,如果您想发送更详细的信息,连接很有用。
| 归档时间: |
|
| 查看次数: |
17919 次 |
| 最近记录: |