public void ReadOnlyKitKat()
        {
            var storage = new BuiltInFileStorage(new TestKp2aApp());
            var extFile = "/storage/sdcard1/file.txt";

            Assert.IsTrue(storage.IsReadOnly(IOConnectionInfo.FromPath(extFile)));
            Assert.IsTrue(storage.IsReadOnly(IOConnectionInfo.FromPath(extFile)));

            Assert.IsFalse(storage.IsReadOnly(IOConnectionInfo.FromPath(Application.Context.GetExternalFilesDir(null).AbsolutePath + "/file.txt")));
        }
        private void PrimaryIocSelected(IOConnectionInfo ioc)
        {
            var filestorage = _app.GetFileStorage(ioc, false);

            if (!filestorage.IsPermanentLocation(ioc))
            {
                string message = _app.GetResourceString(UiStringKey.FileIsTemporarilyAvailable) + " " + _app.GetResourceString(UiStringKey.CopyFileRequired) + " " + _app.GetResourceString(UiStringKey.ClickOkToSelectLocation);
                EventHandler <DialogClickEventArgs> onOk     = (sender, args) => { MoveToWritableLocation(ioc); };
                EventHandler <DialogClickEventArgs> onCancel = (sender, args) => { ReturnCancel(); };
                ShowAlertDialog(message, onOk, onCancel);
                return;
            }


            if ((RequestedWritableRequirements != WritableRequirements.ReadOnly) && (filestorage.IsReadOnly(ioc)))
            {
                string             readOnlyExplanation = _app.GetResourceString(UiStringKey.FileIsReadOnly);
                BuiltInFileStorage builtInFileStorage  = filestorage as BuiltInFileStorage;
                if (builtInFileStorage != null)
                {
                    if (builtInFileStorage.IsReadOnlyBecauseKitkatRestrictions(ioc))
                    {
                        readOnlyExplanation = _app.GetResourceString(UiStringKey.FileIsReadOnlyOnKitkat);
                    }
                }
                EventHandler <DialogClickEventArgs> onOk     = (sender, args) => { MoveToWritableLocation(ioc); };
                EventHandler <DialogClickEventArgs> onCancel = (sender, args) =>
                {
                    if (RequestedWritableRequirements == WritableRequirements.WriteDemanded)
                    {
                        ReturnCancel();
                    }
                    else
                    {
                        ReturnOk(ioc);
                    }
                };
                ShowAlertDialog(readOnlyExplanation + " "
                                + (RequestedWritableRequirements == WritableRequirements.WriteDemanded ?
                                   _app.GetResourceString(UiStringKey.CopyFileRequired)
                                                                           : _app.GetResourceString(UiStringKey.CopyFileRequiredForEditing))
                                + " "
                                + _app.GetResourceString(UiStringKey.ClickOkToSelectLocation), onOk, onCancel);
                return;
            }
            ReturnOk(ioc);
        }
Ejemplo n.º 3
0
 public TestFileStorage(IKp2aApp app)
 {
     _builtIn = new BuiltInFileStorage(app);
 }