如何为iOS和Android选择Xamarin格式的媒体文件?

时间:2018-10-23 11:17:33

标签: xamarin xamarin.forms xamarin.ios xamarin.android

我正在尝试寻找某种方式来选择表单中的照片,而无需在iOS和Android中编写平台特定的代码。

1 个答案:

答案 0 :(得分:0)

您可以使用NuGet的软件包xam.Plugin.Media

//...
using Plugin.Media;
//...

async void Button_Clicked(object sender, System.EventArgs e)
{
   await CrossMedia.Current.Initialize();

   if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
    {
      await DisplayAlert("No Camera", ":( No camera available.", "OK");
      return;
    }

   var file = await CrossMedia.Current.PickPhotoAsync();

   if (file == null)
     {
       return;
     }

   else
     {
       await DisplayAlert("File Location", file.Path, "OK");
     }

}

不要忘记添加Privacy

  

在iOS中(info.plist)

<key>NSCameraUsageDescription</key>
<string>This app needs access to the camera to take photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs access to photos.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app needs access to microphone.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to the photo gallery.</string>
  

在Android

如果您的用户正在运行棉花糖,则插件将自动提示他们输入运行时权限。您必须将权限插件代码添加到您的主要活动或基础活动中:

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults)
{
Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

有关更多详细信息,您可以访问here