0
저는 루팅 된 Android 기기 및 시스템 응용 프로그램이 있습니다. 내 응용 프로그램에서 launcher.db 파일을 편집하고 싶습니다. DB를 런처 경로는,android에서 launcher.db를 편집하십시오.
/data/data/com.android.launcher/databases/launcher.db
난 그냥 보통 * .DB 파일처럼이 파일을 편집하는 것을 시도하고있다 하지만 작동하지 않습니다. 이 파일을 편집하려면 어떻게해야합니까?
내 DBHelper.java 클래스 :public class DBHelper extends SQLiteOpenHelper{
static final String DATABASE = "/data/data/com.android.launcher/databases/launcher.db";
static final int VERSION = 13;
static final String TABLE = "favorites";
static final String TABLE_DEPT = "dept";
static final String C_ID = "_id";
static final String C_TITLE = "title";
static final String C_INTENT = "intent";
static final String C_CONTAINER = "container";
static final String C_SCREEN = "screen";
static final String C_CELL_X = "cellX";
static final String C_CELL_Y = "cellY";
static final String C_SPAN_X = "spanX";
static final String C_SPAN_Y = "spanY";
static final String C_ITEM_TYPE = "itemType";
static final String C_APP_WIDGET_ID = "appWidgetId";
static final String C_IS_SHORTCUT = "isShortcut";
static final String C_ICON_TYPE = "iconType";
static final String C_ICON_PACKAGE = "icon";
static final String C_URI = "uri";
static final String C_DISPLAY_MODE = "displayMode";
static final String C_ICON = "icon";
static final String C_ICON_RESOURCE = "iconResource";
public DBHelper(Context context) {
super(context, DATABASE, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
public void onDowngrade(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
그리고 내 ShortcutInstaller.java 클래스 :
public class ShortcutInstaller {
DBHelper helper;
SQLiteDatabase db;
Context context;
public ShortcutInstaller(Context context) {
this.context = context;
}
public void installShortcut() {
try
{
/*Uri data = intent.getData();
String packageName = data.getEncodedSchemeSpecificPart();
Log.i("some", packageName);*/
//Runtime.getRuntime().exec("sqlite3 /data/data/com.android.launcher/databases/launcher.db \"DELETE FROM favorites WHERE _id=100; INSERT INTO favorites VALUES(100,'ImViewer','#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.navigator.imviewer/org.vudroid.core.MainBrowserActivity;end',-100,0,2,3,1,1,0,-1,NULL,0,NULL,NULL,NULL,NULL,NULL);\"");
//Log.i("some", "Done1!");
ContentValues values = new ContentValues();
values.put(DBHelper.C_ID, 100);
values.put(DBHelper.C_TITLE, "ImViewer");
values.put(DBHelper.C_INTENT, "#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.navigator.imviewer/org.vudroid.core.MainBrowserActivity;end");
values.put(DBHelper.C_CONTAINER, -100);
values.put(DBHelper.C_SCREEN, 2);
values.put(DBHelper.C_CELL_X, 0);
values.put(DBHelper.C_CELL_Y, 2);
values.put(DBHelper.C_SPAN_X, 1);
values.put(DBHelper.C_SPAN_Y, 1);
values.put(DBHelper.C_CELL_X, 0);
values.put(DBHelper.C_ITEM_TYPE, 0);
values.put(DBHelper.C_APP_WIDGET_ID, -1);
values.putNull(DBHelper.C_IS_SHORTCUT);
values.put(DBHelper.C_ICON_TYPE, 0);
values.putNull(DBHelper.C_ICON_PACKAGE);
values.putNull(DBHelper.C_ICON_RESOURCE);
values.putNull(DBHelper.C_ICON);
values.putNull(DBHelper.C_URI);
values.putNull(DBHelper.C_DISPLAY_MODE);
// Call insert method of SQLiteDatabase Class and close after
// performing task
db = helper.getWritableDatabase();
db.insert(DBHelper.TABLE, null, values);
db.close();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
Log.i("some", "Done2!");
am.restartPackage("com.android.launcher");
Log.i("some", "Done3!");
}catch (Exception e)
{
Log.i("some", e.toString());
}
}
}
@ArtooDetoo 그것을 * .db 파일을 편집 할 수 있음을 의미합니다. 이 코드가있는/sdcard와 같은 다른 폴더에 있습니다. –
@ArtooDetoo 내 질문을 편집했습니다 –
성공 했습니까? 질문이 아직 보류 중입니까? – Drew