Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Работа с БД на USB носителе через OrmLite (Android 6)

Имеется usb flash drive, в котором хранится БД SQLite. Нужна возможность чтения/записи данных в БД.
Проблема возникла с получением доступа к usb flash drive.
На ознакомился, но данный метод не сработал. Видит некий "/dev/bus/usb/001/002", но права на чтение и запись отсутствуют.
Версия Андроид: 6
Слышал, что в этой версии ОС необходимо у пользователя запрашивать права, но ведь в данном случае речь не идет о внутреннем хранилище.
Ответ:
Сообщение от 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 минуты
Ладно. Попробую реализовать через копирование
Вопрос: Работа с VideoView в android studio

Здравствуйте.
Не могу воспроизвести видео в VideoView через интернет.
Вот код:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
VideoView videoView = (VideoView) findViewById(R.id.videoView);
 
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(videoView);
 
        String videoSource ="https://www.youtube.com/watch?v=aGz-GOmp-8U";
        videoView.setVideoURI(Uri.parse(videoSource));
 
 
        videoView.setMediaController(new MediaController(this));
        videoView.requestFocus(0);

И в какой xml поместить эту строку:
Код XML
1
<uses-permission android:name="android.permission.INTERNET" />
Ответ: Youtube имеет собственный API для проигрывания и не станет воспроизводиться просто так.
Сообщение от dsanyuk
И в какой xml поместить эту строку
В AndroidManifest.xml перед <application>.
Вопрос: Публикация на google play с android.permission-group.SYSTEM_TOOLS

День добрый. Пишется проект для работы которого используются пермишены android.permission-group.SYSTEM_TOOLS.
Тут подсказали, что могут возникнуть проблемы с публикацией, ибо нужно получить дополнительный аппрув на это со стороны маркета. Ктонибудь сталкивался с этим? В справке для разработчиков ничего об этом не упоминается. ТП гугла посылает задать вопрос через консоль разработчика, а так как аккаунт пока не заведен, доступа к нему естественно нет.
XML
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
 <permission
    android:name="com.android.launcher.permission.INSTALL_SHORTCUT"
    android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
    android:protectionLevel="dangerous"
    android:label="@string/permlab_install_shortcut"
    android:description="@string/permdesc_install_shortcut" />
<permission
    android:name="com.android.launcher3.permission.READ_SETTINGS"
    android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
    android:protectionLevel="normal"
    android:label="@string/permlab_read_settings"
    android:description="@string/permdesc_read_settings"/>
<permission
    android:name="com.android.launcher3.permission.WRITE_SETTINGS"
    android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
    android:protectionLevel="signatureOrSystem"
    android:label="@string/permlab_write_settings"
    android:description="@string/permdesc_write_settings"/>
<permission
    android:name="com.android.launcher3.permission.RECEIVE_LAUNCH_BROADCASTS"
    android:protectionLevel="signature"
    />
<permission
    android:name="com.android.launcher3.permission.RECEIVE_FIRST_LOAD_BROADCAST"
    android:protectionLevel="signatureOrSystem" />
Ответ:
Сообщение от Kvakerall
Тут подсказали, что могут возникнуть проблемы с публикацией, ибо нужно получить дополнительный аппрув на это со стороны маркета. Ктонибудь сталкивался с этим?
Вижу три варианта:
1. Переспросить у того кто намекнул, на что собственно он намекнул, и с чего это взял. А так же, может ли он дать расширенный ответ.
2. Завести аккаунт разработчика, и спросить через него (если вы считаете что ваше приложение не сможет набрать 25 баксов - не делайте его, и тем более не выкладывайте в маркет. Его там не найдут).
3. Тупо - ждать тут. Может, кто - нибудь еще - намекнет.
P.S. Я могу намекнуть на то, что некоторым приложениям, нужно писать политику конфиденциальности. Это дело 5 минут, пишем - выкладываем в блог, копируем в само приложение, и все.
Вопрос: Senior Android Developer (переезд в г. Сочи)

Добрый день!

На данный момент в нашей компании ООО "Серафим" (г. Сочи) ,занимающейся разработкой ПО, открыта вакансия Senior Android Developer.
Вакансия предполагает переезд в г. Сочи (Краснодарский край). Расходы на переезд и компенсация жилья предусмотрены.
Уровень з/п готовы обсуждать и рассмотреть пожелания кандидатов (до 300 тыс. руб.).

