diff --git a/src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Kp2aControl.java b/src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Kp2aControl.java index 2f26fccd..84bfc4e4 100644 --- a/src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Kp2aControl.java +++ b/src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Kp2aControl.java @@ -2,6 +2,7 @@ package keepass2android.pluginsdk; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import org.json.JSONArray; import org.json.JSONException; @@ -71,5 +72,40 @@ public class Kp2aControl { i.putExtra(Strings.EXTRA_QUERY_STRING, searchText); return i; } + + /** + * Creates an intent to query a password entry from KP2A, matching to the current app's package . + * The credentials are returned as Activity result. + * This requires SCOPE_QUERY_CREDENTIALS_FOR_OWN_PACKAGE. + * @return an Intent to start KP2A with + */ + public static Intent getQueryEntryIntentForOwnPackage() + { + return new Intent(Strings.ACTION_QUERY_CREDENTIALS_FOR_OWN_PACKAGE); + } + + /** + * Converts the entry fields returned in an intent from a query to a hashmap. + * @param intent data received in onActivityResult after getQueryEntryIntent(ForOwnPackage) + * @return HashMap with keys = field names (see KeepassDefs for standard keys) and values = values + */ + public static HashMap getEntryFieldsFromIntent(Intent intent) + { + HashMap res = new HashMap(); + try { + JSONObject json = new JSONObject(intent.getStringExtra(Strings.EXTRA_ENTRY_OUTPUT_DATA)); + for(Iterator iter = json.keys();iter.hasNext();) { + String key = iter.next(); + String value = json.get(key).toString(); + res.put(key, value); + } + + } catch (JSONException e) { + e.printStackTrace(); + } catch (NullPointerException e) { + e.printStackTrace(); + } + return res; + } } diff --git a/src/java/PluginA/AndroidManifest.xml b/src/java/PluginA/AndroidManifest.xml index b035a6b2..0a2188dd 100644 --- a/src/java/PluginA/AndroidManifest.xml +++ b/src/java/PluginA/AndroidManifest.xml @@ -28,7 +28,6 @@ - diff --git a/src/java/PluginA/gen/keepass2android/plugina/R.java b/src/java/PluginA/gen/keepass2android/plugina/R.java index 464b88df..4d76c256 100644 --- a/src/java/PluginA/gen/keepass2android/plugina/R.java +++ b/src/java/PluginA/gen/keepass2android/plugina/R.java @@ -31,7 +31,9 @@ public final class R { public static final int ic_launcher=0x7f020000; } public static final class id { - public static final int action_settings=0x7f080001; + public static final int action_settings=0x7f080003; + public static final int btnAdd=0x7f080001; + public static final int btnQuery=0x7f080002; public static final int container=0x7f080000; } public static final class layout { diff --git a/src/java/PluginA/res/layout/fragment_plug_in.xml b/src/java/PluginA/res/layout/fragment_plug_in.xml index 24d1ed42..e28c919b 100644 --- a/src/java/PluginA/res/layout/fragment_plug_in.xml +++ b/src/java/PluginA/res/layout/fragment_plug_in.xml @@ -8,9 +8,18 @@ android:paddingTop="@dimen/activity_vertical_margin" tools:context="keepass2android.plugina.PlugInA$PlaceholderFragment" > - + android:text="add credentials to KP2A"/> +