Estoy tratando de cambiar el sms límite descrito aquí desde dentro de la aplicación. La aplicación se supone que se ejecuta en un dispositivo de raíces. Estoy usando el RootTools para comprobar si el dispositivo está rooteado o no. Estoy tratando de averiguar cómo escribir el valor real en el settings.db. Cualquier sugerencia que me pueda ayudar en esto es muy apreciado.

Gracias de antemano.

Si opciones.db sqlite archivo de base de datos, a continuación, puede abrir este archivo con cualquier sqlite herramientas y modificarlo manualmente.
Quiero hacerlo desde dentro de la propia aplicación.
¿qué pasaría si puede acceder a «/data/data/com.android.proveedores.ajustes/bases de datos/configuración.db» esta ruta de acceso para modificar los datos en la base de datos de ayudante de clase?
ok, no puedo ver tu enlace, puedes publicar tu error aquí?
t devuelve un error. Puede comprobar el openDatabase método [aquí][1] para más detalles [1]: developer.android.com/reference/android/database/sqlite/…

OriginalEl autor 500865 | 2011-09-12

3 Comentarios

  1. 7

    Tengo esta solucionado haciendo esto:

    • copia de la /data/data/com.android.providers.settings/databases/settings.db a mi carpeta de la aplicación /data/data/my_app_directory/.
    • actualización de la tabla en la base de datos utilizando el SQLiteDatabase clase.
    • copia de la base de datos de /data/data/my_app_directory/settings.db a /data/data/com.android.providers.settings/databases/

    Las operaciones de copia se realiza mediante el uso de RootTools.sendShell

    de niza. ahora hay algún problema?
    no es posible operar directamente en la configuración original.db?
    AFAIK, no es posible.
    Me la hicieron posible. Por favor revise mi respuesta.

    OriginalEl autor 500865

  2. 1

    Sí, Usted puede hacer esto si usted tiene acceso de root. Es un proceso largo, pero usted puede hacer esto :

    Paso : 1 copia settings.db de /data/data/com.android.providers.settings/databases/ utilizando RootBrowser desde el dispositivo y que el cambio en el valor de uso de sqliteBrowser que desea para la actualización de la configuración de la actualización.db y poner en assets paquete de su proyecto

    Paso 2 : Copia de este archivo en la carpeta de su aplicación (en cualquier lugar donde usted puede tener acceso a) el uso de asset manager para lo que usted necesita

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    esta función de copia de archivos a partir de los activos

    public static void copyAssets(Context context, String assetPath, String outFilename) {
            AssetManager assetManager = context.getAssets();
            InputStream in = null;
            OutputStream out = null;
            try {
                in = assetManager.open(assetPath);
                File outFile = new File(context.getExternalFilesDir(null), outFilename);
    
                out = new FileOutputStream(outFile);
                copyFile(in, out);
            } catch (IOException e) {
                Log.e(TAG, "Failed to copy asset: " + outFilename, e);
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                    }
                }
            }
        }
    
    public static void copyFile(InputStream in, OutputStream out) throws IOException {
            byte[] buffer = new byte[1024];
            int read;
            while ((read = in.read(buffer)) != -1) {
                out.write(buffer, 0, read);
            }
        }

    Paso 3 : sobrescribir el sistema settings.db ruta del sistema de archivos (parámetro destpath) es /data/data/com.android.providers.settings/databases/

    public static void copyToSystem(final String sourceFilePath, final String destPath) {
            Thread background = new Thread(new Runnable() {
    
                @Override
                public void run() {
                    try {
                        Process process = Runtime.getRuntime().exec("su");
                        DataOutputStream os = new DataOutputStream(process.getOutputStream());
    //                   
                        os.writeBytes("cp -f " + sourceFilePath + " " + destPath + "\n");
                        os.flush();
                        os.writeBytes("exit\n");
                        os.flush();
                        process.waitFor();
                        process.waitFor();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                        Log.e(TAG, e.toString());
                    } catch (IOException e) {
                        e.printStackTrace();
                        Log.e(TAG, e.toString());
                    }
                }
            });
            background.start();
        }

    Paso 4 : Reinicie el dispositivo

    Que todo hecho.

    OriginalEl autor Upendra Shah

  3. 0

    Tardanza en responderte, pero no es necesario para la configuración de copia.db, se puede actualizar con RootTools como

    CommandCapture commandLogcat = new CommandCapture(0, "sqlite3 /data/data/com.android.providers.settings/databases/settings.db \"UPDATE secure SET value = '192.168.2.140' WHERE name = 'eth_ip';\"");
    RootTools.getShell(true).add(commandLogcat).getExitCode();

    OriginalEl autor Tomek

Dejar respuesta

Please enter your comment!
Please enter your name here