我正在使用Xamarin和mvvmcross开发Android应用。对于Android 6.0,我成功地询问了运行时权限,它运行良好,但我无法访问我的MainActivity代码,因此我不知道如何覆盖onRequestPermissionsResult回调,是否有人知道如何执行此操作?
谢谢
答案 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;
}
详情请见:http://motzcod.es/post/133609925342/access-the-current-android-activity-from-anywhere
在NuGet上可用:http://www.nuget.org/packages/Plugin.CurrentActivity *安装到您的Xamarin.Android客户端项目中。
答案 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
) {
}
}