using System; using Android; using Android.OS; using Android.App; using Android.Views; using Android.Widget; using Android.Runtime; using Android.Content; using Android.Graphics; using Android.Content.PM; using Android.Support.V7.App; using Android.Support.V4.View; using Android.Support.V4.Widget; using Android.Support.Design.Widget; namespace Sample { [Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", ConfigurationChanges = ConfigChanges.Locale | ConfigChanges.ScreenSize | ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait)] public class MainActivity : AppCompatActivity, NavigationView.IOnNavigationItemSelectedListener { // // Variabili Globali // #region Variabili Globali public static Context Context { get; set; } #endregion protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); Context = this; LoadLayout(); } // // Layout & Permission // #region Layout & Permission private void PermissionCheck() { if (CheckSelfPermission(Manifest.Permission.ReadExternalStorage) != Permission.Granted || CheckSelfPermission(Manifest.Permission.WriteExternalStorage) != Permission.Granted) { var permissions = new string[] { Manifest.Permission.ReadExternalStorage, Manifest.Permission.WriteExternalStorage }; Android.Support.V4.App.ActivityCompat.RequestPermissions(this, permissions, 1); } else { var input = FindViewById(Resource.Id.inputNumber); Share(input.Text, Resources.GetString(Resource.String.title), Resources.GetString(Resource.String.share_msg)); } } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { switch (requestCode) { case 1: { // If request is cancelled, the result arrays are empty. if (grantResults.Length > 0 && grantResults[0] == Permission.Granted && grantResults[1] == Permission.Granted) { // permission was granted, yay! Do the contacts-related task you need to do. var input = FindViewById(Resource.Id.inputNumber); Share(input.Text, Resources.GetString(Resource.String.title), Resources.GetString(Resource.String.share_msg)); } else { // permission denied, boo! Disable the functionality that depends on this permission. } return; } // other 'case' lines to check for other permissions this app might request } } #endregion // // Navigation Methods // #region Navigation Methods public override bool OnCreateOptionsMenu(IMenu menu) { MenuInflater.Inflate(Resource.Menu.menu_main, menu); return true; } public override void OnBackPressed() { DrawerLayout drawer = FindViewById(Resource.Id.drawer_layout); if(drawer.IsDrawerOpen(GravityCompat.Start)) { drawer.CloseDrawer(GravityCompat.Start); } else { base.OnBackPressed(); } } public override bool OnOptionsItemSelected(IMenuItem item) { int id = item.ItemId; if (id == Resource.Id.menu_share) { PermissionCheck(); return true; } return base.OnOptionsItemSelected(item); } public bool OnNavigationItemSelected(IMenuItem item) { return true; } #endregion // // Sharing // #region Sharing public void Share(string filename, string title, string content) { if (string.IsNullOrEmpty(filename) || string.IsNullOrEmpty(title) || string.IsNullOrEmpty(content)) return; var imageView = FindViewById(Resource.Id.generatedImage); Android.Graphics.Drawables.BitmapDrawable bitmapDrawable = ((Android.Graphics.Drawables.BitmapDrawable)imageView.Drawable); if (bitmapDrawable != null) { Bitmap bitmap = bitmapDrawable.Bitmap; string testPath = Android.App.Application.Context.GetExternalFilesDir("").AbsolutePath + Java.IO.File.Separator + $"{filename}.png"; using (System.IO.FileStream os = new System.IO.FileStream(testPath, System.IO.FileMode.Create)) { bitmap.Compress(Bitmap.CompressFormat.Png, 100, os); os.Close(); } var sharingIntent = new Intent(); sharingIntent.SetAction(Intent.ActionSend); sharingIntent.SetType("image/*"); sharingIntent.PutExtra(Intent.ExtraSubject, Resources.GetString(Resource.String.contact_subject)); sharingIntent.PutExtra(Intent.ExtraText, content); sharingIntent.PutExtra(Intent.ExtraStream, testPath); StartActivity(Intent.CreateChooser(sharingIntent, title)); } } private void NavigationUrl(string url) { var uri = Android.Net.Uri.Parse(url); var intent = new Intent(Intent.ActionView, uri); StartActivity(intent); } #endregion } }