如何在Xamarin.forms应用程序中将Permissionplugin与Zxing nuget pkg一起使用?

时间:2019-05-23 09:26:10

标签: c# xamarin.forms zxing

OnRequestPermissionsResult中,“ jamesmontemagno”的权限插件pkg中提到了

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
Zxing pkg中提到的

OnRequestPermissionsResult

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
            {

                global::ZXing.Net.Mobile.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            }

我正在尝试使用以下代码来实现它。

[Activity(Label = "BarcodeScanning", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait | ScreenOrientation.Landscape)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, savedInstanceState);

            ZXing.Net.Mobile.Forms.Android.Platform.Init();

            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }


        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
        {
            global::ZXing.Net.Mobile.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);

        }       
    }

我想同时使用Nuget软件包并显示用户以显示弹出窗口以获取位置权限。 请给我您的宝贵建议。

1 个答案:

答案 0 :(得分:0)

请求权限是操作系统的要求,与ZXing或任何一般库无关。

现在,如果您查看PermissionsPlugin's Github,您将在那里找到所有答案

Current Activity插件是此程序包正常运行所必需的,并且始终向iOS的info.plist中添加所需的权限。

然后,您请求许可,例如:

var status = await CrossPermissions.Current.CheckPermissionStatusAsync<LocationPermission>();

您可以检查可用API的here,并可以找到一个简单的示例here