python으로 android sqlite db read (파이썬으로 안드로이드 디비 읽기)
android phone 에 python 을 실행할 수 있는 환경이 갖추어 졌다면 폰 내부에서 스크립트로 android system 이 사용하는 각종 database 값들을 바꾸어 볼 수 있습니다.
실제 일반 사용자 환경에서는 이러한 방법을 사용할 일이 없겠지만 안드로이드 폰을 customizing 하는것을 좋아 경우에는 이러한 방법이 사용될 수 있습니다.
아래 python function 은 setting database 내부의 table name 과 data 의 이름을 인자로 받아 그 값을 return 해 주는 기능을 가지고 있습니다.
import sqlite3
import sys
def getAndroidSetting(table_name, data_name) :
con = None
try:
con = sqlite3.connect('/data/data/com.android.providers.settings/databases/settings.db')
cur = con.cursor()
cur.execute("SELECT value from " + table_name + " where name = '" + data_name + "'")
data = cur.fetchone()
# addComment("SQLite version: " + str(data[0]))
except sqlite3.Error, e:
reportFail("Error %s:" + str(e.args[0]))
sys.exit(1)
finally:
if con:
con.close()
return data[0]
먼저 /data/data/com.android.providers.settings/databases/settings.db 위치에 있는 database 는 안드로이드 Setting app 에서 사용되는 각종 값 들을 저장해 놓은 database 입니다.
이 database 안에서 table_name 에 해당하는 table 에서 data_name 에 해당하는 DB 값을 읽어내는 SQL 명령은 "SELECT value from " + table_name + " where name = '" + data_name + "'" 부분 입니다.
여기서 database 위치 및 이름과 table name 그리고 data name 만 변경해 주면 어느 app 에서 사용하는 database 라도 모두 읽을 수 있게 됩니다.
만약 그 값을 변경하고 싶다면 SQL 문을 바꿔주면 됩니다. "UPDATE table_name set value = xxxx where name = data_name" 의 형식으로 변경하면 됩니다.
이렇게 DATABASE 를 읽고 쓰는 기능은 android system 에서 특정 값을 변경할 방법을 기본으로 제공해 주지 않는 경우 apk 를 만들지 않고도 해당 값을 직접 변경할 수 있도록 해 줍니다. 물론 system db 라면 root 권한을 가지고 있어야 합니다.
아래의 값 들은 setting.db 의 system table 이 가지고 있는 data 값들 입니다.
#=====================================
# data_name
#=====================================
# accelerometer_rotation
# alarm_alert
# dim_screen
# dtmf_tone
# dtmf_tone_type
# haptic_feedback_enabled
# hearing_aid
# lockscreen_sounds_enabled
# media_button_receiver
# mode_ringer_streams_affected
# mute_streams_affected
# next_alarm_formatted
# notification_light_pulse
# notification_sound
# pointer_speed
# ringtone
# screen_brightness
# screen_brightness_mode
# screen_off_timeout
# sound_effects_enabled
# transition_animation_scale
# tty_mode
# vibrate_when_ringing
# volume_alarm
# volume_bluetooth_sco
# volume_music
# volume_music_headphone
# volume_music_headset
# volume_notification
# volume_ring
# volume_system
# volume_voice
# volume_music_speaker
# volume_alarm_speaker
# volume_ring_speaker
# window_animation_scale
이상 python으로 android sqlite db read (파이썬으로 안드로이드 디비 읽기)에 대한 글 이였습니다.
핸드폰 잃어버렸을 때 빨리 찾는 방법 (안드로이드 기기 관리자) (0) | 2014.08.23 |
---|---|
간단히 비교해보는 LG의 야심작 G3 스펙과 갤럭시S5 사양 비교 (0) | 2014.08.20 |
안드로이드 Low memory killer (LMK) 에 의해서 app(apk) 안죽게 하는 방법 (0) | 2014.06.26 |
표로보는 갤럭시 S5 스펙과 G pro 2 스펙비교와 S5 심박계 원리 (0) | 2014.02.26 |
LG Optimus G2 스펙 (옵티머스 G2 스펙) (1) | 2013.07.13 |