Systemproperties属性,对整个系统全局共享,通过可以通过get来读取和set进行设置
键值对形式的设置
一般的文件夹里面
System.prop
System.prop
Default.prop
Local.prop
如果没有使用系统签名的话 需要使用到反射才能够获取到这些属性
这些属性是键值对的形式
public long getLong(final String key, final long def) {
try {
if (getLongMethod == null) {
getLongMethod = Class.forName("android.os.SystemProperties").getMethod("getLong", String.class, long.class);
}
return ((Long) getLongMethod.invoke(null, key, def)).longValue();
} catch (Exception e) {
return def;
}
}
public String getStringMethod(final String key, final String def) {
try {
if (getStringMethod == null) {
getStringMethod = Class.forName("android.os.SystemProperties").getMethod("get", String.class, String.class);
}
return ((String) getStringMethod.invoke(null, key, def)).toString();
} catch (Exception e) {
return def;
}
}
public int getIntMethod(final String key, final int def) {
try {
if (getIntMethod == null) {
getIntMethod = Class.forName("android.os.SystemProperties")
.getMethod("getInt", String.class, int.class);
}
return ((Integer) getIntMethod.invoke(null, key, def)).intValue();
} catch (Exception e) {
return def;
}
}
public boolean getBooleanMethod(final String key, final boolean def) {
try {
if (getBooleanMethod == null) {
getBooleanMethod = Class.forName("android.os.SystemProperties").getMethod("getBoolean", String.class, boolean.class);
}
return ((Boolean) getBooleanMethod.invoke(null, key, def)).booleanValue();
} catch (Exception e) {
return def;
}
}
//通过反射设置系统属性
public static void setProperty(String key, String value) {
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method set = c.getMethod("set", String.class, String.class);
set.invoke(c, key, value );
} catch (Exception e) {
e.printStackTrace();
}
}
如果要是使用的Systemproperties的属性,前提是应用需要有权限,即要有系统签名。
程序要调用系统的库,权限问题,需要使用apk进行系统签名
简单常用的方法就是在apk AndroidManifest.xml中的manifes节点中加入。。。