• 0
Вадим Шавров

Импорт/экспорт БД

Вопросы

Приветствую. Как реализовать экспорт БД из программы, расположенной по адресу:

 2018-05-03_10-13-53.thumb.png.d54695ef94f679b521d16ee2d1a0450d.png

Т.е. чтобы выводилось стандартное андройдовское окно (см. скрин), как во многих приложениях при нажатии на кнопку "поделится", и там допустим можно было бы эту базу залить на Яндекс.Диск.

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

Можно ли это как-то реализовать?

1666241421_Screenshot__Android_20180503-100223.thumb.png.38c7751efaf3516ff7ea7cfc7fdf930e.png

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


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

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

  • 2

Вот так:

procedure ShareFile(aFileName, aComment : String);
{$IFDEF ANDROID}
var Intent    : JIntent;
    uri       : Jnet_Uri;
    AttachmentFile: JFile;
    S : String;
{$ENDIF ANDROID}
begin
{$IFDEF ANDROID}
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  S:=TPath.GetFileName(aFileName);
  Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(aComment));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(aComment));
  AttachmentFile := TJFile.JavaClass.init(StringToJString(aFileName));
  Uri := TJnet_Uri.JavaClass.fromFile(AttachmentFile);
  Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID));
  Intent.setType(StringToJString('text/plain'));
//  Intent.setDataAndType(StrToJURI('file:' + TPath.Combine(TPath.GetSharedDownloadsPath, 'picture.png')), StringToJString ('image/png'));
  SharedActivity.startActivity(Intent);
{$ENDIF ANDROID}
end;

Из давнего проекта, возможно нужно будет подправить согласно сообщениям компилятора.

P.S. И файл должен находится в общедоступной папке (к примеру TPath.GetSharedDocumentsPath)

Изменено пользователем Евгений Корепов

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


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

Да, конечно. Что то из этих, лишнее уберите:

  Androidapi.JNI.Webkit,
  FMX.Platform.Android,
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNIBridge,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.Net,
  Androidapi.JNI.Os,
 

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


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

Вроде бы ошибок нет, а как правильно её вызывать?

ShareFile('storage/emulated/0/Documents/data.db', ???);

aFileName - это полный путь к файлу или только название "data.db'?

aComment - а это я вообще не понимаю для чего :(

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 минут назад, Вадим Шавров сказал:

Вроде бы ошибок нет, а как правильно её вызывать?

ShareFile('storage/emulated/0/Documents/data.db', ???);

aFileName - это полный путь к файлу или только название "data.db'?

aComment - а это я вообще не понимаю для чего :(

Конечно полный путь, откуда иначе функция узнает какой файл отправлять?

AComment - комментарий, типа "Это файл №199 из такого то приложения, служит для того то". Но никто не заставляет вас его писать.

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

И убедитесь в существовании файла перед его отправкой.

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


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

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

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

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

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

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

Войти

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

Войти

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

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