【问题标题】:Xamarin android how to override onRequestPermissionsResultXamarin android如何覆盖onRequestPermissionsResult
【发布时间】:2016-04-27 07:20:41
【问题描述】:

我正在使用 Xamarin 和 mvvmcross 开发一个 Android 应用程序。对于 Android 6.0,我成功地询问了运行时权限,它运行良好,但我无权访问我的 MainActivity 代码,所以我不知道如何覆盖 onRequestPermissionsResult 回调,有没有人知道如何做到这一点?

谢谢

【问题讨论】:

  • Alexander 我也有同样的问题,你解决了吗?
  • 我也想知道你们是否找到了答案。我正在使用 Plugin.Permissions 但不是 Xamarin 表单。只是 Xamarin 中的“本机”Android。您是否找到要使用您询问的方法覆盖的 Activity?

标签: xamarin xamarin.android mvvmcross


【解决方案1】:

您可以使用ActivityLifecycleCallbacks 访问当前的Activity

James Montemagno 已将 API 调用封装到他的 Xamarin.Plugins 之一中:

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

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

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; 
} 

谷歌文档:Application.ActivityLifecycleCallbacks

【讨论】:

    【解决方案2】:

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

    var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);
    
    if (status == PermissionStatus.Granted)
    {
        //Permission was granted.
    }
    

    【讨论】:

      【解决方案3】:

      根据@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
          ) {
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        相关资源
        最近更新 更多