Android 8.1 自定义热点的时候设置了热点maxLength="32",但是在希伯来语等状态下还是发现在没到32个字符之前就无法把热点设置成功了

初步认为应该是与热点名称的字节数有关。

然后开始查看源码。

/Settings/res/xml/tether_prefs.xml

 

中的

    <Preference
        android:key="hotspot_settings"
        android:title="@string/hotspot_preference_title"
        android:fragment="com.sprd.settings.wifi.HotspotSettings" />

发现了热点设置界面在HotspotSettings 里面,

在HotspotSettings中点击设置wifi热点,进入/Settings/src/com/android/settings/wifi/WifiApDialog.java

弹框

里面的热点名称和密码设置了text改变的监听,收到监听之后会改变保持按钮的Enable状态。

        mSsid.addTextChangedListener(this);
        mPassword.addTextChangedListener(this);
    public void afterTextChanged(Editable editable) {
        validate();
    }

    private void validate() {
        String mSsidString = mSsid.getText().toString();
        if ((mSsid != null && mSsid.length() == 0)
                || ((mSecurityTypeIndex == WPA2_INDEX || mSecurityTypeIndex == WPA_INDEX) && mPassword.length() < 8)
                || (mSsid != null &&
                Charset.forName("UTF-8").encode(mSsidString).limit() > 32)) {
            getButton(BUTTON_SUBMIT).setEnabled(false);
        } else {
            getButton(BUTTON_SUBMIT).setEnabled(true);
        }
    }

 

posted @ 2019-08-09 18:01  万物为铜  阅读(521)  评论(0编辑  收藏  举报