mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-06 02:35:19 +08:00
Added: Add SettingsProviderUtils
to get Setting
global, secure and system namespace values
This commit is contained in:
@@ -0,0 +1,99 @@
|
|||||||
|
package com.termux.shared.android;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.termux.shared.logger.Logger;
|
||||||
|
|
||||||
|
public class SettingsProviderUtils {
|
||||||
|
|
||||||
|
private static final String LOG_TAG = "SettingsProviderUtils";
|
||||||
|
|
||||||
|
/** The namespaces for {@link Settings} provider. */
|
||||||
|
public enum SettingNamespace {
|
||||||
|
/** The {@link Settings.Global} namespace */
|
||||||
|
GLOBAL,
|
||||||
|
|
||||||
|
/** The {@link Settings.Secure} namespace */
|
||||||
|
SECURE,
|
||||||
|
|
||||||
|
/** The {@link Settings.System} namespace */
|
||||||
|
SYSTEM
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The type of values for {@link Settings} provider. */
|
||||||
|
public enum SettingType {
|
||||||
|
FLOAT,
|
||||||
|
INT,
|
||||||
|
LONG,
|
||||||
|
STRING,
|
||||||
|
URI
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get settings key value from {@link SettingNamespace} namespace and of {@link SettingType} type.
|
||||||
|
*
|
||||||
|
* @param context The {@link Context} for operations.
|
||||||
|
* @param namespace The {@link SettingNamespace} in which to get key value from.
|
||||||
|
* @param type The {@link SettingType} for the key.
|
||||||
|
* @param key The {@link String} name for key.
|
||||||
|
* @param def The {@link Object} default value for key.
|
||||||
|
* @return Returns the key value. This will be {@code null} if an exception is raised.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public static Object getSettingsValue(@NonNull Context context, @NonNull SettingNamespace namespace,
|
||||||
|
@NonNull SettingType type, @NonNull String key, @Nullable Object def) {
|
||||||
|
try {
|
||||||
|
switch (namespace) {
|
||||||
|
case GLOBAL:
|
||||||
|
switch (type) {
|
||||||
|
case FLOAT:
|
||||||
|
return Settings.Global.getFloat(context.getContentResolver(), key);
|
||||||
|
case INT:
|
||||||
|
return Settings.Global.getInt(context.getContentResolver(), key);
|
||||||
|
case LONG:
|
||||||
|
return Settings.Global.getLong(context.getContentResolver(), key);
|
||||||
|
case STRING:
|
||||||
|
return Settings.Global.getString(context.getContentResolver(), key);
|
||||||
|
case URI:
|
||||||
|
return Settings.Global.getUriFor(key);
|
||||||
|
}
|
||||||
|
case SECURE:
|
||||||
|
switch (type) {
|
||||||
|
case FLOAT:
|
||||||
|
return Settings.Secure.getFloat(context.getContentResolver(), key);
|
||||||
|
case INT:
|
||||||
|
return Settings.Secure.getInt(context.getContentResolver(), key);
|
||||||
|
case LONG:
|
||||||
|
return Settings.Secure.getLong(context.getContentResolver(), key);
|
||||||
|
case STRING:
|
||||||
|
return Settings.Secure.getString(context.getContentResolver(), key);
|
||||||
|
case URI:
|
||||||
|
return Settings.Secure.getUriFor(key);
|
||||||
|
}
|
||||||
|
case SYSTEM:
|
||||||
|
switch (type) {
|
||||||
|
case FLOAT:
|
||||||
|
return Settings.System.getFloat(context.getContentResolver(), key);
|
||||||
|
case INT:
|
||||||
|
return Settings.System.getInt(context.getContentResolver(), key);
|
||||||
|
case LONG:
|
||||||
|
return Settings.System.getLong(context.getContentResolver(), key);
|
||||||
|
case STRING:
|
||||||
|
return Settings.System.getString(context.getContentResolver(), key);
|
||||||
|
case URI:
|
||||||
|
return Settings.System.getUriFor(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Settings.SettingNotFoundException e) {
|
||||||
|
// Ignore
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.logError(LOG_TAG, "Failed to get \"" + key + "\" key value from settings \"" + namespace.name() + "\" namespace of type \"" + type.name() + "\"");
|
||||||
|
}
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user