zoukankan      html  css  js  c++  java
  • Xamarin中的权限设置

    两种类型的权限设置

    1. AndroidManifest.xml中添加权限
    2. 动态添加权限(有些权限 Android6.0之后需要动态添加权限),在使用到权限时,监测是否授权,没有授权的申请授权。

    AndroidManifest.xml中添加权限

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.weatherstation.app" android:installLocation="auto">
        <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
        <application android:label="气象生态环境监测系统" android:usesCleartextTraffic="true" android:icon="@drawable/icon"></application>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!-- 访问网络,网络定位需要上网-->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    </manifest>

    动态添加权限(AndroidManifest.xml中也要加入该权限

    Android中的权限申请

    class PermisionUtils
        {
            private static int REQUEST_EXTERNAL_STORAGE = 1;
            private static String[] PERMISSIONS_STORAGE = {
               Manifest.Permission.ReadExternalStorage,
               Manifest.Permission.WriteExternalStorage};
    
            public static bool VerifyStoragePermissions(Activity activity)
            {
                var permission = ActivityCompat.CheckSelfPermission(activity,
                  Manifest.Permission.WriteExternalStorage);
    
                if (permission == Permission.Denied)
                {
                    ActivityCompat.RequestPermissions(activity, PERMISSIONS_STORAGE,
                      REQUEST_EXTERNAL_STORAGE);
                    return false;
                }
                return true;
            }
        }

    MainActivity.cs中返回

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
            {
                Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    
                base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            }

    【推荐】可以在Nuget添加Plugin.Permissions
    这个可以对各个Android IOS UWP统一申请权限

    protected override void OnAppearing()        {
                base.OnAppearing();
                SetPermission();
            }
    
            private async void SetPermission()
            {
                // Granted storage permission
                var storageStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);
    
                if (storageStatus != PermissionStatus.Granted)
                {
                    var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Storage });
                    storageStatus = results[Permission.Storage];
                }
    
            }
  • 相关阅读:
    (二)处理视频
    vim下多行注释与解注释
    (一)读取显示图片
    解决死锁的方法
    死锁、活锁和饿死的理解(转)
    C# winfrom 窗体的StartPosition 属性
    Show()和ShowDialog()
    WinForm应用程序之注册模块的设计与实现
    Epplus使用教程1(基本介绍)
    C#中操作txt,抛出“正由另一进程使用,因此该进程无法访问此文件”
  • 原文地址:https://www.cnblogs.com/Xamarin-Oz/p/12624961.html
Copyright © 2011-2022 走看看