bool MakeAccessibleForKeyboard(PwEntryOutput entry, string searchUrl) { #if EXCLUDE_KEYBOARD return(false); #else bool hasData = false; Keepass2android.Kbbridge.KeyboardDataBuilder kbdataBuilder = new Keepass2android.Kbbridge.KeyboardDataBuilder(); String[] keys = { PwDefs.UserNameField, PwDefs.PasswordField, PwDefs.UrlField, PwDefs.NotesField, PwDefs.TitleField }; int[] resIds = { Resource.String.entry_user_name, Resource.String.entry_password, Resource.String.entry_url, Resource.String.entry_comment, Resource.String.entry_title }; //add standard fields: int i = 0; foreach (string key in keys) { String value = entry.OutputStrings.ReadSafe(key); if (value.Length > 0) { kbdataBuilder.AddString(key, GetString(resIds[i]), value); hasData = true; } i++; } //add additional fields: foreach (var pair in entry.OutputStrings) { var key = pair.Key; var value = pair.Value.ReadString(); if (!PwDefs.IsStandardField(key)) { kbdataBuilder.AddString(pair.Key, pair.Key, value); hasData = true; } } kbdataBuilder.Commit(); Keepass2android.Kbbridge.KeyboardData.EntryName = entry.OutputStrings.ReadSafe(PwDefs.TitleField); Keepass2android.Kbbridge.KeyboardData.EntryId = entry.Uuid.ToHexString(); if (hasData) { Keepass2android.Autofill.AutoFillService.NotifyNewData(searchUrl); } return(hasData); #endif }
bool MakeAccessibleForKeyboard(PwEntryOutput entry) { #if EXCLUDE_KEYBOARD return false; #else bool hasData = false; Keepass2android.Kbbridge.KeyboardDataBuilder kbdataBuilder = new Keepass2android.Kbbridge.KeyboardDataBuilder(); String[] keys = {PwDefs.UserNameField, PwDefs.PasswordField, PwDefs.UrlField, PwDefs.NotesField, PwDefs.TitleField }; int[] resIds = {Resource.String.entry_user_name, Resource.String.entry_password, Resource.String.entry_url, Resource.String.entry_comment, Resource.String.entry_title }; //add standard fields: int i=0; foreach (string key in keys) { String value = entry.OutputStrings.ReadSafe(key); if (value.Length > 0) { kbdataBuilder.AddString(key, GetString(resIds[i]), value); hasData = true; } i++; } //add additional fields: foreach (var pair in entry.OutputStrings) { var key = pair.Key; var value = pair.Value.ReadString(); if (!PwDefs.IsStandardField(key)) { kbdataBuilder.AddString(pair.Key, pair.Key, value); hasData = true; } } kbdataBuilder.Commit(); Keepass2android.Kbbridge.KeyboardData.EntryName = entry.OutputStrings.ReadSafe(PwDefs.TitleField); Keepass2android.Kbbridge.KeyboardData.EntryId = entry.Uuid.ToHexString(); return hasData; #endif }
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); try { string lastQueriedUrl = data.GetStringExtra(Strings.ExtraQueryString); string entryId = data.GetStringExtra(Strings.ExtraEntryId); var jsonOutput = new Org.Json.JSONObject(data.GetStringExtra(Strings.ExtraEntryOutputData)); Dictionary <string, string> output = new Dictionary <string, string>(); for (var iter = jsonOutput.Keys(); iter.HasNext;) { string key = iter.Next().ToString(); string value = jsonOutput.Get(key).ToString(); output[key] = value; } string user = "", password = ""; output.TryGetValue(KeePassLib.PwDefs.UserNameField, out user); output.TryGetValue(KeePassLib.PwDefs.PasswordField, out password); Android.Util.Log.Debug("KP2AAS", "Received credentials for " + lastQueriedUrl); bool hasData = false; Keepass2android.Kbbridge.KeyboardDataBuilder kbdataBuilder = new Keepass2android.Kbbridge.KeyboardDataBuilder(); String[] keys = { PwDefs.UserNameField, PwDefs.PasswordField, }; int i = 0; foreach (string key in keys) { String value; if (output.TryGetValue(key, out value) && (value.Length > 0)) { kbdataBuilder.AddString(key, keys[i], value); hasData = true; } i++; } kbdataBuilder.Commit(); string title; output.TryGetValue(PwDefs.TitleField, out title); if (string.IsNullOrEmpty(title)) { title = "untitled"; } Keepass2android.Kbbridge.KeyboardData.EntryName = title; Keepass2android.Kbbridge.KeyboardData.EntryId = entryId; if (hasData) { Keepass2android.Autofill.AutoFillService.NotifyNewData(lastQueriedUrl); } } catch (Exception e) { Android.Util.Log.Debug("KP2AAS", "Exception while receiving credentials: " + e.ToString()); } finally { Finish(); } }