【问题标题】:How to pick media files in Xamarin forms for both iOS and Android?如何为 iOS 和 Android 选择 Xamarin 表单中的媒体文件?
【发布时间】:2019-03-27 14:42:45
【问题描述】:

我正在尝试找到一种方法,可以用来在表单中挑选照片,而无需在 iOS 和 Android 中编写特定于平台的代码。

【问题讨论】:

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


    【解决方案1】:

    您可以使用来自 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>
    

    在安卓中

    如果您的用户正在运行 Marshmallow,插件将自动提示他们提供运行时权限。您必须将权限插件代码添加到您的主要或基本活动中:

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

    更多详情您可以访问here

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      相关资源
      最近更新 更多