【发布时间】:2019-03-27 14:42:45
【问题描述】:
我正在尝试找到一种方法,可以用来在表单中挑选照片,而无需在 iOS 和 Android 中编写特定于平台的代码。
【问题讨论】:
标签: xamarin xamarin.forms xamarin.ios xamarin.android
我正在尝试找到一种方法,可以用来在表单中挑选照片,而无需在 iOS 和 Android 中编写特定于平台的代码。
【问题讨论】:
标签: xamarin xamarin.forms xamarin.ios xamarin.android
您可以使用来自 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
【讨论】: