2016-04-27 16 views
3

私はXamarinとmvvmcrossでAndroidアプリを開発しています。 Android 6.0の場合、ランタイムアクセス権を要求するのに成功しました。うまくいきますが、私のMainActivityコードにアクセスできないため、onRequestPermissionsResultコールバックをオーバーライドする方法がわかりません。 Xamarin android onRequestPermissionsResultをオーバーライドする方法

あなたは

+0

私は同じ問題を抱えていますが、それを解決できましたか? –

+0

あなたのどちらかが答えを見つけたのかどうか疑問に思います。私は 'Plugin.Permissions'を使用していますが、Xamarin Formsは使用していません。 Xamarinの "ネイティブ" Android。あなたが求めている方法で上書きするアクティビティを見つけましたか? – clay

答えて

0

あなたは、実行時にパーミッションを要求し、結果を得るためにPermissions Plugin for Xamarinを使用することができますありがとうございました。

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

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

あなたはジェームズMontemagnoが彼のXamarin.Pluginsの一つにAPI呼び出しをラップしたActivityLifecycleCallbacks

使用して、現在のActivityにアクセスすることができます:あなたのApplicationサブクラス(MainApplication)で

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

あなたをマイナーな設定をしてから、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; 
} 

Googleドキュメント: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 
    ) { 
    } 
} 
関連する問題