Android11 设置默认热点名称和热点密码、密码长度

70 篇文章 5 订阅
42 篇文章 6 订阅

Android11 设置默认热点名称和热点密码、密码长度

Android 中需要修改到系统默认热点名称或者密码可以参考本文。

一、设置默认热点配置方法 getDefaultApConfiguration

源码位置:
frameworks\opt\net\wifi\service\java\com\android\server\wifi\WifiApConfigStore.java

默认热点名称也是随机生成的,如下代码:


    private SoftApConfiguration getDefaultApConfiguration() {
        SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();
        configBuilder.setBand(SoftApConfiguration.BAND_2GHZ); //默认2.4G
        //名称:
        configBuilder.setSsid(mContext.getResources().getString(
                R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid());
        if (ApConfigUtil.isWpa3SaeSupported(mContext)) {
            configBuilder.setPassphrase(generatePassword(),
                    SoftApConfiguration.SECURITY_TYPE_WPA3_SAE_TRANSITION);
        } else {
            configBuilder.setPassphrase(generatePassword(),
                    SoftApConfiguration.SECURITY_TYPE_WPA2_PSK); //默认热点加密都是WPA2_PSK类型
        }
        return configBuilder.build();
    }

ApConfigUtil.isWpa3SaeSupported 方法是判断 config_wifi_softap_sae_supported 属性的值。

//WPA3_SAE 加密类型比较少用,系统默认为false
//默认热点加密都是WPA2_PSK类型
frameworks\opt\net\wifi\service\res\values\config.xml

//默认热点密码类型选择
    <!-- Wifi driver supports WPA3 Simultaneous Authentication of Equals (WPA3-SAE) for softap -->
    <bool translatable="false" name="config_wifi_softap_sae_supported">false</bool>

//默认热点名称前缀
    <!-- Do not translate. Default access point SSID used for tethering -->
    <string name="wifi_tether_configure_ssid_default" translatable="false">AndroidAP</string>

二、热点名称构成:

    private static final int RAND_SSID_INT_MIN = 1000;
    private static final int RAND_SSID_INT_MAX = 9999;

    //热点后缀
    private static int getRandomIntForDefaultSsid() {
        Random random = new Random();
        return random.nextInt((RAND_SSID_INT_MAX - RAND_SSID_INT_MIN) + 1) + RAND_SSID_INT_MIN;
    }

从上面代码看热点名称后缀是:1000 + (0-8999)的一个数值,即1000-9999的一个数值。

三、获取默认热点密码方法 generatePassword


    private static String generatePassword() {
        // Characters that will be used for password generation. Some characters commonly known to
        // be confusing like 0 and O excluded from this list.
        final String allowed = "23456789abcdefghijkmnpqrstuvwxyz";
        final int passLength = 15;

        StringBuilder sb = new StringBuilder(passLength);
        SecureRandom random = new SecureRandom();
        for (int i = 0; i < passLength; i++) {
            sb.append(allowed.charAt(random.nextInt(allowed.length())));
        }
        return sb.toString();
    }


首次打开热点,或者未设置热点密码的情况打开热点的情况,会从上面的方法中获取密码字符串。

从上面代码可以看出,默认密码是15位长度,并且是从数字和普通字母中,随机获取组成的。

四、Android11 应用中设置热点信息代码

    //设置无密码,10信道,2.4G的热点信号
    public void setHotspot2_4(View view) {
        private WifiManager mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        //使用Build形式配置对象
        SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();
        configBuilder.setSsid(mHotspotName);
        configBuilder.setChannel(10, SoftApConfiguration.BAND_2GHZ);
        //30 分钟:30*60*1000 = 1800000 或者永久 2147483647
        configBuilder.setShutdownTimeoutMillis(2147483647);
        mWifiManager.setSoftApConfiguration(configBuilder.build());
    }


setSoftApConfiguration方法是Android10 新增的方法,之前的方法:
WifiManager.setWifiApConfiguration(mConfig)已经失效!

四、Android11 应用中设置热点开启代码


       ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        
        mConnectivityManager.startTethering(ConnectivityManager.TETHERING_WIFI, true /* showProvisioningUi */,
                mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));

总结:


热点默认名称和密码都是在 WifiApConfigStore 类中定义可以自定修改

默认热点名称是 AndroidAP + 随机生成的1000-9999的数字
默认热点密码是15位随机生成的数字/字母普通字符串

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值