вызов схемы из JS (веб-браузера) для активности Android не обновляет намерение данными схемы в строке URL - PullRequest
0 голосов
/ 11 октября 2019

Я запускаю свое приложение из браузера, и если оно еще не загружено / не запущено, оно запускает приложение через onCreate, собирает intent.data и делает правильные действия. Если приложение уже запущено, то запуск приложения из браузера обходит onCreate и переходит к onResume, что, как я полагаю, является ожидаемым поведением. Но intent.data, связанный с запуском из браузера, является нулевым. Я надеялся, что данные о намерениях будут перезаписаны новыми данными о намерениях из строки URL схемы, чтобы я мог повторно запустить веб-просмотр внутри приложения с новыми параметрами. Есть ли способ, которым я могу вставить эти новые данные в приложение, когда оно запускается (то есть возобновляется) браузером?

// Код браузера JS с аргументами, которые должны быть переданы приложению.

var r = Math.random();
window.open("myScheme://caca.com/?mode=driver" + "&ec=" + ec + "&uh=" + $("#userHandle").val() + "&at=0" + "&random=" + r);

// Xamarin

onResume(...) {

    ...

    try
    {

        // currentActivity.Intent.Data != null if app is not already running
        // is null if already running

        Android.Net.Uri data = currentActivity.Intent.Data;
        string scheme = data.Scheme;

        DebugToast("scheme " + scheme, ToastLength.Long);

        if (scheme == "myScheme")
        {
            // force the cookies so the web app will come up as we specify

            SetStorageValue("browserLaunched", "true");
            SetStorageValue("mode", data.GetQueryParameter("mode"));
            SetStorageValue("ec", data.GetQueryParameter("ec"));
            SetStorageValue("uh", data.GetQueryParameter("uh"));
            SetStorageValue("authToken", data.GetQueryParameter("at"));
            SetStorageValue("at", data.GetQueryParameter("at"));

            DebugToast("parms " + data.GetQueryParameter("mode") + " " +  data.GetQueryParameter("ec") + " " + data.GetQueryParameter("uh") + " " +  data.GetQueryParameter("at"), ToastLength.Long);

            // restart the web view with arguments above

            ...

        }
    }
    catch
    {
       ....
    }
}

1 Ответ

0 голосов
/ 12 октября 2019

Гомер Симпсон Д'Ох !. Нужно добавить onNewIntent () к деятельности, которая получает новый намерение "um er dah" с соответствующими данными.

...