Xamarin图片读取二进制流


1.AndroidManifest.xml中增加权限

<?xml version="1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.mobile" android:installLocation="auto">
"21" android:targetSdkVersion="30" />

"android.permission.READ_EXTERNAL_STORAGE" />
"android.permission.WRITE_EXTERNAL_STORAGE" />
"Mobile.Android" android:icon="@mipmap/launcher_foreground" android:extractNativeLibs="true" android:requestLegacyExternalStorage="true"/>

2.Mobile.Android的MainActivity.cs增加粗体权限申请代码

 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            int requestPermissions = 0;
            string cameraPermission = Android.Manifest.Permission.Camera;
            string filePermission = Android.Manifest.Permission.WriteExternalStorage;

            if (!(ContextCompat.CheckSelfPermission(this, cameraPermission) == (int)Permission.Granted) || !(ContextCompat.CheckSelfPermission(this, filePermission) == (int)Permission.Granted))
            {
                ActivityCompat.RequestPermissions(this, new String[] { cameraPermission, filePermission
        }, requestPermissions);
            }

            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }

3.后端

 private async void Button_OnClicked(object sender, EventArgs e)
        {
            var pickFile = await CrossFilePicker.Current.PickFile();
            if (pickFile is null)
            {
                // 用户拒绝选择文件
            }
            else
            {
                FileText.Text = $@"选取文件路径 :{pickFile.FileName}";
                var file = pickFile.GetStream();//File.ReadAllBytes(pickFile.FilePath);
            }
        }

4.前端

<?xml version="1.0" encoding="UTF-8"?>
"http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Mobile.Views.NewItemPage"
             Shell.PresentationMode="Animated"
             Title="New Item"
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             ios:Page.UseSafeArea="true">
    
        "3" Padding="15">
            
        
    
    

搞定~

相关