-
Постов
53 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Активность репутации
-
-
WebPuper отреагировална Ingalime в переход к x64?
Это выйдет в виде новой версии студии в середине этого года.
-
WebPuper получил реакцию от Ingalime в Ошибка при отладке Cannot Deploy
Причиной оказалось, что в Deploy убирал галочки с PNG иконок Android_Launcher
-
WebPuper отреагировална Tumaso в Ошибка при отладке Cannot Deploy
Вместе с этим окном еще выдается и диалоговое окно с детализацией ошибки.
Рекомендации, указанные на скриншоте, проверены? Свободное место на телефоне есть?
Еще перед заливкой новой версии можно вручную удалить с телефона ранее установленную версию приложения
-
WebPuper получил реакцию от Anatoliy в Переход на новую модель разрешений
Если кому-то потребуется, то код для C++, как я сделал
_di_JActivity activity = TAndroidHelper::Activity; TJavaObjectArray__1<_di_JString> *Recipients = new TJavaObjectArray__1<_di_JString>(1); Recipients->Items[0] = StringToJString("android.permission.READ_EXTERNAL_STORAGE"); Recipients->Items[1] = StringToJString("android.permission.WRITE_EXTERNAL_STORAGE"); activity->requestPermissions(Recipients,0);
-
WebPuper отреагировална Евгений Корепов в Разрешения для приложения не вступают в силу на Android
Вот как то так, на базе штатного примера:
Такс, я малость лопухнулся, это пример я уже под карнавал переделал, работать на токио и остальных версиях не будет. Так что я его удалил. Поищите по форуму - уже неоднократно обсуждалась тема.
-
WebPuper получил реакцию от Yarpda в Механизм работы с APK Extension file (OBB)
В FMX, насколько я смог удостовериться, нет нормальных директив чтобы работать с OBB. Видимо посчитали это излишним, т.к. по сути речь идет о работе с обычной файловой системой.
После распаковки приложения в каталоге внешнего хранилища (карты или, если нет, внутренней памяти) Android/obb/<application ID>/ появится файл дополнений с расширением *.obb
Это обычный архив ZIP и его можно распаковать, например, в GetDocumentsPath средствами TZipFile
Проблема в том, что в FMX нет процедуры возвращающей путь к файлу obb.
Пришлось написать костыль:
UnicodeString GetObbFile() { UnicodeString str = StringReplace(System::Ioutils::TPath::GetPublicPath(), "/data/", "/obb/", TReplaceFlags()); str = StringReplace(str, "/files", "/", TReplaceFlags()); TSearchRec sr; FindFirst(str + "*.obb", faAnyFile, sr ); return str + sr.Name; } Теперь у вашего приложения есть путь к единственному obb
-
WebPuper получил реакцию от Barbanel в Механизм работы с APK Extension file (OBB)
В FMX, насколько я смог удостовериться, нет нормальных директив чтобы работать с OBB. Видимо посчитали это излишним, т.к. по сути речь идет о работе с обычной файловой системой.
После распаковки приложения в каталоге внешнего хранилища (карты или, если нет, внутренней памяти) Android/obb/<application ID>/ появится файл дополнений с расширением *.obb
Это обычный архив ZIP и его можно распаковать, например, в GetDocumentsPath средствами TZipFile
Проблема в том, что в FMX нет процедуры возвращающей путь к файлу obb.
Пришлось написать костыль:
UnicodeString GetObbFile() { UnicodeString str = StringReplace(System::Ioutils::TPath::GetPublicPath(), "/data/", "/obb/", TReplaceFlags()); str = StringReplace(str, "/files", "/", TReplaceFlags()); TSearchRec sr; FindFirst(str + "*.obb", faAnyFile, sr ); return str + sr.Name; } Теперь у вашего приложения есть путь к единственному obb
-
WebPuper получил реакцию от Anatoliy в Не работает OverWrite в Deployment
Либо прямо в коде сделать временную процедуру для этого дела с DeleteFile ? (я так делаю)
-
WebPuper получил реакцию от Anatoliy в [Android] Событие FormCloseQuery не останавливает закрытие приложения
Решил через анализ события FormKeyUp
if(Key == vkHardwareBack) Key = 0;
-
WebPuper отреагировална Kitty в Открыть ссылку
Дополнительно найдено:
#if defined(__ANDROID__) #include <Androidapi.JNI.JavaTypes.hpp> #include <Androidapi.JNI.GraphicsContentViewText.hpp> #include <Androidapi.JNI.Net.hpp> #include <Androidapi.Helpers.hpp> #include <FMX.Helpers.Android.hpp> #elif defined(__APPLE__) #include <iOSapi.Foundation.hpp> #include <Macapi.Helpers.hpp> #include <FMX.Helpers.iOS.hpp> #elif defined(MSWINDOWS) #include <shellapi.h> endif bool __fastcall OpenURL(const String &AURL) { #if defined(__ANDROID__) _di_JIntent Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW, TJnet_Uri::JavaClass->parse(StringToJString(AURL))); try { SharedActivity()->startActivity(Intent); return true; } catch (const Exception &) { return false; } #elif defined(__APPLE__) _di_NSURL NSU = StrToNSUrl(AURL); if (SharedApplication()->canOpenURL(NSU)) return SharedApplication()->openURL(NSU); else return false; #elif defined(MSWINDOWS) SHELLEXECUTEINFOW sei = {0}; sei.cbSize = sizeof(sei); sei.lpFile = AURL.c_str(); sei.nShow = SH_SHOWNORMAL; return ShellExecuteEx(&sei); #else return false; #endif } void __fastcall TForm1::Text1Click(TObject *Sender) { OpenURL(L"http://fire-monkey.tu"); }
-
WebPuper получил реакцию от Anatoliy в [Android] [XE7] Ошибка класса ENotImplemented
struct TCloseDialogHandler :public TCppInterfacedObject<TInputCloseDialogProc> { void __fastcall Invoke(const System::Uitypes::TModalResult AResult) { switch (AResult) { case mrYes : ShowMessage("You chose Yes"); break; case mrNo: ShowMessage("You chose No"); break; case mrCancel: ShowMessage("You chose Cancel"); break; } } }; void __fastcall TForm1::SpeedButtonClick(TObject *Sender) { _di_TInputCloseDialogProc handler =new TCloseDialogHandler(); MessageDlg(L"Внимание! Здесь вопрос?", TMsgDlgType::mtConfirmation, TMsgDlgButtons() << TMsgDlgBtn::mbYes << TMsgDlgBtn::mbNo, 0, handler ); }
- Рабочий пример использования MessageDlg на C++ с использованием анонимной процедуры.
-
WebPuper получил реакцию от Anatoliy в Решение Segmentation fault(11). Или "Axe beats in the balls"
Может кому-то поможет. Дело касается Builder C++:
У меня порой возникала ошибка Segmentation fault при старте приложения из-за явного несоответствия типа переменной типу её значения.
Особенно это касается всех глобальных переменных. Например
UnicodeString Str = 14; ; - компилятор C++ не ругается, но приложение вылетало при старте. (в Delphi не проверял).
-
WebPuper получил реакцию от Евгений Корепов в Поиск и выделение текста на Html странице
Для Windows, я использую стандартное окно поиска для браузера:
void __fastcall TForm1::ShowSearchBrowser(TCppWebBrowser *WB) { const GUID CGID_IWebBrowser = {0xed016940, 0xbd5b, 0x11cf, {0xba, 0x4e, 0x0, 0xc0, 0x4f, 0xd7, 0x08, 0x16}} ; LPDISPATCH lpDispatch = WB->ControlInterface->get_Document(); //получаешь интерфейс на документ if(lpDispatch) { IOleCommandTarget* pcmd=NULL; if( SUCCEEDED(lpDispatch->QueryInterface(IID_IOleCommandTarget,(void**)&pcmd) ) ) //запрашиваешь интерфейс для выполнения команд { //если интерфейс успешно получен, то pcmd->Exec(&CGID_IWebBrowser, HTMLID_FIND, 0, NULL, NULL); //выполняешь команду pcmd->Release(); //освобождаешь ресурсы } lpDispatch->Release(); //освобождаешь ресурсы } }
-
WebPuper получил реакцию от Anatoliy в Поиск и выделение текста на Html странице
Для Windows, я использую стандартное окно поиска для браузера:
void __fastcall TForm1::ShowSearchBrowser(TCppWebBrowser *WB) { const GUID CGID_IWebBrowser = {0xed016940, 0xbd5b, 0x11cf, {0xba, 0x4e, 0x0, 0xc0, 0x4f, 0xd7, 0x08, 0x16}} ; LPDISPATCH lpDispatch = WB->ControlInterface->get_Document(); //получаешь интерфейс на документ if(lpDispatch) { IOleCommandTarget* pcmd=NULL; if( SUCCEEDED(lpDispatch->QueryInterface(IID_IOleCommandTarget,(void**)&pcmd) ) ) //запрашиваешь интерфейс для выполнения команд { //если интерфейс успешно получен, то pcmd->Exec(&CGID_IWebBrowser, HTMLID_FIND, 0, NULL, NULL); //выполняешь команду pcmd->Release(); //освобождаешь ресурсы } lpDispatch->Release(); //освобождаешь ресурсы } }
-
WebPuper получил реакцию от Anatoliy в Перейти на якорь уже загруженной страницы
Если кто-то ищет ответ на данный вопрос под Android, то я всегда использовал такое решение (С++):
WebBrowser1->EvaluateJavaScript("window.location.assign(\"#"+ yakor +"\")");