Я запускаю свое приложение из браузера, и если оно еще не загружено / не запущено, оно запускает приложение через 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
{
....
}
}