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">
搞定~