mirror of https://github.com/termux/termux-app
Added: Add `SettingsProviderUtils` to get `Setting` global, secure and system namespace values
This commit is contained in:
parent
03e1d14e1e
commit
42eee49d30
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue