Перейти к содержанию
  • 0
fredhack

Как получить URL из браузера запущенного через Intent (намеренье)

Вопросы

Доброго времени суток подскажите пожалуйста как мне получить ссылку из браузера запущенного через intent в общем суть такова:

1 запускаю браузер через интент с сылкой http://fire-monkey.ru

2 на ссылке происходит редирект

3 я попадаю на http://fire-monkey.ru/forum/

Как получить последнюю ссылку после редиректа? в данном случае она равна http://fire-monkey.ru/forum/

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setData(StrToJURI('http://fire-monkey.ru'));
  SharedActivity.startActivity(Intent);
end;

 

Поделиться сообщением


Ссылка на сообщение

Рекомендуемые сообщения

Ответы на этот вопрос пока отсутствуют

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От Евгений Корепов
      Для одного своего проекта сделал, поделюсь, вдруг кому пригодится. Тестировал под Windows и Android.
      Для использования просто добавьте BitmapAsyncLoader в uses, а дальше все просто:
      ImageControl.Bitmap.LoadFromURLAsync('https://bipbap.ru/wp-content/uploads/2017/10/0_8eb56_842bba74_XL-640x400.jpg'); Код юнита хелпера:
      unit BitmapAsyncLoader; interface uses FMX.Graphics, System.Net.HttpClient, System.Types, System.Classes; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromUrlAsync(const AUrl : String); end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then TThread.Synchronize(Nil, procedure begin try Self.LoadFromStream(AHTTPResponse.ContentStream); except end; end ); end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then begin AHTTPClient.DisposeOf; end; end. Архив с тестовым проектом прилагаю.
      BitmapAsyncLoader.7z
    • От A. Sharif
      Возможно ли с помощью intent получить от какого-либо из официальных приложений Вконтакте/Фейсбук/Инст/Google access-token (через кол-бэк метод)?
      Предусматривается ли данная возможность этими приложениями? Если кто делал - приведите, пожалуйста, пример получения результата. 
    • От Wovan2
      Здравствуйте.
      Пишу на Delphi 7. И все было нормально пока не у нас не появился терминал сбора данных на Androide. На Delphi 10 написал простенькое приложение. Но тут встала проблема с занесением данных в поле ввода со сканера штрихкода. В инете нашел, что это дело просто решается интентами. Вообще в windows я подобное делал: вешал процесс, следящий за com-портом, и при появлении данных на нем пересылал их куда надо. В Android должно быть не сложнее. Но я запутался во всей этой куче параметров и функций, передаваемых и получаемых "намерениями".
      В общем вот что мы имеем на данный момент.
      В настройках сканера прописано:
       
      Intent output - android.intent.ACTION_DECODE_DATA Intent string extra - barcode_string На просторах нашел запуск BroadcastReceiver.
      На событие получения сообщения повесил 
      ed.Text := JStringToString(csIntent.getExtras.getString(TJIntent.JavaClass.EXTRA_INTENT)); где csIntent параметр из  BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent); Но ничего не выходит. 
      Я подозреваю, что данные из сканера где-то в структуре csIntent. Но, к сожалению, в отладке дальше адреса этой переменной пробраться не получилось.
      Причем строка ed.Text := JStringToString(csIntent.getAction); возвращает в Text название интента: "android.intent.ACTION_DECODE_DATA".
      Помогите разобраться со структурой JIntent. Спасибо.
       
       
    • От x11
      Нет ли у FMX готовой функции для открытия веб-ссылок из приложения?
      А то приходится городить огород с лисапетами и кучей IFDEF.
      В итоге что у меня получилось.
      Для удобства разнес все по разным модулям.
      Модуль для Windiws
      unit uUtilsWindows; interface {$IFDEF MSWINDOWS} uses ShellApi, Variants, Windows, FMX.Types, FMX.Platform.Win; procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); {$ENDIF} implementation {$IFDEF MSWINDOWS} procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); begin ShellExecute(FmxHandleToHWND(WindowHandle), 'open', PChar(VarToStr(sURL)), nil, nil, SW_NORMAL); end; {$ENDIF} end.  
      Модуль для Android
      unit uUtilsAndroid; interface {$IFDEF ANDROID} uses FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText, AndroidApi.Helpers; procedure AndroidOpenUrl(const sUrl: string); {$ENDIF} implementation {$IFDEF ANDROID} procedure AndroidOpenUrl(const sUrl: string); Var Uri: Jnet_Uri; OpenLinkIntent: JIntent; begin Uri := StrToJURI(sUrl); OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);// будем что-то смотреть OpenLinkIntent.addCategory(TJIntent.JavaClass.CATEGORY_BROWSABLE);// смотреть в браузере OpenLinkIntent.setData(Uri);// смотреть эту ссылку SharedActivity.startActivity(OpenLinkIntent);// открываем end; {$ENDIF} end.  
      теперь в основной форме:
      uses ..., ...{$IFDEF ANDROID}, vkbdhelper, uUtilsAndroid{$ENDIF} {$IFDEF MSWINDOWS}, uUtilsWindows {$ENDIF}; ... ... ... procedure TfmEditObject.actOpenUrlExecute(Sender: TObject); begin {$IFDEF ANDROID}AndroidOpenUrl(edMapsCoordUrl.Text);{$ENDIF} {$IFDEF MSWINDOWS}WindowsOpenUrl(edMapsCoordUrl.Text, Self.Handle);{$ENDIF} end;  
      А если добавлять ещё одну платформу, то ещё один модуль понадобится.
      Может есть более правильный вариант, так сказать, дизайна исходного кода?
       
    • От Rustam Bikeev
      Здравствуйте. Пришла беда откуда не ждал, Delphi 10.2 не знает библиотеки androidapi.... FMX.Helpers.... и тд и тп. И никак не получается их установить, либо я тупой либо я даже незнаю что может быть. фалы *.dcu лежат в папке ...\lib\android\release.
      Помогите решить проблему очень нужно использовать намерения. уже и переустанавливал платформу android не помогает.

    • От AlexShaman
      procedure TfMain.PhotoClick(Sender: TObject); var sPath,FLastPhotoName:string;   {$IF DEFINED(ANDROID)}   PhotoIntent: JIntent;   photoUri: Jnet_Uri;   JFileName: JFile;   {$ENDIF} begin   {$IF DEFINED(ANDROID)}   FLastPhotoName := '';   FLastPhotoFullName := '';   FMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification, HandleActivityMessage);   PhotoIntent := TJIntent.JavaClass.init(TJMediaStore.JavaClass.ACTION_IMAGE_CAPTURE);   if (PhotoIntent.resolveActivity(TAndroidHelper.Context.getPackageManager()) <> nil) then   begin     FLastPhotoName := THashMD5.GetHashString('JPEG PHOTO FILE ' + DateTimeToStr(Now)) + '.jpg';     FLastPhotoFullName := TPath.Combine(TPath.GetSharedDocumentsPath, FLastPhotoName);     JFileName := TJFile.JavaClass.init(StringToJString(FLastPhotoFullName));     photoUri := TJnet_Uri.JavaClass.fromFile(JFileName);     PhotoIntent.putExtra(TJMediaStore.JavaClass.EXTRA_OUTPUT,         TJParcelable.Wrap((photoUri as ILocalObject).GetObjectID));     if PhotoIntent.resolveActivity(TAndroidHelper.Activity.getPackageManager) <> nil then       TAndroidHelper.Activity.startActivityForResult(PhotoIntent, REQUEST_IMAGE_CAPTURE);   end;   {$ENDIF}  
      Приложение камеры открывается, фото делается, но при закрытии приложение вылетает
      В логах ошибки
      java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.embarcadero.test/com.embarcadero.firemonkey.FMXNativeActivity}: java.lang.NullPointerException
       
    • От ENERGY
      Подскажите пожалуйста как определить что программа запустилась из AlarmManager?
      Я сделал это так, по аналогии с http://stackoverflow.com/questions/6751564/how-to-pass-a-boolean-between-intents
      В Java коде, который компилиться в итоге в classes.dex (с XE7 не нужен DEX файл, можно подключить Jar файл сразу к проекту!), добавил строчку
      public class AlarmReceiver extends BroadcastReceiver {
          public void onReceive(Context context, Intent intent) {
                  Intent TestLauncher = new Intent();                        
                  TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity");
                  TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                  TestLauncher.putExtra("StartedFromAM", true);
                  context.startActivity(TestLauncher);
          }
      }
      По идее теперь при старте из AlarmManager, должно быть true в активити.
      Из Delphi пытаюсь получить это значение, но всегда возвращает false (0). 
       ShowMessage(SharedActivity.getIntent.getBooleanExtra(StringToJString('StartedFromAM'), false).ToString );
      И вот так тоже:
      ShowMessage ( MainActivity.getIntent.getBooleanExtra(StringToJString('StartedFromAM'), false).ToString);
      Не подскажете в чем может быть проблема?

       
    • От Pax Beach
      В Android 6 на Berlin 10.1.1 перестала работать стандартная функция TakePhotoFromCameraAction.

      Иногда работает, иногда нет.
      Поэтому я решил написать нативную замену этой функции. За основу взят пример с портала разработчиков Android.
      Мой пример про видео на базе отправки Intetn смартфону и получение результата в виде другого Intent, отлично работает.
      Но для фотографий этот пример сыпется, после выполнения фотографирования система возвращается в мое приложение и оно вылетает с ошибкой:
      Если заглянуть в исходнки, там все обвязано сообщениями в лог монитора. Последнее сообщение «+ Intent is sent».
      Помогите пожалуйста разобраться, в чем может быть проблема?
       
      PhotoIntent.zip
    • От Pax Beach
      Знающие люди, подскажите пожалуйста, как в iOS одно приложение может запустить другое приложение, как передать картинку в другое приложение, готовое его принять, как при запуске обрабатывать в своем приложении параметры, переданные из другого приложения?
      В Android для этого есть механизм Intent Filter, а как это устроено в iOS, и как с этим работать в RAD Studio?
       
    • От Pax Beach
      Я хочу запустить приложение из другого приложения под iOS и под Android. В зависимости от переданного параметра, который я хочу получить в главной форме, будет открываться соответствующая стартовому параметру форма (Activity в Android).
      Пример: Из приложения "Папа" запустить приложение "Дочка", при этом сообщив "Помой посуду!". И чтобы приложение "Дочка" сообщила "Хорошо, папа" и открыло форму "Мойка посуды". ))) Как ее решить на разных платформах?
      В Windows это делается запуском приложения с соответствующими параметрами, в зависимости от их значения из проекта или главной формы открывается нужная форма.
      В Android для этого сделаны Intent фильтры. Только не понятно, как их обрабатывать в приложениях, написанных в Delphi. Вот как вы это сделали бы?
      И как такое делается в приложениях под iOS, естественно, тоже написанных на Delphi или С++.
       
      UPD 14-09-2016:
      Для Android решение найдено.
      Осталось найти решение для iOS.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...