为了在运行时请求权限,我使用了RequestPermissions
函数。
我使用RequestPermissions
函数两次。一次在片段(void Android.Support.V4.App.Fragment.RequestPermissions
(,一次在主活动(void Activity.RequestPermissions
(。
为了做到这一点,我覆盖了两次OnRequestPermissionsResult
函数 - 似乎void Android.Support.V4.App.Fragment.RequestPermissions
结束时实际上会转向void MainActivity.OnRequestPermissionsResult
。如何使用其他OnRequestPermissionsResult
?
最主要的是,两次覆盖同一函数时会发生什么?哪个版本将适用?OnRequestPermissionsResult
是我的问题,并作为一个例子带到这里,但我想它属于一个更大的事情。
另一种询问方法是如何确定完成后RequestPermissions
将调用哪个函数?
在父活动中,我有一个OnRequestPermissionsResult
的方法,
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
Toast.MakeText(this, "Activity", ToastLength.Short).Show();
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
然后在片段中,我使用按钮单击并调用以请求权限:
button.Click += delegate
{
RequestPermissions(new string[] { Manifest.Permission.Camera }, 0);
};
并且在片段中还有一个OnRequestPermissionsResult
方法:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
Toast.MakeText(Activity, "Fragment", ToastLength.Short).Show();
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
最后,回调将输入活动的OnRequestPermissionsResult
,然后输入片段的OnRequestPermissionsResult
,因此您可以自定义requestCode
来区分请求的哪一方。