Android10自动连接WiFi问题的解决

 更新时间:2020年03月30日 16:38:15   作者:中二大叔撸代码  
这篇文章主要介绍了Android10自动连接WiFi问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

说明:

本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化。

问题描述:

最近在做项目的时候,发现以前的项目有扫描二维码自动连接WiFi的功能,设备改了生成二维码的方式,然后发现手机无法自动连接WiFi了。

问题原因:

经过代码调试发现:(我都是真机调试)

wifiManager.addNetwork(WifiConfiguration);

在添加WiFi的时候,这行代码始终返回-1,换用同事手机竟然神奇的可以连接,然后一脸蒙蔽,裂开了,不怕有问题,就怕有的有问题,有的没问题。

问题解决:

区别:我测试手机 小米10 android Q(andorid 10)的系统,同事手机荣耀 android P的系统,大胆猜测是不是android 10又搞了什么奇怪的东西

根因:皇天不负有心人,上代码:

/**
   * Add a new network description to the set of configured networks.
   * The {@code networkId} field of the supplied configuration object
   * is ignored.
   * <p/>
   * The new network will be marked DISABLED by default. To enable it,
   * called {@link #enableNetwork}.
   *
   * @param config the set of variables that describe the configuration,
   *      contained in a {@link WifiConfiguration} object.
   *      If the {@link WifiConfiguration} has an Http Proxy set
   *      the calling app must be System, or be provisioned as the Profile or Device Owner.
   * @return the ID of the newly created network description. This is used in
   *     other operations to specified the network to be acted upon.
   *     Returns {@code -1} on failure.
   *
   * @deprecated
   * a) See {@link WifiNetworkSpecifier.Builder#build()} for new
   * mechanism to trigger connection to a Wi-Fi network.
   * b) See {@link #addNetworkSuggestions(List)},
   * {@link #removeNetworkSuggestions(List)} for new API to add Wi-Fi networks for consideration
   * when auto-connecting to wifi.
   * <b>Compatibility Note:</b> For applications targeting
   * {@link android.os.Build.VERSION_CODES#Q} or above, this API will always return {@code -1}.
   */
  @Deprecated
  public int addNetwork(WifiConfiguration config) {
    if (config == null) {
      return -1;
    }
    config.networkId = -1;
    return addOrUpdateNetwork(config);
  }

这是WifiManager.class中addNetwork方法的描述,注意注释中最后一行

{@link android.os.Build.VERSION_CODES#Q} or above, this API will always return {@code -1}.

android Q或者更高的版本,这个方法始终返回-1,至此问题原因分析完毕,接下来开始解决:官网一顿操作:Android 10 的新方案如下连接:https://developer.android.google.cn/guide/topics/connectivity/wifi-bootstrap

 代码如下:

public void test()
  {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
    {
      NetworkSpecifier specifier =
          new WifiNetworkSpecifier.Builder()
              .setSsidPattern(new PatternMatcher("此处WiFi名称", PatternMatcher.PATTERN_PREFIX))
              .setWpa2Passphrase("此处WiFi密码")
              .build();
 
      NetworkRequest request =
          new NetworkRequest.Builder()
              .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
              .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
              .setNetworkSpecifier(specifier)
              .build();
 
      ConnectivityManager connectivityManager = (ConnectivityManager)
          context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
      ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
          // do success processing here..
        }
 
        @Override
        public void onUnavailable() {
          // do failure processing here..
        }
      };
      connectivityManager.requestNetwork(request, networkCallback);
      // Release the request when done.
      // connectivityManager.unregisterNetworkCallback(networkCallback);
    }
  }

注:我用的是WPA的 加密模式,亲测可用。至此完结,撒花。

到此这篇关于Android10自动连接WiFi问题的解决的文章就介绍到这了,更多相关Android10自动连接WiFi内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android Build Variants 为项目设置变种版本的方法

    Android Build Variants 为项目设置变种版本的方法

    下面小编就为大家分享一篇Android Build Variants 为项目设置变种版本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android开发技巧之像QQ一样输入文字和表情图像

    Android开发技巧之像QQ一样输入文字和表情图像

    QQ聊天输入框,在输入框中可以同时输入文字和表情图像。实际上,这种效果在Android SDK中只需要几行代码就可以实现,本文将会介绍如何实现像QQ一样输入表情图像
    2013-01-01
  • Android编程实现类似天气预报图文字幕垂直滚动效果的方法

    Android编程实现类似天气预报图文字幕垂直滚动效果的方法

    这篇文章主要介绍了Android编程实现类似天气预报图文字幕垂直滚动效果的方法,涉及Android基于布局及事件响应实现图文滚动效果的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • 基于Android实现一个常用的布局吸顶效果

    基于Android实现一个常用的布局吸顶效果

    这篇文章给大家介绍一个布局吸顶效果,一般出现在内容较长页面还嵌套着分类页面的情况,比如电商的详情页嵌套分类,在页面滑动到tab的时候我们希望tab还能保留在页面顶部而不被顶上去,文中有详细的代码示例,需要的朋友可以参考下
    2023-09-09
  • Android Gridview布局出现滚动条或组件冲突解决方法

    Android Gridview布局出现滚动条或组件冲突解决方法

    这篇文章主要介绍了Android Gridview布局出现滚动条或组件冲突解决方法,GridView是一个在二维可滚动的网格中展示内容的控件。网格中的内容通过使用adapter自动插入到布局中
    2022-07-07
  • Android协程代替Handler使用示例详解

    Android协程代替Handler使用示例详解

    这篇文章主要为大家介绍了Android 协程代替Handler使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Android九宫格手势密码代码设计

    Android九宫格手势密码代码设计

    这篇文章主要为大家详细介绍了Android九宫格手势密码的代码设计思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android自定义日历滑动控件

    Android自定义日历滑动控件

    这篇文章主要为大家详细介绍了Android自定义日历滑动控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android使用SQLite数据库的示例

    Android使用SQLite数据库的示例

    本篇文章主要介绍了Android使用SQLite数据库的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Android实现多点触控功能

    Android实现多点触控功能

    这篇文章主要为大家详细介绍了Android实现多点触控功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论