blob: 188669e2fbf2f524a386534095627fb252a5be23 [file] [log] [blame]
//! System properties on Android
/// Gets the value of a system property on Android
#[cfg(target_os = "android")]
pub fn get(name: &str) -> Option<String> {
rustutils::system_properties::read(name).ok()
}
/// Fake getter for non-Android, which will always return nothing.
/// Only added so it compiles & you can conditionally using cfg!
#[cfg(not(target_os = "android"))]
pub fn get(_name: &str) -> Option<String> {
None
}
/// Gets the specified property as a u32
pub fn get_u32(name: &str) -> Option<u32> {
if let Some(value) = get(name) {
value.parse().ok()
} else {
None
}
}
/// Gets the specified property as a bool (logic follows libcutils/properties.cpp)
pub fn get_bool(name: &str) -> Option<bool> {
if let Some(value) = get(name) {
match value.as_str() {
"0" | "n" | "no" | "false" | "off" => Some(false),
"1" | "y" | "yes" | "true" | "on" => Some(true),
_ => None,
}
} else {
None
}
}
/// Gets whether the current build is debuggable
pub fn get_debuggable() -> bool {
get_bool("ro.debuggable").unwrap_or(false)
}