2013-04-07 2 views
8

알려진대로 안드로이드 4.2에서만 시스템 애플리케이션이 비행기 모드를 토글 할 수 있습니다. 하지만 뿌리를 내린 기기에 사용할 수 있어야한다고 생각합니다. 그리고 Build.VERSION.SDK_INT> = 17 인 루팅 된 장치에 대한 내 응용 프로그램에서이를 구현하려고합니다. Android 4.2에서 루팅 된 기기에서 비행기 모드를 전환하는 방법은 무엇입니까?루트를 사용하여 Android 4.2 이상에서 비행기 모드를 전환하는 방법은 무엇입니까?

+0

관련 : 당신의 settings.db 터미널 응용 프로그램이 실행 탐구하는

http://stackoverflow.com/questions/13766909/android-how-to- enable-disable-flight-mode-on-android-4-2? lq = 1 –

+0

예,이 질문은 중복되지 않습니다. – BArtWell

답변

13

Android 4.2에 새로운 "설정"바이너리가 있습니다. su없이 사용할 수도 있습니다. 앱의 매니페스트에 선언 된이 설정을 변경하는 데 필요한 권한이 필요합니다 (4.2의 비행 모드는 WRITE_SECURE_SETTINGS가됩니다). - 시스템 파티션에 설치된 앱에만 부여됨).

다른 안드로이드 버전 및 기타 설정 (비행 모드가 4.2 전에 루트없이 활성화 할 수 있습니다) 당신은 SQL이 settings.db에 주입 사용할 수 있습니다 들어

su 
settings put global airplane_mode_on 0 
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false 

을 비활성화

su 
settings put global airplane_mode_on 1 
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true 

활성화

su 
sqlite3 /data/data/com.android.providers.settings/databases/settings.db 
insert into global values(null, 'airplane_mode_on', 1); 

"global"을 "system"또는 "secure"및 "airplane_mode_on"으로 바꾸십시오. 원하는 테이블 엔트리의 키. 일부 설정의 경우 나중에 특정 방송을 보내야합니다 (비행 모드의 경우 위의 예 참조). (반드시 중복하지만)

su 
sqlite3 /data/data/com.android.providers.settings/databases/settings.db 
.tables 
select * from global 
select * from secure 
select * from system 
+0

나는 이것에 대해서 100 % 명확하지 않다 ... 이것은 합법적으로 = 4.2 이상의 API를 통해 루트 모드없이 비행기 모드를 토글 할 수있는 방법이 없음을 의미합니까? – Marius

+0

네, 원래의 질문에 대한 답입니다. (귀하의 앱은 루트가 없거나 펌웨어를 개발/컴파일하는 시스템 앱이 될 수 없습니다.) – user1806772