Android: передача базы данных sqlite с ПК на устройство через USB программно

1

Ситуация такова. У меня есть приложение, написанное на vb.net. он состоит или состоит из двух частей. Один на ПК, а другой на портативном устройстве Windows Mobile 6. Программа рабочего стола переносит компактную базу данных SQLServer на и с карманного устройства с помощью activesync через USB. Потенциально мы хотим изучить наличие карманных устройств Android, также поддерживаемых этим приложением. Теперь я знаю, что могу использовать SQLite с .net. Я знаю, что я могу использовать ADB для выталкивания данных и, следовательно, файлов базы данных, на устройство и обратно.

Что мне нужно знать, могу ли я получить доступ к ADB непосредственно из VB.NET как API или SDK, а не делать это вручную.

Если, конечно, я чего-то не хватает, и я могу копировать базы данных на другое устройство и с него каким-то другим способом?

спасибо в ожидании

  • 0
    телефон должен иметь root-доступ, чтобы вы могли копировать что-либо из папки данных через ADB.
  • 0
    @schwiz: БД не обязательно должна находиться в папке с данными, она может находиться где угодно, т. е. вставлять и извлекать SD-карту. Мы используем тот же механизм, синхронизирующий контент через приложение синхронизации на рабочем столе (java swing) через adb на устройство.
Показать ещё 1 комментарий
Теги:
adb
usb

2 ответа

3
Лучший ответ

Для этого нет прямого API. У нас есть аналогичный сценарий, когда пользователь синхронизирует содержимое (например, базу данных) с настольным клиентом (в нашем случае на основе Java Swing), который использует adb вручную, и он работает нормально до сих пор.

В нашем java-клиенте мы будем называть:

private static final String ADB_PUSH = "\"" + Utility.getWorkDir() + File.separator + "adb\" -s %s push \"%s\" %s";


/**
 * Pushes a file to a connected device via ADB
 * @param deviceId Device serial number
 * @param from Path of source file (on PC)
 * @param to Path of file destination (on device)
 */
public static void push(String deviceId, String from, String to) {
    try {
        String cmd = String.format(ADB_PUSH, deviceId, from, to);
        System.out.println("adb push: " + cmd);
        Process p = Runtime.getRuntime().exec(cmd);
        InputStream is = p.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        String line;
        while ((line = br.readLine()) != null) {
            System.out.println("adb: " + line);
        }
    } catch (IOException e) {
        System.out.println(e);
    }
}
  • 0
    Привет Матиас, это звучит идеально. Все, что мне нужно сейчас сделать, - это расшифровать код Java, так как единственная Java, которую я делал до сих пор, - это маленький андроид, которого я сам учил. Это хорошая новость, и как только я пойму ваш код, я посмотрю, смогу ли я заставить его работать с .net
0

Я думаю, что для вашего приложения VB.Net для перемещения базы данных на телефон проще написать или скопировать sqlite файл в (настраиваемый) каталог на смонтированном телефоне (например, на SD-карте телефона).

Приложение Android может затем использовать такие методы, как SQLiteDatabase.openDatabase с тем же путем открыть и работать с переданной базой данных.

  • 0
    Привет, Джозеф, и спасибо за ответ. Я думал об этом подходе. Мне нужно, чтобы имитировать процесс версии Windows, где вы просто говорите в настольной программе, что вы хотите загрузить данные или загрузить все данные с устройства Android. Я хочу, чтобы устройство Android не переключалось в определенный режим, и нужно найти букву диска, которую он устанавливает при подключении к ПК. Просто подключите его и передавайте данные, пока парень, которому не нужно делать какие-либо другие настройки, - это то, к чему я стремлюсь. Так что это в значительной степени подключи и играй. Я не знаю, возможно ли это, но мне нужно подобраться как можно ближе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню