상세 컨텐츠

본문 제목

python으로 android sqlite db read (파이썬으로 안드로이드 디비 읽기)

IT : SmartPhone

by 휀스 2014. 6. 19. 00:00

본문



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 (파이썬으로 안드로이드 디비 읽기)에 대한 글 이였습니다.



관련글 더보기