Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 连接到第三方应用程序&x27;s数据库?_Android_Sql_Database_Sqlite_Root - Fatal编程技术网

Android 连接到第三方应用程序&x27;s数据库?

Android 连接到第三方应用程序&x27;s数据库?,android,sql,database,sqlite,root,Android,Sql,Database,Sqlite,Root,我正在创建一个仅供个人使用的应用程序,一段时间以来,我一直在试图找出如何连接到第三方应用程序的数据库而不共享内容用户ID。注意:我有根用户,所以也欢迎所有根用户选项 我一直在使用这个: protected String RefreshMessages() { try { String line; String result = ""; Process process = Runtime.getRuntime().exec("su")

我正在创建一个仅供个人使用的应用程序,一段时间以来,我一直在试图找出如何连接到第三方应用程序的数据库而不共享内容用户ID。注意:我有根用户,所以也欢迎所有根用户选项

我一直在使用这个:

protected String RefreshMessages() {
        try {
        String line;
        String result = "";
        Process process = Runtime.getRuntime().exec("su");
        OutputStream stdin = process.getOutputStream();
        InputStream stdout = process.getInputStream();
        stdin.write("su -c 'sqlite3 \"/data/data/<app>/databases/database.db\" \"" + REFRESH_QUERY + "\"'\n".getBytes());
        stdin.write("exit\n".getBytes());
        stdin.flush();
        stdin.close();
        BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
        while((line = br.readLine()) != null){
            result = result + line;
        }
        Log.d("[Output]", result);
        br.close();
        process.waitFor();
        process.destroy();
        return result;
    } catch (Exception ex) {
        Log.d("ERR-RFRSH-MSG", ex.toString());
        return "0";
    }
}
受保护的字符串刷新消息(){
试一试{
弦线;
字符串结果=”;
Process Process=Runtime.getRuntime().exec(“su”);
OutputStream stdin=process.getOutputStream();
InputStream stdout=process.getInputStream();
stdin.write(“su-c'sqlite3\”/data/data//databases/database.db\“\”+刷新\u查询+“\”'\n.getBytes());
写入(“exit\n”.getBytes());
stdin.flush();
stdin.close();
BufferedReader br=新的BufferedReader(新的InputStreamReader(stdout));
而((line=br.readLine())!=null){
结果=结果+行;
}
Log.d(“[输出]”,结果);
br.close();
process.waitFor();
process.destroy();
返回结果;
}捕获(例外情况除外){
Log.d(“ERR-RFRSH-MSG”,例如toString());
返回“0”;
}
}
并在服务中尽可能快地发送垃圾邮件以获取更新,但说真的。。必须有更好的选择。。。尤其是作为root用户。它允许我正确连接并从数据库获取实时信息。我已经用谷歌搜索了几个月,这是我能找到的最好的了

我还发现了一些关于将数据库复制到我应用程序域内的临时文件夹中,然后读取内容的内容,但我需要快速读取信息。在整个数据库上不断复制太慢了


请告诉我我有更好的选择,Android向导

我假设你没有能力修改第三方应用程序代码?@NirDuan我曾尝试对该应用程序进行反向工程,添加我自己的内容ID,然后使用我自己的密钥库创建apk,但该应用程序不再运行。可能是因为整个应用程序都很模糊,无法正常工作。我有根访问权限,你有像“SQLite编辑器”这样的应用程序,可以用根访问权限编辑所有数据库。他们是如何做到的?我已经尝试将数据/数据文件夹命名为777并直接打开它,但这也不起作用。非常有趣的是,你在市场上看到的“SQLite编辑器”应用程序(让我们尝试反向工程),这个链接可以帮助你:?@NirDuan这是我目前正在使用的方法(请参阅主帖子),我想创建一个直接连接虽然!(db.openDatabase(,null,0);)。还有一个做这件事的SQLEditor(但要花钱…)是