protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (resultCode == KeePass.ExitCloseAfterTaskComplete) { //no need to set the result ExitCloseAfterTaskComplete here, there's no parent Activity on the stack Finish(); return; } FillData(); if (resultCode == (Result)FileStorageResults.FileUsagePrepared) { IOConnectionInfo ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(ioc, data); LaunchPasswordActivityForIoc(ioc); } if ((resultCode == Result.Ok) && (requestCode == RequestCodeSelectIoc)) { IOConnectionInfo ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(ioc, data); LaunchPasswordActivityForIoc(ioc); } if ((resultCode == Result.Ok) && (requestCode == RequestCodeEditIoc)) { string filename = Util.IntentToFilename(data, this); LaunchPasswordActivityForIoc(IOConnectionInfo.FromPath(filename)); } }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (resultCode == KeePass.ResultOkPasswordGenerator) { String generatedPassword = data.GetStringExtra("keepass2android.password.generated_password"); FindViewById <TextView>(Resource.Id.entry_password).Text = generatedPassword; FindViewById <TextView>(Resource.Id.entry_confpassword).Text = generatedPassword; } FileSelectHelper fileSelectHelper = new FileSelectHelper(this, true, true, RequestCodeDbFilename) { DefaultExtension = "kdbx" }; fileSelectHelper.OnOpen += (sender, info) => { _ioc = info; (sender as CreateDatabaseActivity ?? this).UpdateIocView(); }; if (fileSelectHelper.HandleActivityResult(this, requestCode, resultCode, data)) { return; } if (resultCode == Result.Ok) { if (requestCode == RequestCodeKeyFile) { if (data.Data.Scheme == "content") { if ((int)Build.VERSION.SdkInt >= 19) { //try to take persistable permissions try { Kp2aLog.Log("TakePersistableUriPermission"); var takeFlags = data.Flags & (ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission); this.ContentResolver.TakePersistableUriPermission(data.Data, takeFlags); } catch (Exception e) { Kp2aLog.Log(e.ToString()); } } } string filename = Util.IntentToFilename(data, this); if (filename == null) { filename = data.DataString; } _keyfileFilename = FileSelectHelper.ConvertFilenameToIocPath(filename); FindViewById <TextView>(Resource.Id.keyfile_filename).Text = _keyfileFilename; FindViewById(Resource.Id.keyfile_filename).Visibility = ViewStates.Visible; } } if (resultCode == (Result)FileStorageResults.FileUsagePrepared) { _ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(_ioc, data); UpdateIocView(); } if (resultCode == (Result)FileStorageResults.FileChooserPrepared) { IOConnectionInfo ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(ioc, data); new FileSelectHelper(this, true, true, RequestCodeDbFilename) { DefaultExtension = "kdbx" } .StartFileChooser(ioc.Path); } }
protected override void SetIoConnectionFromIntent(IOConnectionInfo ioc, Intent data) { Util.SetIoConnectionFromIntent(ioc, data); }
public bool HandleActivityResult(Activity activity, int requestCode, Result resultCode, Intent data) { if (requestCode != _requestCode) { return(false); } if (resultCode == KeePass.ExitFileStorageSelectionOk) { string protocolId = data.GetStringExtra("protocolId"); if (protocolId == "content") { Util.ShowBrowseDialog(activity, _requestCode, _isForSave, _tryGetPermanentAccess); } else { App.Kp2a.GetFileStorage(protocolId).StartSelectFile( new FileStorageSetupInitiatorActivity(activity, (i, result, arg3) => HandleActivityResult(activity, i, result, arg3), s => PerformManualFileSelect(s)), _isForSave, _requestCode, protocolId); } } if (resultCode == Result.Ok) { if (data.Data.Scheme == "content") { if ((int)Build.VERSION.SdkInt >= 19) { //try to take persistable permissions try { Kp2aLog.Log("TakePersistableUriPermission"); var takeFlags = data.Flags & (ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission); activity.ContentResolver.TakePersistableUriPermission(data.Data, takeFlags); } catch (Exception e) { Kp2aLog.Log(e.ToString()); } } } string filename = Util.IntentToFilename(data, activity); if (filename == null) { filename = data.DataString; } bool fileExists = data.GetBooleanExtra("group.pals.android.lib.ui.filechooser.FileChooserActivity.result_file_exists", true); if (fileExists) { var ioc = new IOConnectionInfo { Path = ConvertFilenameToIocPath(filename) }; IocSelected(activity, ioc); } else { var task = new CreateNewFilename(activity, new ActionOnFinish(activity, (success, messageOrFilename, newActivity) => { if (!success) { Toast.MakeText(newActivity, messageOrFilename, ToastLength.Long).Show(); return; } var ioc = new IOConnectionInfo { Path = ConvertFilenameToIocPath(messageOrFilename) }; IocSelected(newActivity, ioc); }), filename); new ProgressTask(App.Kp2a, activity, task).Run(); } } if (resultCode == (Result)FileStorageResults.FileUsagePrepared) { var ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(ioc, data); IocSelected(null, ioc); } if (resultCode == (Result)FileStorageResults.FileChooserPrepared) { IOConnectionInfo ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(ioc, data); StartFileChooser(ioc.Path); } return(true); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.open_db_selection); var toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.mytoolbar); SetSupportActionBar(toolbar); SupportActionBar.Title = GetString(Resource.String.select_database); //only load the AppTask if this is the "first" OnCreate (not because of kill/resume, i.e. savedInstanceState==null) // and if the activity is not launched from history (i.e. recent tasks) because this would mean that // the Activity was closed already (user cancelling the task or task complete) but is restarted due recent tasks. // Don't re-start the task (especially bad if tak was complete already) if (Intent.Flags.HasFlag(ActivityFlags.LaunchedFromHistory)) { AppTask = new NullTask(); } else { AppTask = AppTask.GetTaskInOnCreate(savedInstanceState, Intent); } _adapter = new OpenDatabaseAdapter(this); var gridView = FindViewById <GridView>(Resource.Id.gridview); gridView.Adapter = _adapter; if (!string.IsNullOrEmpty(Intent.GetStringExtra(Util.KeyFilename))) { //forward to password activity Intent i = new Intent(this, typeof(PasswordActivity)); IOConnectionInfo ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(ioc, Intent); Util.PutIoConnectionToIntent(ioc, i); i.PutExtra(PasswordActivity.KeyKeyfile, i.GetStringExtra(PasswordActivity.KeyKeyfile)); i.PutExtra(PasswordActivity.KeyPassword, i.GetStringExtra(PasswordActivity.KeyPassword)); LaunchingOther = true; StartActivityForResult(i, ReqCodeOpenNewDb); } else { if (Intent.Action == Intent.ActionView) { GetIocFromViewIntent(Intent); } else if (Intent.Action == Intent.ActionSend) { AppTask = new SearchUrlTask { UrlToSearchFor = Intent.GetStringExtra(Intent.ExtraText) }; } } _intentReceiver = new MyBroadcastReceiver(this); IntentFilter filter = new IntentFilter(); filter.AddAction(Intents.DatabaseLocked); RegisterReceiver(_intentReceiver, filter); }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (resultCode == KeePass.ResultOkPasswordGenerator) { String generatedPassword = data.GetStringExtra("keepass2android.password.generated_password"); FindViewById <TextView>(Resource.Id.entry_password).Text = generatedPassword; FindViewById <TextView>(Resource.Id.entry_confpassword).Text = generatedPassword; } if (resultCode == KeePass.ExitFileStorageSelectionOk) { string protocolId = data.GetStringExtra("protocolId"); if (protocolId == "content") { Util.ShowBrowseDialog(this, RequestCodeDbFilename, true, true); } else { FileSelectHelper fileSelectHelper = new FileSelectHelper(this, true, RequestCodeDbFilename) { DefaultExtension = "kdbx" }; fileSelectHelper.OnOpen += (sender, info) => { _ioc = info; UpdateIocView(); }; App.Kp2a.GetFileStorage(protocolId).StartSelectFile( new FileStorageSetupInitiatorActivity(this, OnActivityResult, s => fileSelectHelper.PerformManualFileSelect(s)), true, RequestCodeDbFilename, protocolId); } } if (resultCode == Result.Ok) { if (requestCode == RequestCodeKeyFile) { if (data.Data.Scheme == "content") { if ((int)Build.VERSION.SdkInt >= 19) { //try to take persistable permissions try { Kp2aLog.Log("TakePersistableUriPermission"); var takeFlags = data.Flags & (ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission); this.ContentResolver.TakePersistableUriPermission(data.Data, takeFlags); } catch (Exception e) { Kp2aLog.Log(e.ToString()); } } } string filename = Util.IntentToFilename(data, this); if (filename == null) { filename = data.DataString; } _keyfileFilename = ConvertFilenameToIocPath(filename); FindViewById <TextView>(Resource.Id.keyfile_filename).Text = _keyfileFilename; FindViewById(Resource.Id.keyfile_filename).Visibility = ViewStates.Visible; } if (requestCode == RequestCodeDbFilename) { if (data.Data.Scheme == "content") { if ((int)Build.VERSION.SdkInt >= 19) { //try to take persistable permissions try { Kp2aLog.Log("TakePersistableUriPermission"); var takeFlags = data.Flags & (ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission); this.ContentResolver.TakePersistableUriPermission(data.Data, takeFlags); } catch (Exception e) { Kp2aLog.Log(e.ToString()); } } } string filename = Util.IntentToFilename(data, this); if (filename == null) { filename = data.DataString; } bool fileExists = data.GetBooleanExtra("group.pals.android.lib.ui.filechooser.FileChooserActivity.result_file_exists", true); if (fileExists) { _ioc = new IOConnectionInfo { Path = ConvertFilenameToIocPath(filename) }; UpdateIocView(); } else { var task = new CreateNewFilename(this, new ActionOnFinish(this, (success, messageOrFilename, activity) => { if (!success) { Toast.MakeText(activity, messageOrFilename, ToastLength.Long).Show(); return; } _ioc = new IOConnectionInfo { Path = ConvertFilenameToIocPath(messageOrFilename) }; ((CreateDatabaseActivity)activity)?.UpdateIocView(); }), filename); new ProgressTask(App.Kp2a, this, task).Run(); } } } if (resultCode == (Result)FileStorageResults.FileUsagePrepared) { _ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(_ioc, data); UpdateIocView(); } if (resultCode == (Result)FileStorageResults.FileChooserPrepared) { IOConnectionInfo ioc = new IOConnectionInfo(); Util.SetIoConnectionFromIntent(ioc, data); new FileSelectHelper(this, true, RequestCodeDbFilename) { DefaultExtension = "kdbx" } .StartFileChooser(ioc.Path); } }