마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android.uid.system 퍼미션 얻기

0 추천
안녕하세요.
 
별에 별짓을 다해보다가 이렇게 고수님들께 조언을 얻고자 글을씁니다.
 
일단 system 권한을 부여 받아 airplane 모드를 켰다 끄기를 사용하여합니다.
 
jelly bean 에서 작동 시키려합니다.
 
구글링을 많이 해서 방법은 한번 정리했습니다.
1. jelly bean 에서는 System.settings 의사용은 안된다
Settings.System.putInt(context.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
 
Intent aeroPlaneIntent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
aeroPlaneIntent.putExtra("state", true);
context.sendBroadcast(aeroPlaneIntent);
 
 jelly bean 에서 Global은 only read 이고 System.settings 는 권한이 있어야한다고하네요.
대팩도 없다는데 ㅠ,.ㅠ
 
1. system 권한을 받기 위해서는 system 권한을 획득해야한다.
 
      package="exam.IntentTest"
      android:versionCode="1"
      android:versionName="1.0"
      android:sharedUserId="android.uid.system">
 
 - 이부분은 run 작동시에 Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 에러를 발생하여 launching이 안됩니다.
 
2. android.uid.system 권한을 얻기 위해 사이닝키를 넣어야한다.
 
참고한 사이트
 
3. 윈도우에서는 힘들꺼같아서 버추얼 박스에 우분투를 설치하여 아래 참고 사이트대로 진행했습니다.
 
 
그래서 결국 testkey.jak를 얻었습니다.
 
4. 파일을 가져와  Window -> Preferemces -> Android -> Build -> Custom debug Keystore 에서 넣어서 run
ㅜ.ㅜ.ㅜ.ㅜ 그래두 안되더군요.
 
5. 위내용중 빼먹은 것이 있나 해서 처음부터 다시 수차례
총 2주간을 투여했습니다. 이것만
 
정말 안되는군요 ㅠ,ㅜ
 
고수님들 어떻게 딱 안될까요?
 
힘트좀 주세요. 
 
참고사이트 작성해주신 분들꼐 감사함을 표합니다.
 
근데 저같은 초보에겐 너무 힘들군요ㅠ,ㅠ
 
고수님들 도와주세요~~~~~~~~~~
 
ps. 참고로 test는 이클립스로 갤럭시s4에 run 시키면서 작업 중입니다.
 
도와주십쇼~ (굽신굽신)
 
 
genocide (120 포인트) 님이 2014년 6월 19일 질문

1개의 답변

0 추천
시스템 권한의 기능을 사용하기 위해선 시스템이랑 같은 서명으로 사인된 키를 사용하여야 합니다.

genocide님이 작성하신 서명키는 안드로이드 풀소스의 플랫폼서명입니다.

테스트로 사용하신 단말기는 S4이니 당연히 시스템은 삼성의 서명으로 빌드되어있으니 작성하신 플랫폼 서명으론

시스템 권한은 사용할 수 없지요.

서명을 사용하여 테스트 하시려면 AVD를 이용하시거나 직접 풀소스를 빌드하신 시스템 이미지를 단말기에 플래쉬시켜

사용하시거나 플랫폼 서명으로 빌드된 커스텀 롬을 사용하셔야 합니다.
레미_21 (2,920 포인트) 님이 2014년 6월 19일 답변
...