1#!/usr/bin/env python2.5 2 3import cgi 4import os 5import shutil 6import sys 7import sqlite3 8 9SCREENS = 5 10COLUMNS = 4 11ROWS = 4 12CELL_SIZE = 110 13 14DIR = "db_files" 15AUTO_FILE = "launcher.db" 16 17APPLICATION_COMPONENTS = [ 18 "com.android.calculator2/com.android.calculator2.Calculator", 19 "com.android.providers.downloads.ui/com.android.providers.downloads.ui.DownloadList", 20 "com.android.settings/com.android.settings.Settings", 21 "com.android.mms/com.android.mms.ui.ConversationList", 22 "com.android.contacts/com.android.contacts.activities.PeopleActivity", 23 "com.android.dialer/com.android.dialer.DialtactsActivity" 24] 25 26def usage(): 27 print "usage: fill_screens.py -- fills up the launcher db" 28 29 30def make_dir(): 31 shutil.rmtree(DIR, True) 32 os.makedirs(DIR) 33 34def pull_file(fn): 35 print "pull_file: " + fn 36 rv = os.system("adb pull" 37 + " /data/data/com.android.launcher/databases/launcher.db" 38 + " " + fn); 39 if rv != 0: 40 print "adb pull failed" 41 sys.exit(1) 42 43def push_file(fn): 44 print "push_file: " + fn 45 rv = os.system("adb push" 46 + " " + fn 47 + " /data/data/com.android.launcher/databases/launcher.db") 48 if rv != 0: 49 print "adb push failed" 50 sys.exit(1) 51 52def process_file(fn): 53 print "process_file: " + fn 54 conn = sqlite3.connect(fn) 55 c = conn.cursor() 56 c.execute("DELETE FROM favorites") 57 58 intentFormat = "#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=%s;end" 59 60 id = 0; 61 for s in range(SCREENS): 62 for x in range(ROWS): 63 for y in range(COLUMNS): 64 id += 1 65 insert = "INSERT into favorites (_id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconType) VALUES (%d, '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d)" 66 insert = insert % (id, "title", "", -100, s, x, y, 1, 1, 2, -1, 0) 67 c.execute(insert) 68 folder_id = id 69 70 for z in range(15): 71 id += 1 72 intent = intentFormat % (APPLICATION_COMPONENTS[id % len(APPLICATION_COMPONENTS)]) 73 insert = "INSERT into favorites (_id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconType) VALUES (%d, '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d)" 74 insert = insert % (id, "title", intent, folder_id, 0, 0, 0, 1, 1, 0, -1, 0) 75 c.execute(insert) 76 77 conn.commit() 78 c.close() 79 80def main(argv): 81 if len(argv) == 1: 82 make_dir() 83 pull_file(AUTO_FILE) 84 process_file(AUTO_FILE) 85 push_file(AUTO_FILE) 86 else: 87 usage() 88 89if __name__=="__main__": 90 main(sys.argv) 91