Senior Android Developer
Разработка клиентского программного обеспечения для обмена текстовыми и мультимедиа-сообщениями, голосовой и видеосвязи, с повышенными требованиями к защите информации.

Руководство командой мобильной разработки.

ОБЯЗАННОСТИ

Доработка и поддержка мобильного клиент-серверного приложения.
Внедрение новых функций в приложении.
Адаптация приложения под различные форматы устройств.
Контроль качества реализации и качества кода приложений.
Тестирование своего и чужого кода.
Подключение аналитических платформ и платформ a/b-тестирования.

ЧТО НУЖНО ЗНАТЬ\УМЕТЬ\ИМЕТЬ

Опыт коммерческой разработки под Android от трех лет.
Опыт работы с JNI
Знание Java 8, Android SDK.
Знание специфики разработки под разные версии Android (API 4.03+).
Знание принципов ООП и шаблонов проектирования.
Уметь верстать интерфейсы и создавать интерфейсные анимации.
Знание протоколов и форматов HTTP, HTTPS, JSON, REST.
Желателен опыт работы с sdk соц.сетей.
Опыт работы с REST API.
Знание Gradle.
SQLite.
Опыт работы с PUSH-уведомлениями.
Умение пользоваться инструментами профилирования кода, заниматься поиском и исправлением узких мест.

ЗАМЕЧАТЕЛЬНО, ЕСЛИ ВЫ:

Умеете создавать концепты View;
Имеете завершенные проекты (Google Play + GitHub);
Работали и хотите работать по Agile;
Имеете опыт работы с Jira;
Android NDK;
Realm;
Material Design, Design patterns;
Знаете другие языки программирования.

ПРОЧИЕ ТРЕБОВАНИЯ

Владение английским языком на уровне работы с технической документацией и письменного общения в рамках тематики проекта.

БОНУСЫ

Помогаем с переездом. сопровождаем в инстанциях.
Обеспечиваем юридическую поддержку иностранцев, в части получения патента. Выплачиваем подъёмные.


Контакты: Елена Угрюмова 89180169880 (whatssapp), e.ugrumova@seraphim.online
Ответ:
Я бы переехала в Сочи.
Вопрос: Senior Android Developer (переезд в г. Сочи)

Добрый день!

На данный момент в нашей компании ООО "Серафим" (г. Сочи) ,занимающейся разработкой ПО, открыта вакансия Senior Android Developer.
Вакансия предполагает переезд в г. Сочи (Краснодарский край). Расходы на переезд и компенсация жилья предусмотрены.
Уровень з/п готовы обсуждать и рассмотреть пожелания кандидатов (до 300 тыс. руб.).

Senior Android Developer
Разработка клиентского программного обеспечения для обмена текстовыми и мультимедиа-сообщениями, голосовой и видеосвязи, с повышенными требованиями к защите информации.

Руководство командой мобильной разработки.

ОБЯЗАННОСТИ

Доработка и поддержка мобильного клиент-серверного приложения.
Внедрение новых функций в приложении.
Адаптация приложения под различные форматы устройств.
Контроль качества реализации и качества кода приложений.
Тестирование своего и чужого кода.
Подключение аналитических платформ и платформ a/b-тестирования.

ЧТО НУЖНО ЗНАТЬ\УМЕТЬ\ИМЕТЬ

Опыт коммерческой разработки под Android от трех лет.
Опыт работы с JNI
Знание Java 8, Android SDK.
Знание специфики разработки под разные версии Android (API 4.03+).
Знание принципов ООП и шаблонов проектирования.
Уметь верстать интерфейсы и создавать интерфейсные анимации.
Знание протоколов и форматов HTTP, HTTPS, JSON, REST.
Желателен опыт работы с sdk соц.сетей.
Опыт работы с REST API.
Знание Gradle.
SQLite.
Опыт работы с PUSH-уведомлениями.
Умение пользоваться инструментами профилирования кода, заниматься поиском и исправлением узких мест.

ЗАМЕЧАТЕЛЬНО, ЕСЛИ ВЫ:

Умеете создавать концепты View;
Имеете завершенные проекты (Google Play + GitHub);
Работали и хотите работать по Agile;
Имеете опыт работы с Jira;
Android NDK;
Realm;
Material Design, Design patterns;
Знаете другие языки программирования.

ПРОЧИЕ ТРЕБОВАНИЯ

Владение английским языком на уровне работы с технической документацией и письменного общения в рамках тематики проекта.

БОНУСЫ

