如何在 android 叠加层中设置默认设置(强制门户模式)
How to set default settings in android overlay (captive portal mode)
我正在做一个 aosp 项目。对于这个项目,我想在 aosp 构建中默认关闭强制门户检查。我认为并测试了我可以通过以下方式设置设置:
settings put global captive_portal_detection_enabled 0
另见 https://www.kuketz-blog.de/android-captive-portal-check-aenderung/
所以通常我会通过使用设备中资源的覆盖机制来设置它,例如在overlay/frameworks/base/core/packages/settingsprovider/res/value:
<resources>
<!-- disable lockscreen by default to avoid showing of user switcher -->
<bool name="def_lockscreen_disabled">true</bool>
</resources>
我想,强制门户的默认值在 aosp ConnectivityService 中定义为
private int getCaptivePortalMode() {
return Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.CAPTIVE_PORTAL_MODE,
Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT);
}
我尝试了几种方法来覆盖它,但是在前面加上 config_ 或 _def 不起作用,通过
添加条目
<resources>
<!-- disable captive portal checking -->
<add-resource type="integer" name="config_captive_portal_mode"/>
<integer name="config_captive_portal_mode">0</integer>
</resources>
现在我只剩下两个选项了,但我都不喜欢其中任何一个:
a) 补丁 aosp -> 更新有问题
b) 运行 第一次启动时的脚本 -> 丑陋
我是不是漏掉了什么?
Alains 的回答正是我要找的。
You'd need to add some logic to check whether the device is booting
for the first time or not, through a file in userdata for example.
要为 CAPTIVE_PORTAL_MODE 添加默认值,请在
中进行以下更改
framework/base/packages/SettingsProvider/src
下的数据库助手
loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_MODE,
R.integer.def_captive_portal_detection_enabled);
Default.xml 在 framework/base/packages/SettingsProvider/res
下
<integer name="def_captive_portal_detection_enabled" translatable="false">0</integer>
我正在做一个 aosp 项目。对于这个项目,我想在 aosp 构建中默认关闭强制门户检查。我认为并测试了我可以通过以下方式设置设置:
settings put global captive_portal_detection_enabled 0
另见 https://www.kuketz-blog.de/android-captive-portal-check-aenderung/
所以通常我会通过使用设备中资源的覆盖机制来设置它,例如在overlay/frameworks/base/core/packages/settingsprovider/res/value:
<resources>
<!-- disable lockscreen by default to avoid showing of user switcher -->
<bool name="def_lockscreen_disabled">true</bool>
</resources>
我想,强制门户的默认值在 aosp ConnectivityService 中定义为
private int getCaptivePortalMode() {
return Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.CAPTIVE_PORTAL_MODE,
Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT);
}
我尝试了几种方法来覆盖它,但是在前面加上 config_ 或 _def 不起作用,通过
添加条目<resources>
<!-- disable captive portal checking -->
<add-resource type="integer" name="config_captive_portal_mode"/>
<integer name="config_captive_portal_mode">0</integer>
</resources>
现在我只剩下两个选项了,但我都不喜欢其中任何一个: a) 补丁 aosp -> 更新有问题 b) 运行 第一次启动时的脚本 -> 丑陋
我是不是漏掉了什么?
Alains 的回答正是我要找的。
You'd need to add some logic to check whether the device is booting for the first time or not, through a file in userdata for example.
要为 CAPTIVE_PORTAL_MODE 添加默认值,请在
中进行以下更改framework/base/packages/SettingsProvider/src
下的数据库助手loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_MODE,
R.integer.def_captive_portal_detection_enabled);
Default.xml 在 framework/base/packages/SettingsProvider/res
下<integer name="def_captive_portal_detection_enabled" translatable="false">0</integer>