diff --git a/src/com/android/phone/ADNList.java b/src/com/android/phone/ADNList.java
index 2e2db31..cdd136d 100644
--- a/src/com/android/phone/ADNList.java
+++ b/src/com/android/phone/ADNList.java
@@ -28,7 +28,10 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
 import android.util.Log;
+import android.view.View;
 import android.view.Window;
 import android.widget.CursorAdapter;
 import android.widget.SimpleCursorAdapter;
@@ -161,9 +164,31 @@
     }
 
     protected CursorAdapter newAdapter() {
-        return new SimpleCursorAdapter(this,
-                    android.R.layout.simple_list_item_2,
-                    mCursor, COLUMN_NAMES, VIEW_NAMES);
+        SimpleCursorAdapter sca = new SimpleCursorAdapter(this,
+                android.R.layout.simple_list_item_2,
+                mCursor, COLUMN_NAMES, VIEW_NAMES);
+
+        // This code block is for displaying a phone number including "+ country code" correctly
+        // in bidirectional language (b/35180168).
+        // Without this code, e.g. "+0123456789" is wrongly displayed as "0123456789+".
+        sca.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
+            public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
+                view.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+                if (columnIndex == NUMBER_COLUMN) {
+                    String num = cursor.getString(NUMBER_COLUMN);
+                    if (num != null) {
+                        BidiFormatter bf = BidiFormatter.getInstance();
+                        num = bf.unicodeWrap(num, TextDirectionHeuristics.LTR, true);
+                    }
+                    if (view instanceof TextView) {
+                        ((TextView) view).setText(num);
+                    }
+                    return true;
+                }
+                return false;
+            }
+        });
+        return sca;
     }
 
     private void displayProgress(boolean loading) {
diff --git a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
index 23ef0bb..b8a761c 100644
--- a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
+++ b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
@@ -243,6 +243,7 @@
 
         mNumberField = (EditText) findViewById(R.id.fdn_number);
         if (mNumberField != null) {
+            mNumberField.setTextDirection(View.TEXT_DIRECTION_LTR);
             mNumberField.setKeyListener(DialerKeyListener.getInstance());
             mNumberField.setOnFocusChangeListener(mOnFocusChangeHandler);
             mNumberField.setOnClickListener(mClicked);
