반응형
App을 개발하다 보면 android 시스템의 SystemProperties에 있는 값을 사용해야 할 때가 있습니다.(System.getProperty나 System.setProperty 랑은 다릅니다. System.get/setProperty들은 공개되어 일반 어플리케이션에서도 사용이 가능하고 지금 설명하려는 SystemProperties는 android.os.SystemProperties과는 다릅니다.)
사용방법은
1. 플랫폼 빌드 시 같이 빌드되어지는 시스템 app일 경우 android.os.SystemProperties를 사용할 수 있습니다.
2. 1번과 유사합니다. 플랫폼 빌드시 사용되는 키를 가지고 app을 signing 하여 app을 빌드하면 사용할 수 있습니다.
3. 하지만 제조사가 아닐경우 1번 2번의 방법은 어렵기 떄문에 reflection 방식을 사용합니다.
public static void set(String key, String val) throws IllegalArgumentException {
try {
Class<?> SystemProperties = Class.forName("android.os.SystemProperties");
//Parameters Types
@SuppressWarnings("rawtypes")
Class[] paramTypes = { String.class, String.class };
Method set = SystemProperties.getMethod("set", paramTypes);
//Parameters
Object[] params = { key, val };
set.invoke(SystemProperties, params);
} catch (IllegalArgumentException e) {
e.printStackTrace();
Log.e(TAG, "IllegalArgumentException e: "+e.toString());
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "IllegalArgumentException e: "+e.toString());
}
}
public static String get(String key) {
String ret = "";
try {
Class<?> SystemProperties = Class.forName("android.os.SystemProperties");
//Parameters Types
@SuppressWarnings("rawtypes")
Class[] paramTypes = { String.class };
Method get = SystemProperties.getMethod("get", paramTypes);
//Parameters
Object[] params = { key };
ret = (String) get.invoke(SystemProperties, params);
} catch (IllegalArgumentException e) {
ret = "";
e.printStackTrace();
Log.e(TAG, "IllegalArgumentException e: "+e.toString());
} catch (Exception e) {
ret = "";
e.printStackTrace();
Log.e(TAG, "Exception e: "+e.toString());
}
return ret;
}
get에서 만약 값이 없을 경우에는 null이 아니라 공백은 반환합니다.
반응형
'2023년 이전 > Android' 카테고리의 다른 글
MpAndroidChart 사용 후기 (1) | 2020.05.30 |
---|---|
java.lang.IllegalArgumentException: pointerIndex out of range (0) | 2020.05.30 |
Android 에서 https 사용하여 접속하기 (0) | 2019.12.03 |
Android 백그라운드 - Thread, Handler ,Looper의 차이 (0) | 2019.11.12 |
Android - WorkManager (6) - 취소, 반복작업, 고유 작업 (0) | 2019.10.17 |