Перейти к содержанию
Fire Monkey от А до Я
  • 0

Файлы созданные в Delphi программе на планшете не видны на компьютере


Юрий Гусач

Вопрос

Пожалуйста проясните ситуацию: Delphi программа, работая на планшете Android, создает файлы и пишет их в каталог Documents на внешнюю карту,

Путь к каталогу получаю функцией System.IOUtils.TPath.GetSharedDocumentsPath.   Файлы - это текстовые файлы, созданные TStringStream.SaveToFile.

Файлы видны  в диспетчере файлов планшета и  их содержимое планшетом вполне нормально  читается.

Подключаю планшет к компьютеру, их компьютер не видит. Вытаскиваю карточку из планшета и вставляю в CardReader на компе. Теперь компьютер через CardReader их на карте видит, файлы вполне читаются и копируются.     

В каких настройках и где проблема? 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Видимо разрешения на этот файл выставляются такие. Посмотрите на устройстве Свойства - Разрешения этого файла через программу Total Comander. Скорее всего нет прав на чтение Остальным

Ссылка на комментарий
  • 0

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

А зачем тебе жужжать если ты не пчела? :)

Попробуй в GetSharedDownloadsPath сохранить, там должно быть видно.

Ссылка на комментарий
  • 0

только что сохранил и в GetSharedDownloadsPath() и в GetSharedDocumentsPath(), и там и там все доступно для чтения из USB накопителя

и в описании разница небольшая: 

Returns the path to the directory where user stores shared downloaded files.

Returns the path to the directory where documents shared between users are stored.

 

Ссылка на комментарий
  • 0
7 минут назад, Камышев Александр сказал:

только что сохранил и в GetSharedDownloadsPath() и в GetSharedDocumentsPath(), и там и там все доступно для чтения из USB накопителя

и в описании разница небольшая: 

Returns the path to the directory where user stores shared downloaded files.

Returns the path to the directory where documents shared between users are stored.

 Ау меня не видны ни там ни там... 

Ссылка на комментарий
  • 0

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

На одних планшетах файлы записанные таким образом видны через USB, а на других нет. Как сделать так чтобы у пользователя программы не было проблем.

Никто ведь заранее не знает, какой у него будет конкретный планшет или смартфон.

Я в данном случае работаю c DEXP Ursus TS-170.  Android 5.0.  

Изменено пользователем Юрий Гусач
Ссылка на комментарий
  • 0

это MTP в андроиде так работает

пока не будет рескана, MTP не выдает вновь созданные файлы

Я смотрю это через AirDroid

Ссылка на комментарий
  • 0
1 час назад, Юрий Гусач сказал:

в каталог Documents на внешнюю карту,

Путь к каталогу получаю функцией System.IOUtils.TPath.GetSharedDocumentsPath.

вот отсюда поподробней, почему GetSharedDocumentsPath указывает на внешнюю карту, это в настройках?

Ссылка на комментарий
  • 0

 

14 минут назад, Камышев Александр сказал:

вот отсюда поподробней, почему GetSharedDocumentsPath указывает на внешнюю карту, это в настройках?

Я лично сам ничего в этом смысле не настраивал :).  Но в справке Embarcadero написано для Андроида :

If device has external storage (for example, SD card), this method returns path name inside external storage.

If device has no external storage, this method returns somewhere inside internal storage.

Прикольно, то что я подключил смартфон Samsung J3 там каталога Documents я вообще не нашел.  То что файловый менеджер отнес к документам находится в каталоге .../Downloads 

Однако все равно спасибо! Буду разбираться с документацией на Андроид.

 

Ссылка на комментарий
  • 0

у меня на планшете есть SD, но GetSharedDocumentsPath указывает на папку Documents в корне somewhere inside internal storage :)

и да, пока хотя бы одно приложение не обратится по этому пути, папки такой не будет, она появляется после первого обращения, точнее первой записи

Ссылка на комментарий
  • 0
13 минут назад, Камышев Александр сказал:

у меня на планшете есть SD, но GetSharedDocumentsPath указывает на папку Documents в корне somewhere inside internal storage :)

и да, пока хотя бы одно приложение не обратится по этому пути, папки такой не будет, она появляется после первого обращения, точнее первой записи

Я так понял, что каталог такой надо активно создавать, если его там нет, так как я и обнаружил что его нет, по тому что Андроид меня послал при попытке туда записать файл.

:):):) Создается впечатление, что программы написанные на RAD Studio для Андроида иногда работают. Если бы где нибудь узнать методику написания программ,

которые работают хотя бы почти везде и почти всегда. Пишу программы для работы с внешней аппаратурой. Месяц наверно, как связался с Андроидом.

