添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

原文地址:http://blog.csdn.net/pxshl/article/details/76035294

原因:enableNetwork会断开的当前连接的wifi,再连接指定wifi,而此时系统检测到wifi断开,也会自动连接wifi(默认为最后连接成功的那个wifi),因此可能导致调用enableNetwork却无法连接到指定wifi,或者连接成功后又被断开。

解决方法:

修改wifi优先级是无效的,原因略。

有2种解决方法,第一种用反射得到WifiManager的connect方法去连接wifi,这个方法能保证比系统更快连接上wifi且刷新优先级。

缺点是,该connect方法在不同sdk上参数是不一样的,因此代码复杂且容易错。

第二种,相当简单,在调用enableNetwork前把所有wifi都disenableNetwork(该方法能阻碍系统重新连接wifi),如

for (WifiConfiguration wifiConfiguration :mWifiConfigList){ if(!(wifiConfiguration.SSID.equals(TaskConfig.getSsid() )
|| wifiConfiguration.SSID.equals("\"" + TaskConfig.getSsid() +  "\""))) {


wifiManager.disableNetwork(wifiConfiguration.networkId);
}

mWifiManager.enableNetwork(configuration.networkId, true);

备注: TaskConfig.getSsid()为要连接的WiFi,不用把它也 disenableNetwork

小弟第一篇文章,如果觉得对您有帮助,请给个评论让我开心开心。。。

原文地址:http://blog.csdn.net/pxshl/article/details/76035294原因:enableNetwork会断开的当前连接的wifi,再连接指定wifi,而此时系统检测到wifi断开,也会自动连接wifi(默认为最后连接成功的那个wifi),因此可能导致调用enableNetwork却无法连接到指定wifi,或者连接成功后又被断开。解决方法: 修改wifi优先...
Android10 系统应用 wifi 连接 和静态ip代理设置 如果是Android10或者更新的Android版本 wifi 开发,本文对你或许有一定的帮助。 文章目录Android10 系统应用 wifi 连接 和静态ip代理设置Android wifi 连接 和静态ip代理设置 主要针对系统应用 wifi 连接 的主要代码: Wifi Configuration对象构建其他共勉:努力学习自己应该掌握的知识。 Android wifi 连接 和静态ip代理设置 主要针对系统应用 wifi 连接 的主要代码: Android 9 以及之前的
android系统启动:http://blog.csdn.net/yicao821/article/details/6893752 最近在分析Android WIIF框架,顺便就把Android系统启动过程做了个流程分析,在这分享下我的学习经验。部分有修正网络文章。欢迎拍砖! Android系统从Linux内核启动后分为4个基本步骤: (1) init进程启动 (2) Native服务启动
我的上篇博客研究了Android 10最新API如何 连接 WIFI 问题,但实际发现bug巨多,无奈只能换种思路。 然后发现一个就简单的 方法 ,我将编译版本和目标版本都改为如下: compileSdkVersion 28 targetSdkVersion 28 addNetwork和 enableNetwork 就都可以使用了。然后就可以继续使用原来的 方法 了。 当然这也是一种规避方案,实际在...
{@link android.os.Build.VERSION_CODES#Q} or above, this API will always return false. 解决 方法 : 无解 Applications are not allowed to (enable )disable networks created by other applications. 解决 方法 : disableNetwork和 enableNetwork 必须由创建该网络的应用调用才会返回true。如果这个网络是.
让我们从最开始的enable Wifi 开始分析 public boolean enableNetwork (int netId, boolean disableOthers) { final boolean pin = disableOthers && mTargetSdkVersion < Build.VERSION_CODES.LOLLIPOP;
Android Wifi 设置相关 Wifi Manager 获得 Wifi Manager的实例 private Wifi Manager m Wifi Manager = ( Wifi Manager)c.getSystemService(Context. WIFI _SERVICE); 检测Wiif的状态 Wifi 的状态值常量 WIFI _STATE_DISABLED = 1; //Wi-Fi is d
private Wifi Manager wifi Manager; private Wifi ScanReceiver wifi ScanReceiver; private List<ScanResult> wifi List; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wifi Manager = ( Wifi Manager) getApplicationContext().getSystemService(Context. WIFI _SERVICE); wifi ScanReceiver = new Wifi ScanReceiver(); registerReceiver( wifi ScanReceiver, new IntentFilter( Wifi Manager.SCAN_RESULTS_AVAILABLE_ACTION)); if( wifi Manager.is Wifi Enabled()){ wifi Manager.startScan(); Log.d(" WIFI ", "Started Scanning"); }else{ Toast.makeText(getApplicationContext(), " WiFi is disabled.. Please enable it", Toast.LENGTH_LONG).show(); wifi Manager.set Wifi Enabled(true); public void connectTo Wifi (String ssid, String password){ Wifi Configuration wifi Config = new Wifi Configuration(); wifi Config.SSID = String.format("\"%s\"", ssid); wifi Config.preSharedKey = String.format("\"%s\"", password); Wifi Manager wifi Manager = ( Wifi Manager) getApplicationContext().getSystemService(Context. WIFI _SERVICE); int networkId = wifi Manager.addNetwork( wifi Config); wifi Manager.disconnect(); wifi Manager. enableNetwork (networkId, true); wifi Manager.reconnect(); public void disconnectFrom Wifi (){ Wifi Manager wifi Manager = ( Wifi Manager) getApplicationContext().getSystemService(Context. WIFI _SERVICE); wifi Manager.disconnect(); private class Wifi ScanReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { wifi List = wifi Manager.getScanResults(); Log.d(" WIFI ", "Scan Result: " + wifi List.toString()); 在这个示例代码中,我们首先获取了 WIFI _SERVICE实例,然后注册了一个 Wifi ScanReceiver来接收 wifi 扫描的结果。 在onCreate() 方法 中,我们首先检查 wifi 是否已经启用。如果已经启用,则调用 wifi Manager.startScan() 方法 来启动扫描,并在Logcat中输出“Started Scanning”的消息。 如果 wifi 未启用,则我们会弹出一条Toast消息来提示用户启用 wifi ,然后调用 wifi Manager.set Wifi Enabled(true) 方法 来启用 wifi 。 接下来,我们定义了connectTo Wifi () 方法 和disconnectFrom Wifi () 方法 来分别 连接 断开 wifi 。 在connectTo Wifi () 方法 中,我们首先创建了一个 Wifi Configuration对象,并设置其SSID和preSharedKey属性为 连接 wifi 名称和密码。然后,我们调用 wifi Manager.addNetwork( wifi Config) 方法 来添加一个新的 wifi 连接 配置,并获取新添加的 连接 的networkId。接着,我们调用 wifi Manager.disconnect() 方法 断开 当前 连接 wifi ,并调用 wifi Manager. enableNetwork (networkId, true) 方法 来激活新添加的 连接 配置。最后,我们调用 wifi Manager.reconnect() 方法 连接 到新添加的 wifi 网络。 在disconnectFrom Wifi () 方法 中,我们只需要调用 wifi Manager.disconnect() 方法 即可 断开 当前 连接 wifi 。 最后,我们通过定义一个 Wifi ScanReceiver类来接收 wifi 扫描的结果,并在Logcat中输出扫描结果。当扫描结果更新时,系统会自动调用 Wifi ScanReceiver的onReceive() 方法