我正在尝试使用 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来请求权限, 请参阅插件.权限