diff --git a/src/jni/jni_descriptors.cpp b/src/jni/jni_descriptors.cpp index fb41d614..305f7590 100644 --- a/src/jni/jni_descriptors.cpp +++ b/src/jni/jni_descriptors.cpp @@ -123,6 +123,7 @@ BEGIN_NATIVE_DESCRIPTOR(MainActivity){Constructor{}}, {Function<&MainActivity::requestIntegrityToken>{}, "requestIntegrityToken"}, {Function<&MainActivity::launchUri>{}, "launchUri"}, {Function<&MainActivity::share>{}, "share"}, + {Function<&MainActivity::shareFile>{}, "shareFile"}, {Function<&MainActivity::openFile>{}, "openFile"}, {Function<&MainActivity::saveFile>{}, "saveFile"}, {Function<&MainActivity::setClipboard>{}, "setClipboard"}, diff --git a/src/jni/main_activity.cpp b/src/jni/main_activity.cpp index 5b959060..df7e0441 100644 --- a/src/jni/main_activity.cpp +++ b/src/jni/main_activity.cpp @@ -17,6 +17,7 @@ #include "uuid.h" #include #include +#include #include #include "../core_patches.h" @@ -207,6 +208,21 @@ void MainActivity::share(std::shared_ptr title, std::shared_pt } } +void MainActivity::shareFile(std::shared_ptr title, std::shared_ptr string, std::shared_ptr path) { + auto picker = FilePickerFactory::createFilePicker(); + picker->setMode(FilePicker::Mode::SAVE); + picker->setTitle(title->asStdString()); + std::string pathStr = path->asStdString(); + picker->setFileName(pathStr.substr(pathStr.find_last_of("/\\") + 1)); + if(picker->show()) { + std::ifstream src(pathStr, std::ios::binary); + std::ofstream dst(picker->getPickedFile(), std::ios::binary); + dst << src.rdbuf(); + src.close(); + dst.close(); + } +} + FakeJni::JInt MainActivity::getCaretPosition() { ignoreNextHideKeyboard = false; if(textInput) { @@ -372,7 +388,7 @@ void MainActivity::setLastChar(FakeJni::JInt sym) { } void MainActivity::lockCursor() { - CorePatches::hideMousePointer(); + CorePatches::hideMousePointer(); } void MainActivity::unlockCursor() { diff --git a/src/jni/main_activity.h b/src/jni/main_activity.h index b31c0519..d2156b0d 100644 --- a/src/jni/main_activity.h +++ b/src/jni/main_activity.h @@ -209,6 +209,7 @@ class MainActivity : public NativeActivity { void launchUri(std::shared_ptr); void share(std::shared_ptr, std::shared_ptr, std::shared_ptr); + void shareFile(std::shared_ptr, std::shared_ptr, std::shared_ptr); std::shared_ptr> getBroadcastAddresses() { return std::make_shared>(); }