Android 9.0以上 连接wifi失败 解决方案

这篇具有很好参考价值的文章主要介绍了Android 9.0以上 连接wifi失败 解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android9开始,WIFI那块的API发生了改变:
addNetwork(WifiConfiguration config)
此方法在API级别Q中已弃用)
见addNetworkSuggestions(java.util.List), removeNetworkSuggestions(java.util.List)新的API添加Wi-Fi网络进行审议时,自动连接到无线网络。 兼容性注意:对于目标Build.VERSION_CODES.Q或更高的应用程序 ,此API将始终返回-1。

废话不多说直接上代码:
首先需要在清单文件中添加权限:

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

其次需要再activity动态申请权限,代码如下:
public class MainActivity extends AppCompatActivity {
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    verifyStoragePermissions(MainActivity.this);

    findViewById(R.id.but1).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            test("ssid","密码");
        }
    });
    findViewById(R.id.but2).setOnClickListener(new View.OnClickListener() {
        private WifiUtils instance;
        @Override
        public void onClick(View v) {
            test("ssid-WIFI","密码");
        }
    });

}
public void verifyStoragePermissions(Activity activity) {
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, 1);

}

public void test(String name,String wpd)
{
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
    {
        NetworkSpecifier specifier =
                new WifiNetworkSpecifier.Builder()
                        .setSsidPattern(new PatternMatcher(name, PatternMatcher.PATTERN_PREFIX))
                        .setWpa2Passphrase(wpd)
                        .build();

        NetworkRequest request =
                new NetworkRequest.Builder()
                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                        .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                        .setNetworkSpecifier(specifier)
                        .build();

        ConnectivityManager connectivityManager = (ConnectivityManager)
                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);
    }
}

}

完美解决Android9.0以上wifi连接失败的问题~文章来源地址https://www.toymoban.com/news/detail-655083.html

到了这里,关于Android 9.0以上 连接wifi失败 解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vscode远程连接失败解决方案

    1、在vscode SSH扩展设置中配置config文件的绝对位置, 该文件一般位于.ssh文件夹中( C:Users你的用户名.sshconfig  ) 2、删除known_hosts文件,该文件一般和config配置文件一样在.ssh文件夹中( C:Users你的用户名.sshknown_hosts  )  3、若删除了该文件之后仍然连接失败,尝试在命

    2024年02月09日
    浏览(60)
  • Linux虚拟机连接失败解决方案

    下载虚拟机软件为: VMware Workstation 16 Player Xshell 7 在安装虚拟机时,可能会出现连接不上的问题。我们可以尝试从以下方面进行解决。 一、网络连接查看 在网络和Internet设置中点击更改适配器选项,查看是否有VMvare的两个虚拟网卡,没有的话我们的主机肯定是无法连接到虚拟

    2024年02月07日
    浏览(56)
  • 浏览器连接grafana失败解决方案

    浏览器连接grafana建立连接失败,如下: If you\\\'re seeing this Grafana has failed to load its application files 1. This could be caused by your reverse proxy settings. 返向代理会引起这个问题。 2. If you host grafana under subpath make sure your grafana.ini root_url setting includes subpath. If not using a reverse proxy make sure to se

    2024年02月07日
    浏览(103)
  • 报错处理:MySQL报错解决:连接失败原因与解决方案

    大家好,今天我来分享一下在Linux上遇到的一个MySQL连接失败的报错以及解决方法。如果你在尝试连接MySQL数据库时遇到以下报错信息:“Can’t connect to MySQL server on ‘localhost’ (111)”,那么请接着往下看,我会帮你找到可能的原因和解决方案。 一、问题描述 这个报错信息通常

    2024年02月04日
    浏览(47)
  • vscode远程连接开发机失败/解决方案大合集

    channel 1: open failed: administratively prohibited: open failed channel 2: open failed: administratively prohibited: open failed channel 3: open failed: administratively prohibited: open failed channel 4: open failed: administratively prohibited: open failed channel 5: open failed: administratively prohibited: open failed channel 1018: open failed: administ

    2024年02月05日
    浏览(42)
  • Xshell 连接虚拟机Ubuntu系统失败解决方案

    背景知识: Xshell 是一个强大的安全终端模拟软件,可以进行远程登录,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。 xshell通过ip连接,所以需要知道虚拟机的IP地址 使用XShell的主要目的是在Windows环境下登录Linux终端,以后,我们也可以通过这种方式把本机与远端服

    2024年02月10日
    浏览(52)
  • github连接超时、提交(push)代码失败解决方案

    如果提示: Hi defnngj You’ve successfully authenticated, but GitHub does not provide shell access . 说明你连接成功了 打开 https://github.com/ ,在设置中添加密钥 测试成功就可以push code了.

    2024年02月12日
    浏览(68)
  • android studio gradle 下载失败解决方案

    报错如上,介绍个绝对成功的办法,看了很多文章居然都没人提到,这里的意思就是这个地址访问失败,所以有两种解决方案,一种是换代理,一种是直接更换下载地址。这里介绍第二种方法,基本都能成功,先去找到下载页面,题主写时可用界面为Gradle Distributions 然后找到

    2024年02月21日
    浏览(54)
  • idea连接数据库失败的几种解决方案

    1、先进入名字为mysql的数据库 2、找到user表 3、修改root的host为% [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWeP9cRh-1677664942027)(https://img2023.cnblogs.com/blog/3103012/202302/3103012-20230227175245772-1975389509.jpg)] 方法一和方法二,都是开放root的权限为所有人可

    2024年02月04日
    浏览(51)
  • 关于Android平板横竖屏切换失败的解决方案

    在安卓系统中,实现横竖屏切换可以通过修改AndroidManifest.xml文件和编写代码来实现。以下是详细的操作步骤: 1.修改AndroidManifest.xml文件: 在你的Android项目的AndroidManifest.xml文件中,找到你想要横竖屏切换的Activity。在activity标签中,添加 android:screenOrientation 属性,并设置为

    2023年04月22日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包