Помогаем с переездом. сопровождаем в инстанциях.
Обеспечиваем юридическую поддержку иностранцев, в части получения патента. Выплачиваем подъёмные.


Контакты: Елена Угрюмова 89180169880 (whatssapp),
Ответ:
Я бы переехала в Сочи.
Вопрос: Android SDK - нет пакетов

Добрый вечер.У меня проблема, что Android SDK нет пакетов(только 7.11 и 7.0) откуда их скачать или может это нормально?.Посмотрев туторы, они должны быть в программе, но там такого нет
Ответ: zhivoilaker, а если через Tools/Android/SDK Manager? или это не студия?
Вопрос: Основы ORMLite

Гуру, кто-нибудь подобным пользуется???

Обьясните "на пальцах" что такое ORMLite и чем оно облегчает работу???

Раньше для этих задач использовал ОЧЕНЬ СЛОЖНЫЙ "самопал" - не все случаи учтены, возможны мелкие ошибки...
Сейчас хочу попробовать выучить нормальные/современны технологии, но не знаю с какой стороны подойти и есть ли подобные технологии вообще...

Задача:
1) создать КЛАСС, в котором через список создать структуру таблиц, обновлять базу (где-то встречал как все структуры таблиц в XML хранят)

Не по теме:

раньше делал примерно так (в специальном классе "структуры"):
version=12;
t1=addtable("table1");
t1.addfield("field1", type_int);
t1.addfield("field2", type_str);
t1.addfield("field3", type_rec_id, "table3"); // ссылка на id другой таблицы
update_structure();
при этом если баз нет, то создаются, если полей нет- добавляются, если поля лишние-удаляются... есть проверка версии структуры через специальную системную таблицу и параметр там - это поможет сделать "обработку" перед исправлением структуры (например field2=field2+field1, перед удалением field1)


2) добавить запись через класс указывая лишь нужные поля.

Не по теме:

Раньше делал примерно так
t1=struct1.gettable("table1");
rec1 = t1.new();
rec1.set("field1", 123);
rec1.set("field2", "hello");
rec1.save();


3) поиск по фильтрам
4) заготовка для вывода списка в list

Не по теме:

для этого писал свой класс списка



Надо написать СЛОЖНУЮ учетную систему с десятком-двумя связанных таблиц в базе (и часто менять структуру у клиентов без потери данных), списками записей, редакторами записей!

Накидайте пли-и-из с какой стороны подойти??? Есть ли технологии, которые помогут в этом или стоит доработать свой "велосипед"?
Ответ:
Сообщение от Mikalai
водим в гугл "SugarOrm". Первая ссылка -
и??? вижу очередную РЕКЛАМУ! Какой "SugarOrm" класный, хороший и как много он умеет... Мне КОД нужен!!!
С этой страницы меня послали на
И опять... используете это... или это... или это... И куски кода, которые НЕ РАБОТАЮТ!!! Все успешно запускается, но база так и не создается!! И ни слова о том где поля определять, куда базу сложить... Не говоря о том что имя базы создается похоже в МАНИФЕСТЕ! (я что не могу динамически управлять путем и названием? Не могу переложить "на лету"?)

Дайте ЧЕЛОВЕЧЕСКУЮ инструкцию пожалуйста! Чтобы увидеть базу после запуска!!!
 Комментарий модератора 
давайте бороться за уменьшение количества восклицательных знаков в постах


Добавлено через 18 часов 35 минут
UP!

Мне все еще нужен работающий кусочек кода, а не ссылка на официальный сайт одного из ORM! пли-и-из!
Ну очень надо! помогите "стартануть" технологию!
Вопрос: Библиотека для android-разработчиков

Всем доброго времени суток.
Хотел бы представить мою библиотеку, при помощи которой я хотел бы упростить разработку android-приложений.

Подробно можно посмотреть тут:

Естественно, доступна в jcenter и подключается через градл:

Code
1
compile 'com.aizenberg:support:0.1.3'
Кратко, что она умеет:
  • Переключение фрагментов (очистка стэка, передача аргументов)
  • Лёгкий Event Bus
  • Cache
  • Настраиваемые логи
  • Итерация и фильтрация по Map<>
  • GeoLocation
  • Набор различных утилит (String, Network listener, Validation etc)

Стали бы ли вы ей пользоваться?
Что бы вы хотели ещё видеть в такой библиотеке?

Спасибо за внимание.
Ответ:
Сообщение от YuraAAA
Но тормозить работу они не будут
Всегда есть "косвенные" тормоза!