А еще ругали DOS, что он плохой. Вот райская жизнь была :):):) 

Разберемся конечно, всегда раньше разбирались,

Изменено пользователем Юрий Гусач
Ссылка на комментарий
  • 0

внешний накопитель может быть защищен от записи, это будет ошибка да, еще при включенном режиме USB накопителя может не быть доступа

папка Documents была создана при вызове SaveToFile у TStringList, когда я пытался эмулировать Вашу ситуацию на своем планшете, до того ее не было

псс, а что еще живы программисты под DOS? :D  столько не живут...

Изменено пользователем Камышев Александр
Ссылка на комментарий
  • 0
1 минуту назад, Камышев Александр сказал:

внешний накопитель может быть защищен от записи, это будет ошибка да

папка Documents была создана при вызове SaveToFile у TStringList, когда я пытался эмулировать Вашу ситуацию на своем планшете, до того ее не было

псс, а что еще живы программисты под DOS? :D  столько не живут...

:) Живут, и нас еще много и DOS мы пережили на очень много лет. Программирование на ассемблере под DOS, это был просто праздник какой-то! Sorry за оффтоп.:)

Защиту проверю. В принципе направление поиска понятно, огромное спасибо, Буду разбираться 

 

Ссылка на комментарий
  • 0

Что еще можно добавить, так это то, что на этом планшете файлы, созданные планшетным Word-ом, видны через USB без каких то особых усилий.

Ассоциации вызывает такой случай: На этом планшете, вызов текстового ввода  подвешивал систему. А на других устройствах все работало. Исправление вручную файла дельфийского файла  FMX.Platform.Android.pas( исправление было взято из форума StackOverflow и есть и на этом форуме) полностью решило проблему. Т.е. не конкретный планшет был виноват.  

Пока  несколько часов усилий не дали особых результатов. После каких-то манипуляций файлы, созданные часа два назад, показались через USB. Те что записаны только что, по прежнему через USB не видно.

Пробовал запись в каталоги /Downloads, /Pictures, /Documents. Все то же.

Samsung смартфон при этом работает адекватно. 

3 часа назад, krapotkin сказал:

это MTP в андроиде так работает

пока не будет рескана, MTP не выдает вновь созданные файлы

Я смотрю это через AirDroid

Sorry за  глупый вопрос, рескан когда происходит?

ЗЫ

Дело в том, что мы пишем файлы получаемые от приборов, и пока приходится вытаскивать карточку из планшета, втыкать ее в кардридер на компе, сливать данные и опять вставлять в планшет. Это надо делать б.м. часто. Эксперимент идет. Легче бы по человечески через USB. Сбор сигналов через Bluetooth, программирование Фурье преобразования , визуализация кривых и все в реальном времени и т.п. отняло намного меньше нервов чем эта хрень с видимостью файлов. Обидно, да... :):):)  На компе под Виндой давно все работает, но заказчику надо на  планшете.

Изменено пользователем Юрий Гусач
Ссылка на комментарий
  • 0

Это не DEXP это вся платформа. Точно по сериям (MTKxxxx и т.п.) ессно не скажу. Но из стартового поста непонятно, в чем проблема читать их другим образом, не через проводник?

 

Ссылка на комментарий
  • 0
1 час назад, krapotkin сказал:

Это не DEXP это вся платформа. Точно по сериям (MTKxxxx и т.п.) ессно не скажу. Но из стартового поста непонятно, в чем проблема читать их другим образом, не через проводник?

 

Если в проводнике их не видно, то как еще их можно увидеть?

Ссылка на комментарий
  • 0
В 04.10.2016 в 14:41, krapotkin сказал:

это MTP в андроиде так работает

пока не будет рескана, MTP не выдает вновь созданные файлы

Я смотрю это через AirDroid

AirDroid - замечательная программка must have

Ссылка на комментарий
  • 0

Заинтересовала тема, накидал тестовое приложение. Действительно затык в MTP. Причем не только Dexp, но и HTC ведет себя так же. В маркете даже есть приложения выполняющие рескан sd-карты для таких случаев.

Так что или вариант предложенный krapotkin, или доставлять данные из андроид-приложения на компьютер другим образом - база данных, хост-приложение на компьютере и доставка посредством tcp(http, ftp and etc...)

Ссылка на комментарий
  • 0

Решено!!!!
 Чтобы файлы стали видны  в проводнике телефона и далее ими можно было делиться и перекидывать на комп, а также чтобы они стали видны другим приложениям необходимо всего-то при создании файла  указывать права доступа линукс.

 На билдере для мультиплатформы я сделал так

 

fileHandle=FileCreate(FileName
#ifndef WIN32
,S_IRWXU|S_IRWXG|S_IRWXO
#endif
);

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...