diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index edf615accabf22e063a8f0a63ae4a79968bd80d6..798d615a1eebb7b966b851a4e291a392c586378f 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -213,5 +213,6 @@
     <!-- dictionary pack package name /settings activity (for shared prefs and settings) -->
     <string name="dictionary_pack_package_name">com.google.android.inputmethod.latin.dictionarypack</string>
     <string name="dictionary_pack_settings_activity">com.google.android.inputmethod.latin.dictionarypack.DictionarySettingsActivity</string>
+    <string name="dictionary_pack_client_id">com.android.inputmethod.latin</string>
     <string name="settings_warning_researcher_mode">Attention!  You are using the special keyboard for research purposes.</string>
 </resources>
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index ef440c5dff1bf1b26765ae074de0b23640763bfd..d4cdc6c5c024756d7cdf6bf7dc6fe0b29c89757e 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -62,6 +62,13 @@ public final class BinaryDictionaryFileDumper {
     private static final String QUERY_PARAMETER_SUCCESS = "success";
     private static final String QUERY_PARAMETER_FAILURE = "failure";
 
+    // Using protocol version 2 to communicate with the dictionary pack
+    private static final String QUERY_PARAMETER_PROTOCOL = "protocol";
+    private static final String QUERY_PARAMETER_PROTOCOL_VALUE = "2";
+
+    // The path fragment to append after the client ID for dictionary info requests.
+    private static final String QUERY_PATH_DICT_INFO = "dict";
+
     // Prevents this class to be accidentally instantiated.
     private BinaryDictionaryFileDumper() {
     }
@@ -85,7 +92,11 @@ public final class BinaryDictionaryFileDumper {
     private static List<WordListInfo> getWordListWordListInfos(final Locale locale,
             final Context context, final boolean hasDefaultWordList) {
         final ContentResolver resolver = context.getContentResolver();
-        final Uri.Builder builder = getProviderUriBuilder(locale.toString());
+        final String clientId = context.getString(R.string.dictionary_pack_client_id);
+        final Uri.Builder builder = getProviderUriBuilder(clientId);
+        builder.appendPath(QUERY_PATH_DICT_INFO);
+        builder.appendPath(locale.toString());
+        builder.appendQueryParameter(QUERY_PARAMETER_PROTOCOL, QUERY_PARAMETER_PROTOCOL_VALUE);
         if (!hasDefaultWordList) {
             builder.appendQueryParameter(QUERY_PARAMETER_MAY_PROMPT_USER, QUERY_PARAMETER_TRUE);
         }