Как перенести полученный DeepLink (FB SDK) из метода onDeferredAppLinkDataFetched в переменную активности?

Всем привет! Я использую глубокие ссылки из FB (обычные и отложенные), ловлю их в методе onDeferredAppLinkDataFetched, в логах все выводиться - супер! Теперь я хочу поработать с этой глубокой ссылкой, но не могу достать ее из этого метода. Как я прочитал AppLinkData.CompletionHandler работает в асинхронном потоке может это натолкнет на идеи. Спасибо заранее!! Вот код:

private static final String URL_TEST_BINOM = "https://***********************";
private String UrlBinomDeepLink = "1";
SharedPreferences mSettings;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_network);
    
    myWebView = findViewById(R.id.browsec);
    myWebView.setWebViewClient(new MyWebViewClient());
    
    FacebookSdk.setAutoInitEnabled(true);
    FacebookSdk.fullyInitialize();
    FacebookSdk.setAutoLogAppEventsEnabled(true);
    AppLinkData.fetchDeferredAppLinkData(this,
            new AppLinkData.CompletionHandler() {
                @Override
                public void onDeferredAppLinkDataFetched(AppLinkData deferredDeepLink) {
                    Uri uri = deferredDeepLink == null
                            ? AppLinks.getTargetUrlFromInboundIntent(Chrome.this, getIntent())
                            : deferredDeepLink.getTargetUri();
                    if (uri != null) {
                        UrlBinomDeepLink = URL_TEST_BINOM + uri.getQuery();
                        Log.d("DEBUG_FACEBOOK_SDK",""+uri.getQuery());
                        
                    } else Log.d("DEBUG_FACEBOOK_SDK", "AppLinkData is Null");

                }
            }
    );
    myWebView.loadUrl(UrlBinomDeepLink);
    System.out.println(UrlBinomDeepLink);

Ответы (2 шт):

Автор решения: Barmaley Red Star

Есть еще более тупой способ нежели предложенный @EugeneKrivenja

Примерно так:

private Uri deepLink = null;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_network);
    
    myWebView = findViewById(R.id.browsec);
    myWebView.setWebViewClient(new MyWebViewClient());
    
    FacebookSdk.setAutoInitEnabled(true);
    FacebookSdk.fullyInitialize();
    FacebookSdk.setAutoLogAppEventsEnabled(true);
    AppLinkData.fetchDeferredAppLinkData(this,
            new AppLinkData.CompletionHandler() {
                @Override
                public void onDeferredAppLinkDataFetched(AppLinkData deferredDeepLink) {
                    Uri uri = deferredDeepLink == null
                            ? AppLinks.getTargetUrlFromInboundIntent(Chrome.this, getIntent())
                            : deferredDeepLink.getTargetUri();
                    if (uri != null) {
                        UrlBinomDeepLink = URL_TEST_BINOM + uri.getQuery();
                        Log.d("DEBUG_FACEBOOK_SDK",""+uri.getQuery());
                        deeplink = uri; //"пишем" диплинк
                    } else Log.d("DEBUG_FACEBOOK_SDK", "AppLinkData is Null");

                }
            }
    );
    myWebView.loadUrl(UrlBinomDeepLink);
    System.out.println(UrlBinomDeepLink);
→ Ссылка
Автор решения: Ratit Matarit

Не знаю можно ли это считать полноценным ответом, но для ваших действий это вполне подойдет:

private String url;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_network);
       
        myWebView = findViewById(R.id.browsec);
        myWebView.setWebViewClient(new MyWebViewClient());

        FacebookSdk.setAutoInitEnabled(true);
        FacebookSdk.fullyInitialize();
        AppLinkData.fetchDeferredAppLinkData(this,
                new AppLinkData.CompletionHandler() {
                    @Override
                    public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {
                        if(appLinkData != null) {
                            url = appLinkData.getTargetUri(); 
                            loadURL();
                        }
                    }
                }
        );
        
        private void loadURL() {
            myWebView.loadUrl(url);
        }
}

Определенно это костыли, но, если на данный момент вы еще не можете осилить более сложные методики реализации, то такой вариант вам подойдет. Метод в методе, но начинать нужно с асинхронного.

→ Ссылка