-1

我想知道是否有办法在选定的应用程序上将网络连接伪装成断开连接或禁用。由于像“Fake Wifi Connection”这样的 Xposed 模块正在工作,我相信这应该是可能的。

谢谢你。

4

1 回答 1

0

通常我们使用类似这样的东西来检查网络是否连接

        ConnectivityManager connectivityManager
                = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();

因此,您可以使用 Xposed 挂钩 NetworkInfo 类的 isConnectedOrConnectiong() 方法并从中返回 true。

        XposedHelpers.findAndHookMethod(NetworkInfo.class, loadPackageParam.classLoader, "isConnectedOrConnecting", new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
                param.setResult(false);

            }
        });

param.setResult(false) 跳过对原始方法的调用并作为调用的结果返回 false (从不进行)

我希望这有帮助。

编辑:来自 android 文档

getActiveNetworkInfo 在 API 级别 1 中添加

网络信息 getActiveNetworkInfo ()

返回有关当前活动的默认数据网络的详细信息。连接后,此网络是传出连接的默认路由。在启动网络流量之前,您应该始终检查 isConnected()。当没有默认网络时,这可能会返回 null。

因此,当没有默认网络时,调用可能会返回 null。在这种情况下,这将不起作用。

于 2017-01-12T07:39:10.137 回答