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];
            }

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM