使用Data Ability讀取系統設置項


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/consumer/cn/forum/topic/0202539565144520016?fid=23

(出處: 論壇首頁)

解決方案:

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/consumer/cn/forum/topic/0202553488903740688?fid=0101303901040230869
原作者:π


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM