Kitty Опубликовано 22 апреля, 2014 Поделиться Опубликовано 22 апреля, 2014 Здравствуйте. В новом С++ Builder XE6 появилась возможность программировать под Андроид. Опыта в этом нет. Подскажите, пожалуйста, как получить путь к файлу в Андроид проекте? Код для Windows приложения не работает в Андроид проекте: String path = ExtractFilePath(Application->ExeName) + L"\\files.ini"; if(FileExists(path)) { //**** } Спасибо. Ссылка на комментарий
0 konung Опубликовано 22 апреля, 2014 Поделиться Опубликовано 22 апреля, 2014 Я так понимаю - вам надо получить путь к каталогу где "лежит" само приложение для сохранение конфигов и т.п. Для эти целей воспользуйтесь GetHomePath. Однако учтите, что доступ к данному каталогу (если телефоне не root-ован) имеет только сама ваша программа (ну естественно и ось и т.п.). Т.е. зайти туда (без рута) вы не сможете. Для хранения настроек программы, ресурсов - это вполне удобно. Однако для логов, или выгрузки результатов работы - лучше определить для себя иной каталог. Brovin Yaroslav 1 Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 22 апреля, 2014 Модераторы Поделиться Опубликовано 22 апреля, 2014 Прочитайте эту тему на форуме: Включение своих файлов в приложение Для сохранения логов, отладочной информации можно использовать открытые для доступа папки вашего приложения, которые при удалении приложения также удаляются и не оставляют мусора, подробности вы можете найти в этой статье: Deployment Manager или куда ещё можно задеплоить файлы А здесь (в комментариях), я объясняю, почему не стоит создавать папки в корне карты памяти: Обновляем файл базы данных без перезапуска приложения Brovin Yaroslav 1 Ссылка на комментарий
0 Kitty Опубликовано 22 апреля, 2014 Автор Поделиться Опубликовано 22 апреля, 2014 Большое спасибо, буду изучать. delete Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 22 апреля, 2014 Модераторы Поделиться Опубликовано 22 апреля, 2014 Пожалуйста, прочитайте внимательно правила форума. Ссылка на комментарий
0 Kitty Опубликовано 24 апреля, 2014 Автор Поделиться Опубликовано 24 апреля, 2014 Что-то не доходит до меня. Подсоединила планшет с Андроид к RAD XE6, все нормально. Включила отладку по USB. Теперь пытаюсь в режиме debug на планшете увидеть путь к папке с документами: void __fastcall TForm1::Button3Click(TObject *Sender) { //почему-то точки останова не срабатывают Label1->Text = System::Ioutils::TPath::GetDocumentsPath();//стоит точка останова } После нажатия на кнопку вижу на экране планшета какой-то странный путь: /data/data/com.embarcadero.MobProjectHelloWord/files Если поменять GetDocumentsPath на GetHomePath, то получаю тот же путь; /data/data/com.embarcadero.MobProjectHelloWord/files Я хочу разместить на планшете файл INI, иметь к нему доступ и периодически иметь возможность менять этот файл простым копирование поверх. Если я скопирую файл INI на планшете в папку Андроида documents, то как правильно обратиться к этой папке? Созданное приложение будет использоваться во внутренних корпоративных целях (никаких маркетов). Спасибо. Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 24 апреля, 2014 Администраторы Поделиться Опубликовано 24 апреля, 2014 Ini файл будет создаваться самим приложением? Ссылка на комментарий
0 Kitty Опубликовано 24 апреля, 2014 Автор Поделиться Опубликовано 24 апреля, 2014 Ini файл будет создаваться самим приложением? Нет. INI файл готовый. В нем периодически руками будут менять некоторые данные в секциях (time/name) и после замены копировать поверх старого INI. INI: [FILE1] time = 10:00:00 name = file1.mp4 [FILE2] time = 12:00:00 name = file2.mp4 *** Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 24 апреля, 2014 Модераторы Поделиться Опубликовано 24 апреля, 2014 Для вашей ситуации: Добавляем файл «settings.ini» в «Deployment Manager», в столбце «Remote Path» для нашего файла прописываем путь «.\assets\», после установки приложения на устройство, этот файл будет лежать в папке «/storage/emulated/0/Android/data/<application ID>/files». Получить быстрый доступ к этой папке можно при помощи «TPath.GetSharedDocumentsPath». Соответственно в коде(на Delphi) путь до файла будет выглядеть так: TPath.Combine(TPath.GetSharedDocumentsPath, 'settings.ini'); в случае если вы используете папку отличную от стандартных, т.е. создали папку вручную на карте памяти, то и полный путь до неё придётся прописывать вручную Ссылка на комментарий
0 konung Опубликовано 24 апреля, 2014 Поделиться Опубликовано 24 апреля, 2014 2 Kitty Если я не ошибаюсь, то класс TIniFile на мобилках не поддерживается. Или свой обработчик надо сделать, или сторонний взять. (вот тут что-то писали об этом http://francois-piette.blogspot.be/2014/01/tinifile-for-android-and-windows.html). Если я не прав - поправьте. Что до пути - то да. это путь, где разворачивается программа. И, повторюсь, удобнее хранить ini-шники (если приходится их перезаливать или править руками) в иной папке (до хоть в документах или еще где). Конечно - надо учитывать, что при удалении программы останется этот ini-шный "мусор". Ссылка на комментарий
0 Kitty Опубликовано 24 апреля, 2014 Автор Поделиться Опубликовано 24 апреля, 2014 Спасибо за рекомендации. У меня все же еще такой вопрос. Вот на устройстве Андроид есть к примеру папка Music или к примеру Download. Эти папки по умолчанию присутствуют в прошивке этого Андроид устройства. Каким кодом я могу увидеть в метке Label1 путь к этим папкам? Например музыкальный фал лежит в папке Music, как из моего приложения достучаться до него? P.S. после установки приложения на устройство, этот файл будет лежать в папке «/storage/emulated/0/Android/data/<application ID>/files». Можно ли как-то поработать с файлом INI на эмуляторе (для тестирования) или только это возможно после развертывания на реальной устройстве? Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 24 апреля, 2014 Администраторы Поделиться Опубликовано 24 апреля, 2014 Если я не ошибаюсь, то класс TIniFile на мобилках не поддерживается. Или свой обработчик надо сделать, или сторонний взять. (вот тут что-то писали об этом http://francois-piette.blogspot.be/2014/01/tinifile-for-android-and-windows.html). Если я не прав - поправьте. Ошибаетесь, TIniFile работает везде. Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 24 апреля, 2014 Администраторы Поделиться Опубликовано 24 апреля, 2014 http://docwiki.embarcadero.com/Libraries/XE5/en/System.IOUtils.TPath P.S. Просьба в будущем на каждый отдельный вопрос заводить отдельную тему. Так как вопрос был вначале об одном, а теперь поменялся на другой. Другим пользователям будет сложно найти на него ответ Ссылка на комментарий
0 Kitty Опубликовано 24 апреля, 2014 Автор Поделиться Опубликовано 24 апреля, 2014 http://docwiki.embarcadero.com/Libraries/XE5/en/System.IOUtils.TPath P.S. Просьба в будущем на каждый отдельный вопрос заводить отдельную тему. Так как вопрос был вначале об одном, а теперь поменялся на другой. Другим пользователям будет сложно найти на него ответ Спасибо. У меня в первом топике было как "получить путь к файлу в Андроид проекте?" Вроде я не отклонилась от темы. Разве что еще уточняла можно ли поработать с INI на эмуляторе, но это тоже путь к файлу, только не на реальном устройстве. Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 24 апреля, 2014 Администраторы Поделиться Опубликовано 24 апреля, 2014 Таким образом можно ошибочно посчитать, что любой вопрос в теме Андроид является не отклонением от правил. Если не трудно, заведите отдельным вопросом - вопрос про системные папки - музыка, документы и тд. Чтобы другие смогли быстро найти ответ. Ссылка на комментарий
0 Kitty Опубликовано 24 апреля, 2014 Автор Поделиться Опубликовано 24 апреля, 2014 Понятно. Ссылка на комментарий
0 konung Опубликовано 24 апреля, 2014 Поделиться Опубликовано 24 апреля, 2014 Если я не ошибаюсь, то класс TIniFile на мобилках не поддерживается. Или свой обработчик надо сделать, или сторонний взять. (вот тут что-то писали об этом http://francois-piette.blogspot.be/2014/01/tinifile-for-android-and-windows.html). Если я не прав - поправьте. Ошибаетесь, TIniFile работает везде. Сорри. Буду знать Ссылка на комментарий
Вопрос
Kitty
Здравствуйте.
В новом С++ Builder XE6 появилась возможность программировать под Андроид. Опыта в этом нет. Подскажите, пожалуйста, как получить путь к файлу в Андроид проекте? Код для Windows приложения не работает в Андроид проекте:
Спасибо.
Ссылка на комментарий
16 ответов на этот вопрос
Рекомендуемые сообщения