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

Belov.V.

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

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

  • Посещение

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

    6

Весь контент Belov.V.

  1. Вот по такому принципу http://stackoverflow.com/questions/10386885/intent-filter-intent-getdata-returns-null Но у меня Extras пустой JBandle возвращает.
  2. Сделал не через подписку, а через событие запуска или вывода приложения из спящего режима. Регистрация на обработку файла по типу через <intent-filter> в AndroidManifest.xml Как писал выше, метод через подписку не сработает, если приложение на момент создания Intent системой не было запущено. Полную реализацию обязательно выложу, вот только бы до файла добраться.
  3. Вопрос в продолжение темы. Добрался до получении файла или пути к нему: var uri : Jnet_Uri; uriStr : String; .... begin ... if TJIntent.JavaClass.ACTION_VIEW.equals(intent.getAction) then begin uri := intent.getData; uriStr := JStringToString(intent.getData.getEncodedPath); Не могу вытащить содержимое. Из uri или uriStr разными способами getPath, toString или через JURIToStr() ) можно вытащить строку двух видов (для примера событие активировалось из почтового приложения): content: //...../messages/2687/attachments/0.1/BEST/false или /<почтовый профиль>/messages/2687/attachments/0.1/BEST/false Ни пути ни такого файла из приложения не находится. Extras тоже пустой. Как из intent.getData получить контент? Кто мысль подкинет.?
  4. Все же путь подписи на получение широковещательную рассылку кмк не верный, т.к. приложение может быть не запущено, а событие в системе уже произошло (к примеру проводится вызов для обработки файла, полученного по почте, а приложение на событие не подписано, т.к. на момент вызова не запущено). В любом случае проверил - приложение активируется (или запускается, или выводится из бека), т.к. зарегистрировано через <intent-filter>. При этом рассылка TMessageResultNotification не поступает. Приведенный выше пример о другом - это вариант обмена данными между своими приложениями. Возможно я что-то не так понимаю. :-(
  5. Ярослав, спасибо! Эту тему смотрел, но попробую еще раз покрутить. У меня почему то TMessageResultNotification.Value всегда неопределенный возвращался (и оба *Code всегда нулевые). В результате из него ничего, кроме вылетания приложения получить не удавалось. Как минимум, если точно делается широковещательная рассылка TMessageResultNotification направление копания понятно.
  6. Приложение зарегистрировано для обработки файла по типу через файл манифеста (неявное намерение). <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/xml" /> </intent-filter> В списке выбора появляется. Как корректно в приложении получить содержание Intent (имя файла, путь)? Пробовал реализовать через подписку на получение сообщения на изменение статуса приложения: TMessageManager.DefaultManager.SubscribeToMessage(TApplicationEventMessage, DoApplicationEventChanged); При этом событие вызвавшее активацию определить можно, но вот как добраться до Intent не пойму: procedure TForm1.DoApplicationEventChanged(const Sender: TObject; const Message: TMessage); var Intent : JIntent; app_data : TApplicationEventData; begin if not(Message is TApplicationEventMessage) then exit; app_data := TApplicationEventMessage(Message).Value; case app_data.Event of FinishedLaunching, BecameActive : .... end; end; Что-то застрял я на этом. Как вообще добраться до открывшего приложение Intent? Если реализовывать через IFMXApplicationEventService вопрос в итоге такой же. Если есть описание реализации аналогичного функционала для iOS, буду благодарен.
  7. "... процесс передачи двух событий: картинка+текст в постороннее приложение" Возможно вопрос все же не про два Intent, а как написано выше про Exstra? Если к примеру для отправки по e-mail, то текст и присоединенный файл можно. Вот тут пример реализации: http://fire-monkey.ru/topic/698-otpravka-failov-cherez-namerenie/?p=4918
  8. BurcevD, да вроде как все в вашем примере работает. По крайне мере проверил для 'txt' и 'jpg', сохранив рабочий файл в: // Path file aFileName := TPath.Combine(TPath.GetSharedDownloadsPath, 'sample-temp.jpg');
  9. Путем поисков и мучений: uses FMX.Helpers.Android, // Androidapi.IOUtils, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.Net, Androidapi.JNI.Os; ... var Intent : JIntent; uri : Jnet_Uri; j_file : JFile; f_name : string; ... begin // имя пересылаемого файла f_name := 'picture.png'; // файл должен быть сохранен по пути: Androidapi.IOUtils.getExternalFilesDir // или тоже самое: GetPublicPath // К примеру: ...SaveToFile(TPath.Combine(TPath.GetPublicPath, f_name)); Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_SEND); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString('....')); // тема, если нужно Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString('....')); // текст сообщения, если нужно // прикрепляем файл j_file := SharedActivity.getExternalFilesDir(StringToJString(f_name)); uri := TJnet_Uri.JavaClass.fromFile(j_file); Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,TJParcelable.Wrap((uri as ILocalObject).GetObjectID)); Intent.setType(StringToJString('vnd.android.cursor.dir/email')); // SharedActivity.startActivity(Intent); end; Как приаттачить файл по любому другому пути не знаю.
  10. Уважаемый Ra72, мне кажется Вы ушли в неверную сторону при поиске решения, пытаясь подписывать приложение отладочным ключем. Используя свой ключ Вы можете создавать приложения как в режиме «Debug», так и в режиме «Application Store». То, какое приложение «билдится», Вы определяется в «Build Configurations». А то, каким ключом приложение подписывается Вы устанавливаете в «Target Platforms - Android… - Configuration (Debug или Application store)». Для решения задачи совместной работы на разных устройствах, сформируйте свой ключ подписи. Разместите его на стационарный ПК и ноутбук. Установите в «Target Platforms - Android… - Configuration = «Application store». Далее Вы можете менять в «Build Configurations» тип приложения (следите, первый раз меняются синхронно). При этом обе создаваемые версии (Debug и Release) существуют на андроиде в списке приложений независимо. !!!Но вот если нужен режим отладки, то тут да, кроме как использовать debug.keystore другого я способа я не знаю.
  11. Я сделал как выше описал и пока успокоился. На MacOS 10.10 и 9.5 работает. Для меня временно задача решена.
  12. Belov.V.

    Частицы 3D

    По face tracking на FireMonkey ничего интересного не попадалось?
  13. Wamaco, решение пока одно - отказаться от xcode 6.2 Все что мы описывали с невидимостью SDK iOS 7.1 относится именно к этой версии. 1) удаляем xcode 6.2; 2) устанавливаем xcode 6.1.1; 3) скачиваем на мак SDK iOS 7.1; 4) теперь RAD для симулятора увидит две версии SDK, но!... можно в RAD установить только одни SDK 8.1 Где-то в документации попадалось, что xcode 6 сам выбирает нужную версию SDK, а так как он пока в симуляторе 8.1 с PAServer-ом не дружит, всегда переключает на симуляцию iOS 7.1 (выше про такой эффект писали); В итоге в симуляторе всегда IOS 7.1, а в iOS Devices нормально собираются приложения под iOS 8; ... и ждем обновлений....
  14. Wamaco, ошибка в логе. Я в сообщении выше лог запуска "прицепил", сравни с тем что у тебя. Скорее всего тоже самое. Почему SDK только один, тоже в конце есть. Как исправить пока не знаю.
  15. Плюсую по проблеме запуска приложения в симуляторе. Первый раз столкнулся с выходом 6-го xCode. Те же приложения на xCode 5 в симуляторе запускались без ошибки. От версии SDK у меня результат не зависил (пробовал и 7 и 8). Откатился на xCode 5. Другого решения не искал, т.к. было не критично, решил что баг шестерки и его быстро поправят. Сейчас новое железо с OS X 10.10.2, xCode 6.2 (5-ку не поставить), установлены SDK iOS 8.2 и iOS 7.1. Проблему получил снова. В логах симулятора 8.2 при запуске простейшего приложения вот такая диагностика: Кстати, с версиями SDK в 6.2 что-то тоже интересное. Почитал обсуждение выше и решил установить симуляторе iOS 7.1 Скачал, установил, все перезапустил, в эмуляторе 7.1 появилось. Но PAServer SDK iOS 7.1 не видит (RAD естественно тоже). Проверил через консоль: MBP:$ /usr/bin/xcodebuild -version -sdk | grep SDKVersion SDKVersion: 10.9 SDKVersion: 10.10 SDKVersion: 8.2 SDKVersion: 8.2 Или: Где-то он в общем «потерялся»
  16. А если обработчик повесить на каждый итем при его создании и для каждого не забыть установить HitTest. Что-то типа: i := ListBox.Items.Add('Ваше содержание...'); ListBox.ListItems.HitTest := True; ListBox.ListItems.OnApplyStyleLookup := Self.Doapplys; (Возможно из описания не совсем понял постановку задачи, но примерно то что выше у меня работает)
  17. С удалением строк из Button2Click, после изменения TSearchBox (не важно, в каком состоянии его оставить), тоже ошибки начинают возникать. Причем там вообще жестко. Помогает тупое передергивание значение фильтра, пусть даже он был пустой: var s : string; begin ListBox1.Items.Delete(0); // s := SearchBox1.Text; SearchBox1.Text := s+'`'; SearchBox1.Text := s; end; Примерно таким путем можно бороться с ошибкой при добавлении итемов (убрать сортировку, добавить итем, дернуть фильтр, последняя строка наша добавленная, восстанавливаем состояние на момент "до добавления"), но как-то все это.... стыдновато за такой код. :-(
  18. Индекс в отфильтрованном не возвращает ни в каком варианте. - Если список не упорядочен (ListBox1.Sorted:=False), то возвращается индекс последнего добавленного по порядку (0,1,2,3 и т.д.). Из вопроса выше - 2-й вариант. - Если список упорядочить (ListBox1.Sorted:=True), по возвращается индекс в упорядоченном списке. Тут вроде все корректно работает. Но это варианты с сортировкой. Если же мы устанавливаем значение TSearchBox, который действительно в данном случае выступает как фильтр, то при добавлении нового итема, вне зависимости от того попадает в фильтр или нет, всегда получаем "-1". В общем-то для упрощения я указал в п.3 (Очищаем TSearchBox). При пустом фильтре все равно "-1". ListBox1.Count тоже начинает "глючить". Не показывает верное значение, пока повторно не установишь /сбросишь значение в TSearchBox. Пробовал после использования TSearchBox вообще этот объект "убивать". Все равно последствия его применения остаются.
  19. Столкнулся с такой ситуацией. 1) Заполняем TListBox; 2) Пользуемся поиском через TSearchBox; 3) Очищаем TSearchBox; 4) При попытке добавить любой новый элемент в TListBox, всегда возвращается индекс добавленного элемента "-1". Накидал пример для экспериментов, упростив до безобразия (прикрепляю). Как восстановить возможность получать индекс добавленного элемента? Project1.zip
×
×
  • Создать...