es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Con la aplicación de Cordova para Android, ¿cómo puedo acceder (leer/escribir) un archivo SQLite en la carpeta compartida de un dispositivo con Windows 10?

Tengo una carpeta compartida en un dispositivo WINDOWS a la que puedo acceder desde cualquier otro dispositivo Windows. Sin embargo, necesito tener acceso a esa carpeta y su contenido (lectura/escritura), especialmente al archivo sqlite a través de una aplicación de Android desarrollada por Cordova. ¿Hay algún complemento que pueda ayudar?

He intentado el cordova-plugin-file y cordova-sqlite-evcore-extbuild-free, pero aún no encuentro ninguna ayuda.

Este es mi código para leer/escribir en la base de datos interna SQlite en la carpeta de Android:

document.addEventListener('deviceready', function() {

var dirr = 'file:///storage/emulated/0/Android';
//var dirr = '//192.168.1.29/shrd'; // Eso es lo que necesito

window.resolveLocalFileSystemURL(dirr, function(externalDataDirectoryEntry) {
var db = window.sqlitePlugin.openDatabase({name: 'shared.db', androidDatabaseLocation: externalDataDirectoryEntry.toURL()});
db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS MyTable (data)');
    tx.executeSql('INSERT INTO MyTable VALUES (?)', ['test-value']);
  }, function(error) {
    console.log('Populate database error: ' + error.message);
}, function() {
    db.transaction(function(tx) {
      tx.executeSql('SELECT data from MyTable', [], function(tx_ignored, resultSet) {

    console.log('Record count: ' + resultSet.rows.length);
     for (var i=0; i < resultSet.rows.length; ++i)
     console.log('index: ' + i + ' valor: ' + resultSet.rows.item(i).data);
      });
}, function(error) {
  console.log('Populate database error: ' + error.message);
});
});
});

¿Hay alguna ayuda?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, los plugins cordova-plugin-file y cordova-sqlite-evcore-extbuild-free pueden no funcionar al acceder a una carpeta compartida en un dispositivo con Windows desde una aplicación Android.

    Sin embargo, hay una posible solución. Una forma de acceder a la carpeta compartida es usando un plugin llamado cordova-plugin-samba. Este plugin permite que las aplicaciones Android accedan a archivos en shares remotos Samba/CIFS.

    Puedes intentar modificar tu código para usar este plugin en lugar del cordova-plugin-file para acceder a la carpeta compartida. Aquí hay un ejemplo de fragmento de código:

    document.addEventListener('deviceready', function() {
    
    var sharePath = '\\\\192.168.1.29\\shrd';
    var username = 'username';
    var password = 'password';
    var domain = 'domain';
    
    cordova.plugins.samba.getDirectoryListing(
        sharePath,
        function(entries) {
            console.log(entries);
        },
        function(error) {
            console.error(error);
        },
        {
            username: username,
            password: password,
            domain: domain
        }
    );
    
    var db = window.sqlitePlugin.openDatabase({name: 'shared.db', androidDatabaseLocation: sharePath});
    
    db.transaction(function(tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS MyTable (data)');
        tx.executeSql('INSERT INTO MyTable VALUES (?)', ['test-value']);
    }, function(error) {
        console.log('Error al poblar la base de datos: ' + error.message);
    
    }, function() {
        db.transaction(function(tx) {
    
            tx.executeSql('SELECT data from MyTable', [], function(tx_ignored, resultSet) {
    
                console.log('Cantidad de registros: ' + resultSet.rows.length);
                 for (var i=0; i < resultSet.rows.length; ++i)
                 console.log('índice: ' + i + ' valor: ' + resultSet.rows.item(i).data);
            });
        }, function(error) {
            console.log('Error al poblar la base de datos: ' + error.message);
        });
    });
    });
    

    Ten en cuenta que deberás proporcionar los valores correctos de la ruta compartida, nombre de usuario, contraseña y dominio como parámetros a la función getDirectoryListing().

    En general, el plugin cordova-plugin-samba puede ser una mejor opción para acceder a carpetas compartidas en dispositivos Windows desde aplicaciones Android desarrolladas con Cordova.

Comments are closed.