Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
            };
        }