Xamarin android如何覆盖onRequestPermissionsResult

时间:2016-04-27 07:20:41

标签: xamarin xamarin.android mvvmcross

我正在使用Xamarin和mvvmcross开发Android应用。对于Android 6.0,我成功地询问了运行时权限,它运行良好,但我无法访问我的MainActivity代码,因此我不知道如何覆盖onRequestPermissionsResult回调,是否有人知道如何执行此操作?

谢谢

3 个答案:

答案 0 :(得分:2)

您可以使用Activity

访问当前ActivityLifecycleCallbacks

James Montemagno已将API调用包装到他的一个Xamarin.Plugins

https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/CurrentActivity

在您的Application子类(MainApplication)中,您可以进行一些小的设置,然后您可以通过Activity属性访问CrossCurrentActivity.Current

public override void OnCreate() { base.OnCreate();
   RegisterActivityLifecycleCallbacks(this); 
}

public override void OnTerminate() { 
  base.OnTerminate(); 
  UnregisterActivityLifecycleCallbacks(this); 
} 

public void OnActivityCreated(Activity activity, Bundle savedInstanceState) { 
   CrossCurrentActivity.Current.Activity = activity; 
} 

public void OnActivityResumed(Activity activity) { 
   CrossCurrentActivity.Current.Activity = activity; 
} 

Google文档:Application.ActivityLifecycleCallbacks

答案 1 :(得分:0)

您可以使用Permissions Plugin for Xamarin在运行时请求权限并获得结果。

var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);

if (status == PermissionStatus.Granted)
{
    //Permission was granted.
}

答案 2 :(得分:0)

根据@Evk answer

您最有可能使用错误的Permission类型(在不同的命名空间中有几种名为Permission的类型)。试试这个:

class Aplication : Android.App.Activity,
    Android.Support.V4.App.ActivityCompat.IOnRequestPermissionsResultCallback {

    public override async void OnRequestPermissionsResult(
        int requestCode,
        string[] permissions,
        Android.Content.PM.Permission[] grantResults
    ) {
    }
}