SystemSettingUtil 工具类
public class SystemSettingUtil {
private static final int LOG_DOMAIN = 218107648;
private static final String TAG = "SystemSettingUtil";
private static final HiLogLabel LOG_LABEL = new HiLogLabel(0, LOG_DOMAIN, TAG);
private static final String LOG_FORMAT = "%{public}s";
private static final String GET_GLOBAL = "GET_global";
private static final String GET_SECURE = "GET_secure";
private static final String GET_SYSTEM = "GET_system";
private static final String SETTING_VALUE = "value";
private static final String SYSTEM_SETTING = "dataability:///settings";
public static String getGlobal(String key) {return getSettingValueAsString(key, GET_GLOBAL);
}
public static String getSecure(String key) {return getSettingValueAsString(key, GET_SECURE);
}
public static String getSystem(String key) {return getSettingValueAsString(key, GET_SYSTEM);
}
public static String getSettingValueAsString(String key, String method) {if (TextTool.isNullOrEmpty(key)) {HiLog.warn(LOG_LABEL, LOG_FORMAT, "getSettingValueAsString -> key is null or empty");
return "";
} else if (TextTool.isNullOrEmpty(method)) {HiLog.warn(LOG_LABEL, LOG_FORMAT, "getSettingValueAsString -> method is null or empty");
return "";
} else {
try {return DataAbilityHelper.creator(ContextUtil.getHapGlobalContext()).call(Uri.parse(SYSTEM_SETTING),
method, key, null).getString(SETTING_VALUE, "");
} catch (IllegalArgumentException | IllegalStateException | DataAbilityRemoteException e) {HiLog.error(LOG_LABEL, LOG_FORMAT, "getSettingValueAsString -> Exception");
return "";
}
}
}
}
ContextUtil 工具类
public class ContextUtil {
private static Context sHapGlobalContext;
public static Context getHapGlobalContext() {return sHapGlobalContext;}
public static void setHapGlobalContext(Context context) {if (context != null) {sHapGlobalContext = context;}
}
}
应用办法:
在 MyApplication onInitialize 调用 ContextUtil.setHapGlobalContext(this) 设置全局 Context;
调用 SystemSettingUtil.getXXX。
注:key 常量可应用 hdc shell 执行以下命令获取。
settings list system
settings list secure
settings list global
代码里怎么辨别用户是否调整了零碎字体大小设置里【显示大小】?
https://developer.huawei.com/…
(出处: 论坛首页)
解决方案:
private static final String INIT_DPI = "init_dpi";
private static final String DISPLAY_DENSITY_FORCED = "display_density_forced";
SystemSettingUtil.getSecure(INIT_DPI);
SystemSettingUtil.getSecure(DISPLAY_DENSITY_FORCED);
display_density_forced 为空即显示大小为默认,display_density_forced<init_dpi 显示大小为小,display_density_forced>init_dpi 显示大小为大,未修改过显示大小时两项都为空。
原文链接:https://developer.huawei.com/…
原作者:π