protected override async void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Make sure the example activity is launched with the required extras. if (!Intent.HasExtra(ExtraConfiguration)) { throw new InvalidOperationException($"{nameof (ExternalExampleActivity)} was started without a 'PdfActivityConfiguration'."); } // Extract the configuration for displaying the viewer activity. configuration = Intent.GetParcelableExtra(ExtraConfiguration)?.JavaCast <PdfActivityConfiguration> (); // Check if the activity was recreated, and see if the user already started document picking. waitingForResult = savedInstanceState?.GetBoolean(isWaitingForResult, false) ?? false; // Prevent the example from requesting multiple documents at the same time. if (!waitingForResult) { waitingForResult = true; // On Android 6.0+ we ask for SD card access permission. This isn't strictly necessary, but PSPDFKit // being able to access file directly will significantly improve performance. // Since documents can be annotated we ask for write permission as well. var status = await CrossPermissions.Current.CheckPermissionStatusAsync <StoragePermission> (); if (status != PermissionStatus.Granted) { if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Storage)) { AndHUD.Shared.Show(this, "Need Storage Permission", maskType: MaskType.Clear, timeout: TimeSpan.FromSeconds(1)); } status = await CrossPermissions.Current.RequestPermissionAsync <StoragePermission> (); } if (status == PermissionStatus.Granted) { ShowOpenFileDialog(); } else if (status != PermissionStatus.Unknown) { AndHUD.Shared.ShowError(this, "Storage Permission Denied", MaskType.Clear, TimeSpan.FromSeconds(2)); } } void ShowOpenFileDialog() { // Prepare an implicit intent which allows the user to select any document. var intent = new Intent(Intent.ActionOpenDocument); intent.AddCategory(Intent.CategoryOpenable); intent.SetType("*/*"); intent.PutExtra(Intent.ExtraMimeTypes, new [] { "application/pdf", "image/*" }); // Set of the intent for result, so we can retrieve the Uri of the selected document. StartActivityForResult(intent, requestOpenDocument); } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.TryInstantConnect); // Extract PdfActivity configuration from extras. configuration = Intent.GetParcelableExtra(ConfigurationArg).JavaCast <PdfActivityConfiguration> (); if (configuration is null) { throw new InvalidOperationException("'InstantExampleConnectionActivity' was not initialized with proper arguments: Missing configuration extra!"); } // Configure toolbar. var toolbar = FindViewById <Toolbar> (Resource.Id.toolbar); SetSupportActionBar(toolbar); // Configure new document button. var documentButton = FindViewById <Android.Widget.Button> (Resource.Id.button_new_document); documentButton.Click += async(sender, e) => await CreateNewDocument(); // Configure edit document button. var editDocumentButton = FindViewById <Android.Widget.Button> (Resource.Id.button_edit_document); editDocumentButton.Enabled = false; editDocumentButton.Click += async(sender, e) => await EditDocument(documentCodeEditText.Text); // Configure document code edit box. documentCodeEditText = FindViewById <Android.Widget.EditText> (Resource.Id.edit_text_document_code); documentCodeEditText.EditorAction += async(sender, e) => { if (e.ActionId == ImeAction.Go && (e.Event == null || e.Event?.Action == KeyEventActions.Up)) { await EditDocument(documentCodeEditText.Text); e.Handled = true; } e.Handled = false; }; documentCodeEditText.AfterTextChanged += (sender, e) => { var code = (sender as Android.Widget.EditText).Text; editDocumentButton.Enabled = code?.Length == WebPreviewApiClient.CodeLength; }; }