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