• 0
Юрий Гусач

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

Вопросы

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 ответов на этот вопрос

  • 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

видимо особенности аппарата, в вопросе пишите сразу какое железо и можно сразу версию андроид

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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. У меня на DEXP Ursus gx180 аналогично - через Total comander вижу, а через USB нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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
);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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