2016-04-27 1 views
3

Я разрабатываю приложение для Android с Xamarin и mvvmcross. Для Android 6.0 мне удалось запросить разрешения во время выполнения, она работает хорошо, но у меня нет доступа к моему коду MainActivity, поэтому я не знаю, как переопределить обратный вызов onRequestPermissionsResult, может ли кто-нибудь понять, как это сделать?Xamarin android Как переопределить onRequestPermissionsРезультаты

Спасибо

+0

Alexander У меня такая же проблема, вам удалось ее решить? –

+0

Мне также интересно, нашел ли кто-нибудь из вас ответ. Я использую 'Plugin.Permissions', но не Xamarin Forms. Просто «родной» Android в Xamarin. Вы обнаружили, что Activity переопределяет метод, о котором вы спрашиваете? – clay

ответ

0

Вы можете использовать Permissions Plugin for Xamarin попросить разрешения во время выполнения и получения результата.

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

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

Вы можете получить доступ к текущей Activity с помощью ActivityLifecycleCallbacks

Джеймс Montemagno обернул АНИ вызовы в один из его 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 Docs: Application.ActivityLifecycleCallbacks

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 
    ) { 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^