android - Android P - 在运行时检查系统主题(默认、浅色或深色)
解决方案
编辑/注意:好的,我做了更多的研究,据我所知,这只是 OnePlus 6(OxygenOs)上的全局设置,android P 毕竟没有获得暗模式吗?
所以我想出了一个 hacky 方法来获得这个设置:
系统设置存储在:content://settings/system
在我的设备(OxygenOs 6.xx)上,主题的值存储在oem_black_mode
.
要获取此结果,我们可以通过 adb 执行以下命令:
adb shell content query --uri content://settings/system/oem_black_mode
这不需要手机root。
我为内容解析器创建了一个简单的包装器(随意使用/修改):
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
public class SystemSettingsResolver {
public static final String OEM_BLACK_MODE = "oem_black_mode";
public static final String OEM_BLACK_MODE_ACCENT_COLOR = "oem_black_mode_accent_color";
public static final String OEM_BLACK_MODE_ACCENT_COLOR_INDEX = "oem_black_mode_accent_color_index";
private Context context;
public SystemSettingsResolver(Context context) {
this.context = context;
}
public int getInt(String setting) {
ContentResolver resolver = context.getContentResolver();
try {
return Settings.System.getInt(resolver, setting);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
return -1;
}
public String getString(String setting) {
ContentResolver resolver = context.getContentResolver();
return Settings.System.getString(resolver, setting);
}
// extend with getFloat etc whatever is required for your app.
}
这里是如何使用这个包装器:
public int systemTheme() {
/**
* In my testing:
* 0 = light
* 1 = dark
* 2 = default
*/
SystemSettingsResolver resolver = SystemSettingsResolver(this); //pass context
return resolver.getInt(SystemSettingsResolver.OEM_BLACK_MODE)
}
推荐阅读
- java - 更新 Intellij 后连接 MongoDB 时出错:java.lang.NoSuchMethodError:org.bson.io.BasicOutputBuffer。
(一)五 - c# - ASP Core 3.1 多个/备用数据库上下文
- raspberry-pi - How to turn off USB Power completely on RPi B3+?
- c++ - C++, Is it possible / how would you define a class constructor that calls a function in the .h & .cpp source files
- portability - Portable version of KDE's Dolphin file manager
- html - Bootstrap grid custom layout
- vba - VBA word macro to select indexed table cells
- python - How to crop an image by using python-pptx after it inserted into slide?
- java - 如何从 Akka 中提取实时 FileIO 状态?
- sql - 在 SQL 数据中查找前面的空格