使用 android:exported 的显式声明值时,Azure B2C 中断
Azure B2C broken when explicitly-declared value for android:exported is used
我的 Xamarin.Forms 应用程序使用 Azure AD B2C 进行身份验证。目前,我必须使用 Android 12 而不是 Android 10。根据文档,它需要进行一定的更改:
Warning: If an activity, service, or broadcast receiver uses intent
filters and doesn't have an explicitly-declared value for
android:exported, your app can't be installed on a device that runs
Android 12 or higher.
(https://developer.android.com/about/versions/12/behavior-changes-12#security)
这是我来自 MsalActivity.cs 的代码:
namespace UserDetailsClient.Droid
{
[Activity(Exported = false)]
[IntentFilter(new[] { Intent.ActionView },
Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault },
DataHost = "auth",
DataScheme = "msal5c32fe58-4a77-49ea-8b5d-010c4a684e4f")]
public class MsalActivity : BrowserTabActivity
{
}
}
添加 (Exported = false) 后,我能够部署和 运行 应用程序。但现在我无法登录。登录屏幕确实出现了。并且用户可以输入凭据,但是提交后,我们卡在这个屏幕上:
输出中没有新内容 window。如何诊断和修复?
否,您需要设置 Exported = true。官方文档说如果 activity 有任何 intent 过滤器,它的默认值是 true,所以你的项目在 Android 10,它是 Exported = true
。当你更新到Android 12时,你也需要将其设置为true。
可以查看官方文档:https://developer.android.com/guide/topics/manifest/activity-element
我的 Xamarin.Forms 应用程序使用 Azure AD B2C 进行身份验证。目前,我必须使用 Android 12 而不是 Android 10。根据文档,它需要进行一定的更改:
Warning: If an activity, service, or broadcast receiver uses intent filters and doesn't have an explicitly-declared value for android:exported, your app can't be installed on a device that runs Android 12 or higher.
(https://developer.android.com/about/versions/12/behavior-changes-12#security)
这是我来自 MsalActivity.cs 的代码:
namespace UserDetailsClient.Droid
{
[Activity(Exported = false)]
[IntentFilter(new[] { Intent.ActionView },
Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault },
DataHost = "auth",
DataScheme = "msal5c32fe58-4a77-49ea-8b5d-010c4a684e4f")]
public class MsalActivity : BrowserTabActivity
{
}
}
添加 (Exported = false) 后,我能够部署和 运行 应用程序。但现在我无法登录。登录屏幕确实出现了。并且用户可以输入凭据,但是提交后,我们卡在这个屏幕上:
输出中没有新内容 window。如何诊断和修复?
否,您需要设置 Exported = true。官方文档说如果 activity 有任何 intent 过滤器,它的默认值是 true,所以你的项目在 Android 10,它是 Exported = true
。当你更新到Android 12时,你也需要将其设置为true。
可以查看官方文档:https://developer.android.com/guide/topics/manifest/activity-element