Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Bolbine84455
5 / 5 / 3
Регистрация: 12.03.2014
Сообщений: 335
1

Работа с БД на USB носителе через OrmLite (Android 6)

28.04.2017, 20:33. Просмотров 384. Ответов 2
Метки нет (Все метки)

Имеется usb flash drive, в котором хранится БД SQLite. Нужна возможность чтения/записи данных в БД.
Проблема возникла с получением доступа к usb flash drive.
На форуме ознакомился, но данный метод не сработал. Видит некий "/dev/bus/usb/001/002", но права на чтение и запись отсутствуют.
Версия Андроид: 6
Слышал, что в этой версии ОС необходимо у пользователя запрашивать права, но ведь в данном случае речь не идет о внутреннем хранилище.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2017, 20:33
Ответы с готовыми решениями:

Передача информации (byte array) с android на пк (c#) через usb
Здравствуйте. Подскажите пожалуйста, каким образом можно реализовать передачу...

Android studio, как запускать программу сразу на android смартфоне подключенному к usb?
android studio, как запускать программу сразу на android смартфоне...

Основы ORMLite
Гуру, кто-нибудь подобным пользуется??? Обьясните "на пальцах" что такое...

Запуск игры mr.Nom через Android Studio (по книге марио цехнер программирование игр под android)
Привет всем! Для тех кто читал книгу - в конце 6ой главы мы закончили писать...

Шифрование данных на usb носителе
Помогите пожалуйста, требуется написать программу, которая определяла бы...

2
vxg
Модератор
3278 / 2075 / 327
Регистрация: 13.01.2012
Сообщений: 8,055
29.04.2017, 09:32 2
Bolbine84455, я бы попробовал запросить права
1
Bolbine84455
5 / 5 / 3
Регистрация: 12.03.2014
Сообщений: 335
29.04.2017, 14:32  [ТС] 3
Цитата Сообщение от vxg Посмотреть сообщение
Bolbine84455, я бы попробовал запросить права
На текущий момент в MainActivity -> onCreate прописан следующий фрагмент кода:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Тестируем - НАЧАЛО
        //Получаем доступ на запись
        verifyStoragePermissions(this); //Нет необходиомсти.
        startActivity(); // Пока бесполезно, т.к. через него с БД работать не получится
 
        List<String> listRecord = new ArrayList<String>();
 
        File directory  = new File("/storage/UsbDriveA/");
        listRecord.add("3");
 
        if (directory != null) {
            listRecord.add("2");
            if (directory.canRead()) {
                listRecord.add("1");
 
            }
        }
        
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_spinner_layout, listRecord);
        adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
        Singleton.getInstance().setAdapter(adapter); // (!!!)
 
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(mMessageClickedHandler);
 
        //Инициализация Соединения с БД
        HelperFactory.setHelper(getApplicationContext());
        //
 
        //Тестируем - КОНЕЦ
Не менее важные методы
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void startActivity(){
        startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);
    }
 
    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };
 
    public static void verifyStoragePermissions(Activity activity) {
        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    activity,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }
    }
Диалог вылезает, флешку вижу, выбираю её, но дальше listRecord.add("2"); не идет, т.е. нет права на чтения.

Если не ошибаюсь, то startActivity() отвечает за этот диалог, но объект, который он возвращает вроде бы нельзя использовать для ORMLite, т.к. тому путь нужен. Если я дам путь, то он все равно не будет иметь доступа, т.к. надо работать с объектом-провайдером доступа или как-то так.

Не знаю, пытаться изощряться как-то? Можно попытаться получить права на чтение/запись на USB, оттуда базу скопировать в локальное хранилище приложения и там уже пользователь будет работать с этой базой, а после выполнения транзакции база из локального хранилища будет копироваться на USB с заменой файлов. Как-то сложновато и не факт, что провайдер позволить читать данные бд.

Добавлено через 29 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
    public void onActivityResult(int requestCode,int resultCode,Intent resultData)
    {
        if(resultCode==RESULT_OK){
            Uri treeUri=resultData.getData();
            DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
            grantUriPermission(getPackageName(), treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION );
            initConnection(pickedDir);
        }else{
            startActivity();
        }
 
    }
Добавлено через 1 час 23 минуты
Ладно. Попробую реализовать через копирование
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2017, 14:32

Переводить команды USB WIFI Адаптера через компьютер по USB-USB для устройства
name: как передавать сигнал от требующего установку драйверов USB WIFI Адаптера...

Работа вебки через usb на больших расстояниях
Нужна помощь, подскажите, можно ли подключить вебкамеру через usb к ноутбуку,...

Подключение устройства и работа с ним через USB
Всем привет. Подскажите, есть устройства для печати. По одному нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru