diff --git a/android/sqlite3_android.cpp b/android/sqlite3_android.cpp
index a937573..11de1f7 100644
--- a/android/sqlite3_android.cpp
+++ b/android/sqlite3_android.cpp
@@ -420,6 +420,9 @@
 
 #define LOCALIZED_COLLATOR_NAME "LOCALIZED"
 
+// This collator may be removed in the near future, so you MUST not use now.
+#define PHONEBOOK_COLLATOR_NAME "PHONEBOOK"
+
 extern "C" int register_localized_collators(sqlite3* handle, const char* systemLocale, int utf16Storage)
 {
     int err;
@@ -438,7 +441,7 @@
 
     status = U_ZERO_ERROR;
     char buf[1024];
-    int n = ucol_getShortDefinitionString(collator, NULL, buf, 1024, &status);
+    ucol_getShortDefinitionString(collator, NULL, buf, 1024, &status);
 
     if (utf16Storage) {
         err = sqlite3_create_collation_v2(handle, LOCALIZED_COLLATOR_NAME, SQLITE_UTF16, collator,
@@ -447,6 +450,7 @@
         err = sqlite3_create_collation_v2(handle, LOCALIZED_COLLATOR_NAME, SQLITE_UTF8, collator,
                 collate8, (void(*)(void*))localized_collator_dtor);
     }
+
     if (err != SQLITE_OK) {
         return err;
     }
@@ -465,6 +469,41 @@
         return err;
     }
 
+
+    //// PHONEBOOK_COLLATOR
+    // The collator may be removed in the near future. Do not depend on it.
+    // TODO: it might be better to have another function for registering phonebook collator.
+    status = U_ZERO_ERROR;
+    if (strcmp(systemLocale, "ja") == 0 || strcmp(systemLocale, "ja_JP") == 0) {
+        collator = ucol_open("ja@collation=phonebook", &status);
+    } else {
+        collator = ucol_open(systemLocale, &status);
+    }
+    if (U_FAILURE(status)) {
+        return -1;
+    }
+
+    status = U_ZERO_ERROR;
+    ucol_setAttribute(collator, UCOL_STRENGTH, UCOL_PRIMARY, &status);
+    if (U_FAILURE(status)) {
+        return -1;
+    }
+
+    status = U_ZERO_ERROR;
+    // ucol_getShortDefinitionString(collator, NULL, buf, 1024, &status);
+    if (utf16Storage) {
+        err = sqlite3_create_collation_v2(handle, PHONEBOOK_COLLATOR_NAME, SQLITE_UTF16, collator,
+                collate16, (void(*)(void*))localized_collator_dtor);
+    } else {
+        err = sqlite3_create_collation_v2(handle, PHONEBOOK_COLLATOR_NAME, SQLITE_UTF8, collator,
+                collate8, (void(*)(void*))localized_collator_dtor);
+    }
+
+    if (err != SQLITE_OK) {
+        return err;
+    }
+    //// PHONEBOOK_COLLATOR
+
     return SQLITE_OK;
 }
 
