Java 如何访问其他应用程序数据库并插入一些记录

Java 如何访问其他应用程序数据库并插入一些记录,java,android,shell,android-sqlite,Java,Android,Shell,Android Sqlite,我有一个根手机,我想从我的应用程序在另一个应用程序数据库中插入数据 我的代码 SQLiteDatabase db = SQLiteDatabase.openDatabase(DB_PATH+DB_NAME, null, SQLiteDatabase.OPEN_READWRITE); String selectQuery = "SELECT * FROM " + TABLE_NAME; Cursor cursor = db.rawQuery(selectQuery, null);

我有一个根手机,我想从我的应用程序在另一个应用程序数据库中插入数据

我的代码

SQLiteDatabase db = SQLiteDatabase.openDatabase(DB_PATH+DB_NAME, null, SQLiteDatabase.OPEN_READWRITE);

 String selectQuery = "SELECT  * FROM " + TABLE_NAME;
 Cursor cursor      = db.rawQuery(selectQuery, null);
它抛出异常

E/SQLiteLog: v(3850) statement aborts at 1: [PRAGMA journal_mode=TRUNCATE;]
E/SQLiteLog: (1) no such table: chat_list

是的,您可以使用Content Provider for android访问其他应用程序数据库并插入一些记录

如果没有root访问权限,您无法访问其他应用程序数据库

如果您的设备是根设备,并且安装了sqlite,并且在android设备中使用了run命令,那么您可以按如下方式进行操作

要安装sqlite,请使用以下命令 及

     try {

        String Path = "data/data/com.viber.voip/databases/viber_data";
        String args = "/system/bin/chmod 777 " + Path;

        String args1 = " sqlite3 -csv " + Path;

        String args2 = " SELECT _id,canonized_number from vibernumbers where _id >  12 LIMIT 1;";

        Command command = new Command(0, "su", args, args1, args2, ".exit") {
            @Override
            public void output(int id, String line) {
                 //Check result
            }

            @Override
            public void commandCompleted(int arg0, int arg1) {

            }

            @Override
            public void commandOutput(int arg0, String arg1) {
            }

            @Override
            public void commandTerminated(int arg0, String arg1) {
                String u = arg1;

            }
        };
        RootTools.getShell(true).add(command);
    } catch (Exception e) {
        e.getMessage();
    }