如何在Xamarin MvvmCross中实现权限请求?



我正在尝试使用 MvvmCross 请求权限,但我看不到在哪里可以设置初始化。您知道我可以在 .core 项目中调用并在每个移动项目中使用它的任何插件吗?

这是我的模型分布:

在此处输入图像描述

你怎么看,我没有任何 MainActivity 类,相反,我有一个安装程序类,这是他的构建:

>         using Core;
>         using Core.Interfaces;
>         using MvvmCross;
>         using MvvmCross.Platforms.Android.Core;
>         using Services;
>         using System.Collections.Generic;
>         using System.Linq;
>         using System.Reflection;
>     
>         public class Setup : MvxAndroidSetup<App>
>         {
>             protected override void InitializeFirstChance()
>             {
>                 Mvx.IoCProvider.RegisterType<IDialogService, DialogService>();
>     
>                 base.InitializeFirstChance();
>             }
>     
>             public override IEnumerable<Assembly> GetPluginAssemblies()
>             {
>                 var assemblies = base.GetPluginAssemblies().ToList();
>                 assemblies.Add(typeof(MvvmCross.Plugin.Visibility.Platforms.Android.Plugin).Assembly);
>                 return assemblies;
>             }
>         }
>     

这是我的应用类:

> using MvvmCross.IoC;
>     using MvvmCross.ViewModels;
>     using Plugin.Permissions;
>     using Plugin.Permissions.Abstractions;
>     using ViewModels;
> 
>     public class App : MvxApplication
>     {
>         public override void Initialize()
>         {
> 
>             this.CreatableTypes()
>                 .EndingWith("Service")
>                 .AsInterfaces()
>                 .RegisterAsLazySingleton();
> 
> 
> 
>             this.RegisterAppStart<GPSLocationViewModel>();
>         }
>     }

如何为任何设备组件(相机、位置等(设置权限请求?

对于一般的安卓,请参阅权限概述

有关位置,请参阅获取最后已知位置

例如,对于相机:指定所需的权限并要求用户授予权限

[assembly: UsesPermission(Name = Android.Manifest.Permission.ReadExternalStorage)]
[assembly: UsesPermission(Name = Android.Manifest.Permission.WriteExternalStorage)]
...
...
...
public static readonly int PickImageActivityId = 91;
public static readonly int RequestPermission_WriteExternalStorage = 92;
static string[] Permissions = {
Android.Manifest.Permission.ReadExternalStorage,
Android.Manifest.Permission.WriteExternalStorage
};
...
if (FragmentController.Activity.CheckSelfPermission(Android.Manifest.Permission.WriteExternalStorage) != (int)Android.Content.PM.Permission.Granted)
{
FragmentController.RequestPermissions(Permissions, RequestPermission_WriteExternalStorage);
}
else
{
//already granted?
}
...
...

在选择图像后,您的活动将收到回调

OnActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == 91)
{
if ((resultCode == (int)Result.Ok))
{
//data contains image
}
return;
}
}

您可以使用nugetpackagePlugin.Permissions来请求权限, 请参阅插件.权限

最新更新