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

OnePeople

Пользователи
  • Постов

    363
  • Зарегистрирован

  • Посещение

  • Победитель дней

    64

Весь контент OnePeople

  1. Ну так у вас ошибка вам нужно android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION для запроса на конкретное приложение, а android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION это меню для всех. Intent := TJIntent.JavaClass.init; Intent.setAction(StringToJString('android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION')); TAndroidHelper.Activity.startActivity(Intent); для всех Intent := TJIntent.JavaClass.init; Intent.setAction(StringToJString('android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION')); Intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName))); TAndroidHelper.Activity.startActivity(Intent); Для вашего приложения
  2. В Delphi есть метод для проверки разрешений и ContextCompat не нужен PermissionsService.IsEveryPermissionGranted
  3. try if TJBuild_VERSION.JavaClass.SDK_INT >= 30 then begin if TJEnvironment.JavaClass.isExternalStorageManager = false then begin Intent := TJIntent.Create; Intent:= TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName))); if intent.resolveActivity(TAndroidHelper.Context.getPackageManager) <> nil then TAndroidHelper.Context.startActivity(Intent); end; end; except end; if TJBuild_VERSION.JavaClass.SDK_INT <= 29 then begin FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); PermissionsService.RequestPermissions([FPermissionReadExternalStorage] + [FPermissionWriteExternalStorage], nil); end;
  4. Ну так количество строк то не меняется, меняется отображение этих строк. Код не мой function MeasureTextHeight(const AFont: TFont; const AText: string): Single; var LLayout: TTextLayout; begin LLayout := TTextLayoutManager.DefaultTextLayout.Create; try LLayout.BeginUpdate; try LLayout.WordWrap := False; LLayout.Font.Assign(AFont); LLayout.Text := AText; finally LLayout.EndUpdate; end; Result := LLayout.TextHeight; finally LLayout.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var LTextHeight: Single; LLines: Integer; begin LTextHeight := MeasureTextHeight(Memo1.TextSettings.Font, Memo1.Text); LLines := Round(Memo1.ContentBounds.Height / LTextHeight); end;
  5. Это набор компонентов, которые кешируются и отрисовываются из кэша, грубо говоря. Все работает очень плавно. Наберите в поиске alcinoe github и почитайте.
  6. <uses-permission android:name="android.permission.RECEIVE_SMS" /> BroadcastReceiver SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
  7. Для длинных списков или ListView или alcinoe и делать ListBox с их компонентами. Или попробуйте добавить Skia и включить их отрисовку.
  8. Ну для начала сделайте так varMyItem:TListViewItem;begin ListView1.ApplyStyleLookup;MyItem :=Listview1.Items.Add;MyItem.Data['Text1']:='MyData'; if MyItem.index mod 2 = 0 then TListItemText(MyItem.Objects.FindDrawable('Text1')).TextColor := TAlphaColorRec.Gold else TListItemText(MyItem.Objects.FindDrawable('Text1')).TextColor := TAlphaColorRec.Black;end; Но update тоже надо
  9. По имени TListItemText(MyItem.Objects.FindDrawable('Text1')).TextColor := AppSettings.TextGeneralColor; По номеру в списке элементов дизайнера item TListItemText(MyItem.Objects.Drawables[0]).Font.Style := [TFontStyle.fsBold];
  10. Возможно, как пример про NotificationListner Service https://stackoverflow.com/questions/27962192/is-it-possible-to-read-the-notifications-of-other-applications-on-android-with-d
  11. Только через AccessibilityService
  12. Ну так это и есть чистая нативная платформа. компонент BluetoothLE написан также. Только тут вы делаете все так, как говорит вам гугл, и избегаете ошибок embarcadero. Браться за android и не уметь писать по справке гугл, то еще занятие, рано или поздно придется.
  13. https://github.com/android/connectivity-samples/tree/master/BluetoothLeGatt/Application/src/main/java/com/example/android/bluetoothlegatt https://habr.com/ru/post/536392/
  14. Я бы не использовал их компоненты Bluetooth. Используйте стандартные рекомендации google.
  15. Проверьте на наличие символов #13 на windows и android они немного по разному переносятся, может у вас там типо такого точно не помню как именно, но например #13 в windows не переносит так как нет #10, а в android переносит, hex редактором проверьте, точно не помню но есть такая байда
  16. Не знаю как вы смотрели, цвет фона кисть selection, только смотрите чтобы цвет был с прозрачностью иначе букв не будет видно
  17. Отправьте скрин stylebook editor, что то мне кажется что у вас платформа там windows 10 выбрана
  18. В filename ни чего писать не надо, открываете stylebook, там выбираете нужный стиль, главное смотрите чтобы платформа в stylebook editore была та которая вам нужна или default. Зависает при вводе filename, потому что разрешения на чтение и запись не запросили и файла нет по указанному пути.
  19. А у вас какая версия rad studio? Да и в любом случае добавьте сами в скопируйте в папке проекта Androidapi.JNI.Provider, затем добавьте туда в класс JSettingsClass = interface(JObjectClass) {class} function _GetACTION_APP_OPEN_BY_DEFAULT_SETTINGS: JString; cdecl; ... {class} property ACTION_APP_OPEN_BY_DEFAULT_SETTINGS: JString read _GetACTION_APP_OPEN_BY_DEFAULT_SETTINGS;
  20. А может надо у браузера попробывать сбросить настройки по умолчанию? Ну вам нужно проверить привязан ли домен к вашему приложению и если нет отправить запрос на открытие настроек где пользователь сможет вручную привязать домен к приложению. Код верификации транслировать не могу rad studio старая. Вызов настроек: Intent := TJIntent.Create; Intent:= TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS); intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName))); TAndroidHelper.Context.startActivity(Intent); Есть еще вариант вообще не привязывать именно домен, а сделать приложение универсальным для открытия ссылок, а уже в приложении проверять домен.
  21. Ну у вас в настройках sdk API-Level location версии 26, а был наверное 29 и выше вот ошибки и небыло
  22. Нигде в деплоймент не указана внешняя память ??????? Вообще то requestLegacyExternalStorage это параметр у вас в AndroidManifest.xml
  23. android-26 requestLegacyExternalStorage в Added in API level 29
×
×
  • Создать...