Xamarin.forms 请求照相机权限xamarin表单
我有一个应用程序需要摄像头的权限,这是很好的实施,但要求在主屏幕(飞溅)的权限。我希望在登录后或在特定页面上显示(这可能吗?)。由于我可以在IOS上实现同样的功能,我非常感谢您的帮助,祝您度过愉快的一天 谢谢你的帮助。 这是我的密码 MainActivity.csXamarin.forms 请求照相机权限xamarin表单,xamarin.forms,xamarin.android,Xamarin.forms,Xamarin.android,我有一个应用程序需要摄像头的权限,这是很好的实施,但要求在主屏幕(飞溅)的权限。我希望在登录后或在特定页面上显示(这可能吗?)。由于我可以在IOS上实现同样的功能,我非常感谢您的帮助,祝您度过愉快的一天 谢谢你的帮助。 这是我的密码 MainActivity.cs const int requestCameraId = 0; const int requestStorageId = 1; const int requestId = 2; readonly stri
const int requestCameraId = 0;
const int requestStorageId = 1;
const int requestId = 2;
readonly string[] permissions =
{
Android.Manifest.Permission.Camera,
Android.Manifest.Permission.ReadExternalStorage,
Android.Manifest.Permission.WriteExternalStorage,
Android.Manifest.Permission.Internet,
Android.Manifest.Permission.ForegroundService,
Android.Manifest.Permission.RequestCompanionUseDataInBackground,
Android.Manifest.Permission.RequestCompanionRunInBackground,
Android.Manifest.Permission.StatusBar,
Android.Manifest.Permission.Vibrate,
Android.Manifest.Permission.Flashlight
};
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
switch (requestCode)
{
case requestCameraId:
{
if (grantResults[0] == (int)Android.Content.PM.Permission.Granted)
{
Toast.MakeText(this, "Permiso concedido para la camara", ToastLength.Short).Show();
}
else
{
//Permission Denied :(
Toast.MakeText(this, "Permiso denegado para la camara", ToastLength.Short).Show();
}
}
break;
case requestStorageId:
{
if (grantResults[0] == (int)Android.Content.PM.Permission.Granted)
{
Toast.MakeText(this, "Permiso concedido para el almacenamiento", ToastLength.Short).Show();
}
else
{
//Permission Denied :(
Toast.MakeText(this, "Permiso denegado para el almacenamiento", ToastLength.Short).Show();
}
}
break;
}
}
async Task GetCameraPermissionAsync()
{
const string permission = Manifest.Permission.Camera;
if (CheckSelfPermission(permission) == (int)Android.Content.PM.Permission.Granted)
{
//TODO change the message to show the permissions name
Toast.MakeText(this, "Permisos para la camara listos", ToastLength.Short).Show();
return;
}
if (ShouldShowRequestPermissionRationale(permission))
{
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetTitle("Permisos necesarios");
alert.SetMessage("La aplicación necesita acceder a la camara para tomar una fotografía del trabajo terminado");
alert.SetPositiveButton("Conceder permiso", (senderAlert, args) =>
{
RequestPermissions(permissions, requestCameraId);
});
alert.SetNegativeButton("Cancelar", (senderAlert, args) =>
{
Toast.MakeText(this, "Cancelado", ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
return;
}
}
async Task GetStoragePermissionAsync()
{
const string permission = Manifest.Permission.ReadExternalStorage;
if (CheckSelfPermission(permission) == (int)Android.Content.PM.Permission.Granted)
{
//TODO change the message to show the permissions name
Toast.MakeText(this, "Permisos para leer carpetas listos", ToastLength.Short).Show();
return;
}
if (ShouldShowRequestPermissionRationale(permission))
{
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetTitle("Permisos necesarios");
alert.SetMessage("La aplicación necesita acceder a sus archivos para subir una imagen con el trabajo terminado");
alert.SetPositiveButton("Conceder permiso", (senderAlert, args) =>
{
RequestPermissions(permissions, requestStorageId);
});
alert.SetNegativeButton("Cancelar", (senderAlert, args) =>
{
Toast.MakeText(this, "Cancelado", ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
return;
}
}
async Task GetPermissionsAsync()
{
await GetCameraPermissionAsync();
await GetStoragePermissionAsync();
RequestPermissions(permissions, requestId);
}
async Task TryToGetPermissions()
{
if ((int)Build.VERSION.SdkInt >= 23)
{
await GetPermissionsAsync();
return;
}
}
protected async override void OnCreate(Bundle savedInstanceState)
{
await TryToGetPermissions();
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// RequestPermissions(permissions, requestId);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
Xamarin.Forms.Application.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
CreateNotificationFromIntent(Intent);
//notificationServiceIntent = new Intent(this.BaseContext, typeof(PDANotificationService));
//StartService(notificationServiceIntent);
WireUpLongRunningTask();
var message = new StartLongRunningTaskMessage();
MessagingCenter.Send(message, "StartLongRunningTaskMessage");
}
const int requestCameraId=0;
const int requestStorageId=1;
const int requestId=2;
只读字符串[]权限=
{
Android.Manifest.Permission.Camera,
Android.Manifest.Permission.ReadExternalStorage,
Android.Manifest.Permission.WriteExternalStorage,
Android.Manifest.Permission.Internet,
Android.Manifest.Permission.ForegroundService,
Android.Manifest.Permission.RequestCompanyUseDataInBackground,
Android.Manifest.Permission.RequestCompanyRunInBackground,
Android.Manifest.Permission.StatusBar,
Android.Manifest.Permission.Vibrate,
Android.Manifest.Permission.Flashlight
};
public override void OnRequestPermissionsResult(int-requestCode,string[]permissions,[GeneratedEnum]Android.Content.PM.Permission[]grantResults)
{
开关(请求代码)
{
案件请求者:
{
如果(grantResults[0]=(int)Android.Content.PM.Permission.grated)
{
Toast.MakeText(这个“Permiso concedido para la camara”,ToastLength.Short).Show();
}
其他的
{
//拒绝许可:(
Toast.MakeText(这个“Permiso denegado para la camara”,ToastLength.Short).Show();
}
}
打破
案例请求存储ID:
{
如果(grantResults[0]=(int)Android.Content.PM.Permission.grated)
{
Toast.MakeText(这个“Permiso concedido para el-almacenaminto”,ToastLength.Short).Show();
}
其他的
{
//拒绝许可:(
Toast.MakeText(这是“Permiso denegado para el Almacenaminto”,ToastLength.Short).Show();
}
}
打破
}
}
异步任务GetCameraPermissionAsync()
{
const string permission=Manifest.permission.Camera;
if(CheckSelfPermission(permission)==(int)Android.Content.PM.permission.grated)
{
//TODO更改消息以显示权限名称
Toast.MakeText(这是“Permisos para la camara listos”,ToastLength.Short).Show();
返回;
}
如果(应显示请求许可理由(许可))
{
//为执行任务设置警报
AlertDialog.Builder alert=新建AlertDialog.Builder(此);
警报。设置标题(“必要许可”);
alert.SetMessage(“我们必须加入我们的团队,为我们的团队服务”);
警报。设置正按钮(“承认者许可证”,(senderAlert,args)=>
{
RequestPermissions(权限、requestCameraId);
});
alert.SetNegativeButton(“取消”,senderAlert,args)=>
{
Toast.MakeText(这是“Cancelado”,ToastLength.Short).Show();
});
Dialog=alert.Create();
dialog.Show();
返回;
}
}
异步任务GetStoragePermissionAsync()
{
const string permission=Manifest.permission.ReadExternalStorage;
if(CheckSelfPermission(permission)==(int)Android.Content.PM.permission.grated)
{
//TODO更改消息以显示权限名称
Toast.MakeText(这是“Permisos para leer地毯列表”,ToastLength.Short).Show();
返回;
}
如果(应显示请求许可理由(许可))
{
//为执行任务设置警报
AlertDialog.Builder alert=新建AlertDialog.Builder(此);
警报。设置标题(“必要许可”);
alert.SetMessage(“需要加入一个新的档案,以便在终端上查看图像”);
警报。设置正按钮(“承认者许可证”,(senderAlert,args)=>
{
RequestPermissions(权限、requestStorageId);
});
alert.SetNegativeButton(“取消”,senderAlert,args)=>
{
Toast.MakeText(这是“Cancelado”,ToastLength.Short).Show();
});
Dialog=alert.Create();
dialog.Show();
返回;
}
}
异步任务GetPermissionsAsync()
{
等待GetCameraPermissionAsync();
等待GetStoragePermissionAsync();
请求权限(权限、请求ID);
}
异步任务TryToGetPermissions()
{
如果((int)Build.VERSION.SdkInt>=23)
{
等待GetPermissionsAsync();
返回;
}
}
创建时受保护的异步重写void(Bundle savedInstanceState)
{
等待TryToGetPermissions();
TabLayoutResource=Resource.Layout.Tabbar;
ToolbarResource=Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(这个,savedInstanceState);
//请求权限(权限、请求ID);
全局::Xamarin.Forms.Forms.Init(这个,savedInstanceState);
加载应用程序(新应用程序());
Xamarin.Forms.Application.Current.On().UseWindowsOfInputModeAdjust(WindowsOfInputModeAdjust.Resize);
CreateNotificationFromIntent(Intent);
//通知
if (CheckSelfPermission(Manifest.Permission.Camera) != (int)Permission.Granted)
{
//request permission
}else
{
//call camera
}