我正在使用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,这将成功打开我的activity。但是,Intent.HasExtra("al_applink_data")始终为false,Intent.GetStringExtra("al_applink_data")始终为null。Intent.Data.ToString();使用参数显示我的内容。我对C#中的铆钉和安卓编程是个新手。为什么这可能总是为false和null?
发布于 2017-04-28 07:48:47
试着这样做:
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“参数:
intent.GetStringExtra("al_applink_data") ->包含数据返回(“al_applink_data”)->返回null。
https://stackoverflow.com/questions/42210340
复制相似问题