У меня на телефоне критически не хватает памяти на внутренней флешке! 20-40 программ и на следующую просто не хватает места... Уже забыл когда игрушки ставил... Даже на тест очередной мелкой утилиты иногда не хватает места - качается с плея, а потом пишет "нет места на установку" (на внутренней флешке). А эта либа еще 50-100кб добавляет(если не будет расти)... из тех что нельзя перенести на флешку внешнюю...

К тому-же при запуске это все должно ЗАГРУЗИТЬСЯ в память для работы (если правильно понимаю на основе того что выучил в винде), а значит И здесь лишние потери...

И лишние проблемы в скачивании программы через медленный мобильный интернет (сельский = с плохой связью).

И при отладке каждый лишний мегабайт забирает "полезную" секунду на каждой установке (а когда когда разработчику их надо сделать сотню-две в день - это убивает нервы)

Кликните здесь для просмотра всего текста
Как уже говорил, Лог-кет для меня "больная тема"! Много лет назад (больше 10) я писал ОЧЕНЬ сложный проект. Именно математика/логика сложная! Обычных логов в текстовик явно не хватало! Распечатывал и искал ошибки в 5ти-6ти страчичных 2х-3х столбцовых A4-отчетах мелким шрифтом... Начал менять под себя инструменты... Сейчас с трудом обхожусь СИЛЬНО модифицированным ЛогКет(все ранее перечисленное и даже больше). И все равно иногда этого мало. На делфи написал программу на основе перехвата ЛогКет - шикарно работает (но сам протокол ЛогКэт оказался не стабильным - иначе бы давно сделал общедоступной и возможно коммерческой, возможно когда-нибудь изучу сокеты на андроиде и реанимирую проект...)

так вот...когда-то в Делфи сэкономил почти мегабайт на каждой программе вынеся ВСЕ логи из ЕХЕ во внешнюю программу с доступом через ДЛЛ. Убирал DLL из папки и программа становилась "релизом". Сейчас по той-же технологии пытаюсь пойти... Пишу "внешнюю" утилиту для отладчика - она ретранслирует логи и является "ключом" для использования логов вообще... Кстати это дало довольно интересные возможности... счетчики компиляций по проектам (когда за какой проект брался, какая версия рабочая, хоть график работы с проектом), внешний запуск тестов, флайку "с прошлой компиляции прошло", флайку с мини-логами (удобнее Тост-ов), активация WiFi ADB, запись лог-кет в файл/базу для анализа работы в "длительных" оффлайн и много чего другого...
...может через несколько месяцев похвастаюсь...
Вопрос: SqlConnection на android

Здравствуйте.
У меня нет опыта разработки под Android. Задача: запустить на android приложение, которое будет выполнять запросы к web серверу - получать ответы и отсылать данные в базу MSSQL через внешний ip.
Подскажите: реализуемо ли это? Существуют ли классы для работы с базой данных и с web - сервером для android ?
Какие могут возникнуть сложности при реализации такого?
Может кто нибудь выложить helloworld проект для android под VS работающий с web ?
Ответ:
Сообщение от VoltDeMar
Может кто нибудь выложить helloworld проект для android под VS работающий с web ?
Если хотите писать натив под андроид используя VS - тогда только используя платформу xamarin и язык C#. (учтите что xamarin платный, с бесплатной версией вы не получите всю долю нужного для комфортной разработки функционала) Для вас наверное все таки посоветую изучить Java и работать в Android Studio (она бесплатная).

Сообщение от VoltDeMar
Как называются классы для работы с базой данных и с web - сервером для android ?
Работа с веб - на уровне http запросов. Самый легки вариант написать обычный REST сервис и передавать данные в формате json
Вопрос: Добавить библиотеку в Android Studio

Мне нужно добавить библиотеки для работы с файлами XLS. Нашел описание работы
Делаю так:
  1. кидаю файлы в папку Мой_проект\app\libs\
  2. захожу в File\Progect Strucrure\app\Dependencies\
  3. + File dependencies
Файлы добавляются. Но библиотеки эти не видит:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
Ответ:
Сообщение от YuraAAA
Worldmen, покажите build.gradle файл
build.gradle файл:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile files('libs/poi-3.10.jar')
    compile files('libs/poi-ooxml-3.10-FINAL-20140208.jar')
}
Добавлено через 11 часов 43 минуты
На другом компе похоже получилось

Добавлено через 20 часов 45 минут
Еще нужно в файл build.gradle добавить
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
в раздел android