Android заклепывает данные Applink всегда пустыми
Я использую заклепки с Android, чтобы открыть свое приложение и получить данные с веб-страницы. У меня есть следующее в моем методе onCreate.
if (Intent.HasExtra("al_applink_data"))
{
var data = Intent.Data.ToString();
var appLinkData = Intent.GetStringExtra("al_applink_data");
var alUrl = new Rivets.AppLinkUrl(data, appLinkData);
// InputQueryParameters will contain our token
if (alUrl != null && alUrl.InputQueryParameters.ContainsKey("an"))
{
_token = alUrl.InputQueryParameters["an"];
}
else
{
// No token found
}
}
У моей активности этот фильтр вверху.
[IntentFilter(new[] { Intent.ActionView },
DataScheme = "test",
DataHost = "test",
Categories = new[]
{
Intent.CategoryDefault, Intent.CategoryBrowsable
})]
Мой тестовый контент - test://test? An=1234, который успешно открывает мою активность. Однако Intent.HasExtra("al_applink_data") всегда ложно, а Intent.GetStringExtra("al_applink_data") всегда равно нулю. Intent.Data.ToString(); показывает мой контент с параметром. Я новичок в Rivets и Android программирования на C#. Почему это всегда может быть ложным и нулевым?
1 ответ
Попробуйте вот так:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(....);
if (Intent != null)
{
OnNewIntent(Intent);
}
}
protected override void OnNewIntent(Android.Content.Intent intent)
{
base.OnNewIntent(intent);
var appLinkData = intent.GetStringExtra("al_applink_data");
AppLinkUrl alUrl = null;
if (appLinkData != null)
{
alUrl = new Rivets.AppLinkUrl(intent.Data.ToString(), appLinkData);
}
if (alUrl != null) {
// LAUNCH URI
}
}
Не забудьте использовать (в нижнем регистре) параметр "намерение", передаваемый в методе OnNewIntent:
intent.GetStringExtra ("al_applink_data") ----> содержит данные Intent.GetStringExtra("al_applink_data") ----> return null.