2014-12-22 3 views
2

SystemProperties.set이 작동하려면 어떤 리눅스 권한이 필요합니까? (안드로이드)SystemProperties.set이 작동하려면 어떤 리눅스 권한이 필요합니까? (안드로이드)

나는 안드로이드 장치에서 system/app에서 실행되는 앱을 쓰고 있습니다.

이 실행

안드로이드

같은 :의 sharedUserId = "android.uid.systemui"Android.mk에서

LOCAL_CERTIFICATE = 플랫폼

그러나 나는 내가 창조 할 수 없다는 것을 알고있다. r 속성을 설정합니다. 콘솔에서 getprop, setprop을 할 수 있습니다. 그러나 내 프로그램에서 만들 수 없습니다.

LS -l/데이터/속성/

가 존재하지 않는 나타낸다.

 Slog.d(TAG, "key is not set, will set APPLE"); 
     SystemProperties.set(keyName, favorite); 
     if(SystemProperties.get(keyName).equals(favorite)) { 
      Slog.d(TAG, keyName + " = " + SystemProperties.get(keyName)); 
     } else { 
      Slog.e(TAG, "setting SystemProperties failed. value written = " + SystemProperties.get(keyName)); 
     } 

로그 캣 :

Line 1365: D/MyTag(2593): keyName: persist.fruit.user.favorite 
Line 1373: D/MyTag(2593): keyName has value [] 
Line 1377: D/MyTag(2593): key is not set, will set APPLE 
Line 1381: E/MyTag(2593): setting SystemProperties failed. value written = 

분명 아마도 그것은 불충분 한 권한의 문제입니다 - 어떤 것들하지만를?

답변

5

나는 fadden의 대답을 받아 들였지만 더 많은 탐사를 거친 후에 정답에 도달하는 데 매우 도움이되었지만 부정확하다는 것을 알았습니다.

1 단계 : 속성의 이름은 배열의 같은 키 문자열로 시작해야 https://android.googlesource.com/platform/system/core/+/kitkat-release/init/property_service.c

{ "persist.sys.",  AID_SYSTEM, 0 }, 

의 배열에서 보세요. 당신의 안드로이드 매니페스트 파일에 , 위의 배열에 언급 된 사용자 ID로 실행 : 따라서 나는 "persist.sys.fruit.user.favorite"

2 단계 내 속성 이름을 변경했다.

<manifest android:sharedUserId="android.uid.system" > 
1

다릅니다. 4.4 "KitKat"릴리스에서 목록은 init의 property_service.c에 포함되었습니다 (65 행 주변을보십시오). 예를 들어 debug.* 속성은 "시스템"또는 "셸"사용자가 업데이트 할 수 있습니다. (숫자 값에 대한 시스템 인식 사용자 ID의 매핑은 android_filesystem_config.h에서 찾을 수 있습니다.) 추가 제한이나 특별한 행동이 같은 ro.*, persist.*ctl.*

일부 속성을.

Android 5.0 "Lollipop"에서는 목록이 이동했지만 동작은 동일합니다.

adb shell ps을 사용하면 앱이 실행중인 사용자 ID를 확인할 수 있습니다. system 또는 shell이 아닌 경우 시스템 속성을 설정할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. persist.fruit.user.favorite' 권한이 property_service.c의 목록에 없습니다. 올바르게 이해한다면, 파일을 편집하고 'persist.fruit.user.favorite' 파일을 추가해야만한다는 말입니까? – likejiujitsu

+0

4.4 Kitkat – likejiujitsu

+1

시스템 속성 메커니즘이 복잡하고 변경 될 수 있습니다. 나는 당신이하려고하는 것이 무엇이든지 시스템 속성을 사용하지 않을 것을 진지하게 고려해야한다고 생각합니다. – fadden

관련 문제