-
Постов
69 -
Зарегистрирован
-
Посещение
-
Победитель дней
6
Весь контент Belov.V.
-
Вот по такому принципу http://stackoverflow.com/questions/10386885/intent-filter-intent-getdata-returns-null Но у меня Extras пустой JBandle возвращает.
- 10 ответов
-
Сделал не через подписку, а через событие запуска или вывода приложения из спящего режима. Регистрация на обработку файла по типу через <intent-filter> в AndroidManifest.xml Как писал выше, метод через подписку не сработает, если приложение на момент создания Intent системой не было запущено. Полную реализацию обязательно выложу, вот только бы до файла добраться.
- 10 ответов
-
Вопрос в продолжение темы. Добрался до получении файла или пути к нему: 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 получить контент? Кто мысль подкинет.?
- 10 ответов
-
Все же путь подписи на получение широковещательную рассылку кмк не верный, т.к. приложение может быть не запущено, а событие в системе уже произошло (к примеру проводится вызов для обработки файла, полученного по почте, а приложение на событие не подписано, т.к. на момент вызова не запущено). В любом случае проверил - приложение активируется (или запускается, или выводится из бека), т.к. зарегистрировано через <intent-filter>. При этом рассылка TMessageResultNotification не поступает. Приведенный выше пример о другом - это вариант обмена данными между своими приложениями. Возможно я что-то не так понимаю. :-(
- 10 ответов
-
Ярослав, спасибо! Эту тему смотрел, но попробую еще раз покрутить. У меня почему то TMessageResultNotification.Value всегда неопределенный возвращался (и оба *Code всегда нулевые). В результате из него ничего, кроме вылетания приложения получить не удавалось. Как минимум, если точно делается широковещательная рассылка TMessageResultNotification направление копания понятно.
- 10 ответов
-
[Android] Обработка приложением неявного намерения (Intent)
Belov.V. опубликовал вопрос в Намерения (Intent)
Приложение зарегистрировано для обработки файла по типу через файл манифеста (неявное намерение). <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, буду благодарен.- 10 ответов
-
"... процесс передачи двух событий: картинка+текст в постороннее приложение" Возможно вопрос все же не про два Intent, а как написано выше про Exstra? Если к примеру для отправки по e-mail, то текст и присоединенный файл можно. Вот тут пример реализации: http://fire-monkey.ru/topic/698-otpravka-failov-cherez-namerenie/?p=4918
-
Путем поисков и мучений: 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; Как приаттачить файл по любому другому пути не знаю.
- 23 ответа
-
- JIntent
- ACTION_SEND
-
(и ещё 1 )
C тегом:
-
Уважаемый 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 другого я способа я не знаю.
-
По face tracking на FireMonkey ничего интересного не попадалось?
- 3 ответа
-
- Генерация частиц
- Particles
-
(и ещё 2 )
C тегом:
-
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; ... и ждем обновлений....
-
Плюсую по проблеме запуска приложения в симуляторе. Первый раз столкнулся с выходом 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 Или: Где-то он в общем «потерялся»
-
А если обработчик повесить на каждый итем при его создании и для каждого не забыть установить HitTest. Что-то типа: i := ListBox.Items.Add('Ваше содержание...'); ListBox.ListItems.HitTest := True; ListBox.ListItems.OnApplyStyleLookup := Self.Doapplys; (Возможно из описания не совсем понял постановку задачи, но примерно то что выше у меня работает)
-
С удалением строк из Button2Click, после изменения TSearchBox (не важно, в каком состоянии его оставить), тоже ошибки начинают возникать. Причем там вообще жестко. Помогает тупое передергивание значение фильтра, пусть даже он был пустой: var s : string; begin ListBox1.Items.Delete(0); // s := SearchBox1.Text; SearchBox1.Text := s+'`'; SearchBox1.Text := s; end; Примерно таким путем можно бороться с ошибкой при добавлении итемов (убрать сортировку, добавить итем, дернуть фильтр, последняя строка наша добавленная, восстанавливаем состояние на момент "до добавления"), но как-то все это.... стыдновато за такой код. :-(
-
Индекс в отфильтрованном не возвращает ни в каком варианте. - Если список не упорядочен (ListBox1.Sorted:=False), то возвращается индекс последнего добавленного по порядку (0,1,2,3 и т.д.). Из вопроса выше - 2-й вариант. - Если список упорядочить (ListBox1.Sorted:=True), по возвращается индекс в упорядоченном списке. Тут вроде все корректно работает. Но это варианты с сортировкой. Если же мы устанавливаем значение TSearchBox, который действительно в данном случае выступает как фильтр, то при добавлении нового итема, вне зависимости от того попадает в фильтр или нет, всегда получаем "-1". В общем-то для упрощения я указал в п.3 (Очищаем TSearchBox). При пустом фильтре все равно "-1". ListBox1.Count тоже начинает "глючить". Не показывает верное значение, пока повторно не установишь /сбросишь значение в TSearchBox. Пробовал после использования TSearchBox вообще этот объект "убивать". Все равно последствия его применения остаются.
-
Столкнулся с такой ситуацией. 1) Заполняем TListBox; 2) Пользуемся поиском через TSearchBox; 3) Очищаем TSearchBox; 4) При попытке добавить любой новый элемент в TListBox, всегда возвращается индекс добавленного элемента "-1". Накидал пример для экспериментов, упростив до безобразия (прикрепляю). Как восстановить возможность получать индекс добавленного элемента? Project1.zip