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

Права на запись


Alexander Samosyuk

Вопрос

Доброго времени суток!

Столкнулся с проблемой установки прав на запись после перехода на 10.4. В 10.3.3 все работало как часы, а теперь пишет, что доступ к мультимедиа есть, но с приложения ничего на SD карту не могу запись, т.к. обрабатывается исключение об отсутствии прав. Помогите

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

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

  • 0

var
  PERMITWRITEEXT, PERMITINTERNET,PERMITREADEXT: string;
begin
{$IFDEF ANDROID}
  PERMITWRITEEXT := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
  PermissionsService.RequestPermissions([PERMITWRITEEXT], nil, ExplainReason);
{$ENDIF}

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

Если в манифесте есть     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

то все должно работать!

Context.getExternalFilesDir(String) и Context.getExternalCacheDir() в эти каталоги должно и без разршения записывать если API 19 или выше!

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

В манифесте все есть, но не пишет. До API 29 на XE 10.3.3 все работало, а после обновления с ноября не могу новую версию в маркет выложить. А мне нужна запись на карту как кровь из носа.

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

Изменено пользователем Alexander Samosyuk
Ссылка на комментарий
  • 0

Да, появляется. Пермиты в настройках приложения видны, но записать не дает. Бред какой-то если честно. Даже в пустом новом приложении не пишет

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

Ну все правильно дайте на чтение также разрешение, соответственно и в манифесте также


  FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
  FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
 


  PermissionsService.RequestPermissions([ FPermissionReadExternalStorage, FPermissionWriteExternalStorage], nil);

 

Изменено пользователем OnePeople
Ссылка на комментарий
  • 0
1 час назад, Alexander Samosyuk сказал:

Текстовый файл записывает,а вот bmp через image.Bitmap.SaveToFile() не хочет. Пишет что невозможно сохранить bmp

 

Ну пишите сразу код, а то не понятно куда вы записываете, что в bitmap и т.д.

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

TDirectory.CreateDirectory('/storage/emulated/0/3D Мебель: Расчет');
      FinalyDir := '/storage/emulated/0/3D Мебель: Расчет/Проект № ' + AppForm.Order.OID;
      TDirectory.CreateDirectory(FinalyDir);
      while TFile.Exists(TPath.Combine(FinalyDir, 'Вид ' + I.ToString + '.png')) do
        inc(I);
      Viewport.MakeScreenshot.SaveToFile(TPath.Combine(FinalyDir, 'Вид ' + I.ToString + '.png'), @SaveParams);

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

TDirectory.CreateDirectory(IncludeTrailingPathDelimiter('/storage/emulated/0/3D Мебель: Расчет'));

TDirectory.CreateDirectory(IncludeTrailingPathDelimiter(FinalyDir));  

 

Проверьте создаются ли папки?

 

TDirectory.ForceDirectories('/storage/emulated/0/3D Мебель: Расчет/Проект № ' + AppForm.Order.OID) вернет true если все хорошо

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

Вопрос решен. Папки создавались, но запись в них не шла. Причиной появления ошибок является символ ":" в имени папки. При его удалении функционал вернулся. Спасибо за помощь

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

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

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

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

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

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

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

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

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

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

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