Skip to content

Instantly share code, notes, and snippets.

@nodoid
Created March 16, 2019 11:25
Show Gist options
  • Save nodoid/8189cd54f32f42fa763ebe493fedc6b8 to your computer and use it in GitHub Desktop.
Save nodoid/8189cd54f32f42fa763ebe493fedc6b8 to your computer and use it in GitHub Desktop.
Xamarin android permissions
/* you need the xamarin permissions to use this /*
static readonly int REQUEST_WRITESETTINGS = 2, REQUEST_EXTERNAL = 4, REQUEST_WIFI = 5, REQUEST_WAKELOCK = 6, REQUEST_CONTACTS;
static string[] PERMISSIONS_SETTINGS = { Manifest.Permission.WriteSettings };
static string[] PERMISSIONS_STORAGE = { Manifest.Permission_group.Storage };
static string[] PERMISSIONS_WIFISTATE = { Manifest.Permission.AccessWifiState };
static string[] PERMISSIONS_WAKELOCK = { Manifest.Permission.WakeLock };
static string[] PERMISSIONS_CONTACTS = { Manifest.Permission.ReadContacts };
Android.Views.View layout;
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
// inside OnCreate - if your app is a Xam Forms one, add after LoadApplication, otherwise, set it close to the start of the method
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
{
RequestWriteSettingsPermission();
RequestExternal();
RequestWifi();
RequestWakelock();
RequestContacts();
}
// the following is general for the above method calls
void RequestWakelock()
{
if (ActivityCompat.ShouldShowRequestPermissionRationale(this, /*whatever permission you're after - it'll be the same as the requested ones in the static strings*/))
{
Console.WriteLine("Show wake");
Snackbar.Make(GetSnackbarAnchorView(), Resource.String./*insert your string here*/,
Snackbar.LengthIndefinite).SetAction("OK", v => ActivityCompat.RequestPermissions(this, /*string permission request*/, /*int request*/)).Show();
}
else
{
// Contact permissions have not been granted yet. Request them directly.
ActivityCompat.RequestPermissions(this, /*string permission request*/, /*int request*/);
}
}
Android.Views.View GetSnackbarAnchorView()
{
var a = this;
var v3 = a.FindViewById(Android.Resource.Id.Content);
return v3;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment