Merge "Fix Exchange directory lookup for phone queries." into jb-ub-mail-ur10
diff --git a/Android.mk b/Android.mk
index 2cbb478..7a3de44 100644
--- a/Android.mk
+++ b/Android.mk
@@ -40,7 +40,7 @@
 LOCAL_OVERRIDES_PACKAGES := Exchange
 
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-LOCAL_SDK_VERSION := 18
+LOCAL_SDK_VERSION := 19
 
 LOCAL_EMMA_COVERAGE_FILTER += +com.android.exchange.*
 
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c057dae..0f9392c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -62,7 +62,7 @@
     <uses-permission
         android:name="com.android.email.permission.ACCESS_PROVIDER"/>
 
-    <uses-sdk android:targetSdkVersion="18" android:minSdkVersion="14" />
+    <uses-sdk android:targetSdkVersion="19" android:minSdkVersion="14" />
 
     <!-- additional uses -->
 
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 154cff1..7c8f3a9 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -27,28 +27,28 @@
     <string name="meeting_recurring" msgid="3134262212606714023">"الموعد: <xliff:g id="EVENTDATE">%s</xliff:g> (متكرر)"</string>
     <string name="meeting_allday" msgid="6696389765484663513">"الموعد: <xliff:g id="EVENTDATE">%s</xliff:g> (اليوم كله)"</string>
     <string name="meeting_allday_recurring" msgid="2320264182781062684">"الموعد: <xliff:g id="EVENTDATE">%s</xliff:g> (اليوم كله، بشكل متكرر)"</string>
-    <string name="notification_exchange_calendar_added" msgid="6823659622379350159">"تمت إضافة تقويم Exchange"</string>
-    <string name="app_name" msgid="5316597712787122829">"خدمات Exchange"</string>
+    <string name="notification_exchange_calendar_added" msgid="6823659622379350159">"‏تمت إضافة تقويم Exchange"</string>
+    <string name="app_name" msgid="5316597712787122829">"‏خدمات Exchange"</string>
     <string name="exception_cancel" msgid="6160117429428313805">"تم إلغاء هذا الحدث لـ: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="3397583105901142050">"تم تغيير التفاصيل لهذا الحدث لـ: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="policy_dont_allow_storage_cards" msgid="2765447013574188473">"عدم السماح ببطاقات التخزين"</string>
     <string name="policy_dont_allow_unsigned_apps" msgid="4896164334956001479">"عدم السماح بالتطبيقات غير الموقعة"</string>
     <string name="policy_dont_allow_unsigned_installers" msgid="1326544905185523540">"عدم السماح بمثبتات التطبيقات غير الموقعة"</string>
-    <string name="policy_dont_allow_wifi" msgid="3109487776704143995">"عدم السماح باتصالات Wi-Fi"</string>
+    <string name="policy_dont_allow_wifi" msgid="3109487776704143995">"‏عدم السماح باتصالات Wi-Fi"</string>
     <string name="policy_dont_allow_text_messaging" msgid="7846141657345860427">"عدم السماح بالرسائل النصية"</string>
-    <string name="policy_dont_allow_pop_imap" msgid="4702932192358698651">"عدم السماح بحسابات POP3 أو IMAP"</string>
+    <string name="policy_dont_allow_pop_imap" msgid="4702932192358698651">"‏عدم السماح بحسابات POP3 أو IMAP"</string>
     <string name="policy_dont_allow_irda" msgid="1848561629495912430">"عدم السماح باتصالات الأشعة تحت الحمراء"</string>
-    <string name="policy_dont_allow_html" msgid="5888652525907651489">"عدم السماح برسائل HTML الإلكترونية"</string>
+    <string name="policy_dont_allow_html" msgid="5888652525907651489">"‏عدم السماح برسائل HTML الإلكترونية"</string>
     <string name="policy_dont_allow_browser" msgid="1018764395507493616">"عدم السماح للمتصفحات"</string>
     <string name="policy_dont_allow_consumer_email" msgid="6958427300686692292">"عدم السماح برسائل المستهلكين الإلكترونية"</string>
     <string name="policy_dont_allow_internet_sharing" msgid="2370083814654927695">"عدم السماح بالمشاركة عبر الإنترنت"</string>
-    <string name="policy_require_smime" msgid="673557150920820590">"يلزم توفر الرسائل بتنسيق SMIME"</string>
+    <string name="policy_require_smime" msgid="673557150920820590">"‏يلزم توفر الرسائل بتنسيق SMIME"</string>
     <string name="policy_bluetooth_restricted" msgid="5248824127186039567">"تقييد استخدام البلوتوث"</string>
     <string name="policy_app_blacklist" msgid="8169194058285873461">"عدم السماح بتطبيقات محددة"</string>
     <string name="policy_app_whitelist" msgid="3670572644342165306">"السماح بتطبيقات محددة فقط"</string>
     <string name="policy_text_truncation" msgid="1783448050735715818">"تقييد حجم الرسالة الإلكترونية النصية"</string>
-    <string name="policy_html_truncation" msgid="102158408055486343">"تقييد حجم رسائل HTML الإلكترونية"</string>
-    <string name="policy_require_sd_encryption" msgid="366468398301273342">"يلزم تشفير بطاقة SD"</string>
+    <string name="policy_html_truncation" msgid="102158408055486343">"‏تقييد حجم رسائل HTML الإلكترونية"</string>
+    <string name="policy_require_sd_encryption" msgid="366468398301273342">"‏يلزم تشفير بطاقة SD"</string>
     <string name="policy_dont_allow_attachments" msgid="6250520458670348907">"عدم السماح بالمرفقات"</string>
     <string name="policy_max_attachment_size" msgid="4020279603050888661">"تقييد حجم المرفق"</string>
     <string name="policy_require_manual_sync_roaming" msgid="6637416341015662148">"السماح بالمزامنة اليدوية فقط أثناء التجوال"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 7c764e1..8a7007d 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -27,28 +27,28 @@
     <string name="meeting_recurring" msgid="3134262212606714023">"زمان: <xliff:g id="EVENTDATE">%s</xliff:g> (تکرار)"</string>
     <string name="meeting_allday" msgid="6696389765484663513">"زمان: <xliff:g id="EVENTDATE">%s</xliff:g> (در تمام طول روز)"</string>
     <string name="meeting_allday_recurring" msgid="2320264182781062684">"زمان: <xliff:g id="EVENTDATE">%s</xliff:g> (در تمام طول روز، به‌صورت تکراری)"</string>
-    <string name="notification_exchange_calendar_added" msgid="6823659622379350159">"تقویم Exchange اضافه شد"</string>
-    <string name="app_name" msgid="5316597712787122829">"سرویس‌های Exchange"</string>
+    <string name="notification_exchange_calendar_added" msgid="6823659622379350159">"‏تقویم Exchange اضافه شد"</string>
+    <string name="app_name" msgid="5316597712787122829">"‏سرویس‌های Exchange"</string>
     <string name="exception_cancel" msgid="6160117429428313805">"این رویداد لغو شده است به مدت: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="3397583105901142050">"جزئیات این رویداد تغییر کرده‌اند به مدت: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="policy_dont_allow_storage_cards" msgid="2765447013574188473">"کارت‌های حافظه مجاز نیست"</string>
     <string name="policy_dont_allow_unsigned_apps" msgid="4896164334956001479">"برنامه‌های امضا نشده مجاز نیستند"</string>
     <string name="policy_dont_allow_unsigned_installers" msgid="1326544905185523540">"نصب کننده‌های برنامه امضا نشده مجاز نیستند"</string>
-    <string name="policy_dont_allow_wifi" msgid="3109487776704143995">"Wi-Fi مجاز نیست"</string>
+    <string name="policy_dont_allow_wifi" msgid="3109487776704143995">"‏Wi-Fi مجاز نیست"</string>
     <string name="policy_dont_allow_text_messaging" msgid="7846141657345860427">"پیام‌رسانی نوشتاری مجاز نیست"</string>
-    <string name="policy_dont_allow_pop_imap" msgid="4702932192358698651">"حساب‌های POP3 یا IMAP مجاز نیست"</string>
+    <string name="policy_dont_allow_pop_imap" msgid="4702932192358698651">"‏حساب‌های POP3 یا IMAP مجاز نیست"</string>
     <string name="policy_dont_allow_irda" msgid="1848561629495912430">"ارتباطات مادون قرمز مجاز نیست"</string>
-    <string name="policy_dont_allow_html" msgid="5888652525907651489">"ایمیل HTML مجاز نیست"</string>
+    <string name="policy_dont_allow_html" msgid="5888652525907651489">"‏ایمیل HTML مجاز نیست"</string>
     <string name="policy_dont_allow_browser" msgid="1018764395507493616">"مرورگرها مجاز نیستند"</string>
     <string name="policy_dont_allow_consumer_email" msgid="6958427300686692292">"ایمیل مصرف‌کننده مجاز نیست"</string>
     <string name="policy_dont_allow_internet_sharing" msgid="2370083814654927695">"اشتراک‌گذاری اینترنتی مجاز نیست"</string>
-    <string name="policy_require_smime" msgid="673557150920820590">"پیام‌های SMIME لازم است"</string>
+    <string name="policy_require_smime" msgid="673557150920820590">"‏پیام‌های SMIME لازم است"</string>
     <string name="policy_bluetooth_restricted" msgid="5248824127186039567">"استفاده از بلوتوث محدود است"</string>
     <string name="policy_app_blacklist" msgid="8169194058285873461">"برنامه‌های خاص مجاز نیستند"</string>
     <string name="policy_app_whitelist" msgid="3670572644342165306">"فقط برنامه‌های خاص مجاز هستند"</string>
     <string name="policy_text_truncation" msgid="1783448050735715818">"اندازه نوشتار ایمیل محدود است"</string>
-    <string name="policy_html_truncation" msgid="102158408055486343">"اندازه ایمیل HTML محدود است"</string>
-    <string name="policy_require_sd_encryption" msgid="366468398301273342">"کارت sd باید رمزگذاری شود"</string>
+    <string name="policy_html_truncation" msgid="102158408055486343">"‏اندازه ایمیل HTML محدود است"</string>
+    <string name="policy_require_sd_encryption" msgid="366468398301273342">"‏کارت sd باید رمزگذاری شود"</string>
     <string name="policy_dont_allow_attachments" msgid="6250520458670348907">"پیوست‌ها مجاز نیستند"</string>
     <string name="policy_max_attachment_size" msgid="4020279603050888661">"اندازه پیوست محدود است"</string>
     <string name="policy_require_manual_sync_roaming" msgid="6637416341015662148">"در حالت رومینگ فقط همگام‌سازی دستی مجاز است"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 0e23d63..af3b0cd 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -32,8 +32,8 @@
     <string name="exception_cancel" msgid="6160117429428313805">"यह ईवेंट इसके लिए रद्द कर दिया गया है: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="3397583105901142050">"इस ईवेंट का विवरण इसके लिए ‍बदल दिया गया है: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="policy_dont_allow_storage_cards" msgid="2765447013574188473">"संग्रहण कार्ड को अनुमति न दें"</string>
-    <string name="policy_dont_allow_unsigned_apps" msgid="4896164334956001479">"अहस्ताक्षरित एप्स की अनुमति न दें"</string>
-    <string name="policy_dont_allow_unsigned_installers" msgid="1326544905185523540">"अहस्ता. एप्लि. इंस्‍टॉलर को अनुमति न दें"</string>
+    <string name="policy_dont_allow_unsigned_apps" msgid="4896164334956001479">"अहस्ताक्षरित ऐप्स  की अनुमति न दें"</string>
+    <string name="policy_dont_allow_unsigned_installers" msgid="1326544905185523540">"अहस्ता. ऐप्स इंस्‍टॉलर को अनुमति न दें"</string>
     <string name="policy_dont_allow_wifi" msgid="3109487776704143995">"Wi-Fi की अनुमति न दें"</string>
     <string name="policy_dont_allow_text_messaging" msgid="7846141657345860427">"पाठ संदेश सेवा की अनुमति न दें"</string>
     <string name="policy_dont_allow_pop_imap" msgid="4702932192358698651">"POP3 या IMAP खातों को अनुमति न दें"</string>
@@ -44,8 +44,8 @@
     <string name="policy_dont_allow_internet_sharing" msgid="2370083814654927695">"इंटरनेट साझाकरण की अनुमति न दें"</string>
     <string name="policy_require_smime" msgid="673557150920820590">"SMIME संदेश आवश्‍यक"</string>
     <string name="policy_bluetooth_restricted" msgid="5248824127186039567">"Bluetooth का उपयोग प्रतिबंधित करें"</string>
-    <string name="policy_app_blacklist" msgid="8169194058285873461">"निर्दिष्ट एप्स की अनुमति न दें"</string>
-    <string name="policy_app_whitelist" msgid="3670572644342165306">"केवल निर्दिष्ट एप्स की अनुमति दें"</string>
+    <string name="policy_app_blacklist" msgid="8169194058285873461">"निर्दिष्ट ऐप्स  की अनुमति न दें"</string>
+    <string name="policy_app_whitelist" msgid="3670572644342165306">"केवल निर्दिष्ट ऐप्स  की अनुमति दें"</string>
     <string name="policy_text_truncation" msgid="1783448050735715818">"पाठ ईमेल का आकार प्रतिबंधित करें"</string>
     <string name="policy_html_truncation" msgid="102158408055486343">"HTML ईमेल का आकार प्रतिबंधित करें"</string>
     <string name="policy_require_sd_encryption" msgid="366468398301273342">"SD कार्ड एन्‍क्रिप्शन आवश्‍यक"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 556a455..01cc60f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -27,28 +27,28 @@
     <string name="meeting_recurring" msgid="3134262212606714023">"מתי: <xliff:g id="EVENTDATE">%s</xliff:g> (אירוע חוזר)"</string>
     <string name="meeting_allday" msgid="6696389765484663513">"מתי: <xliff:g id="EVENTDATE">%s</xliff:g> (כל יום)"</string>
     <string name="meeting_allday_recurring" msgid="2320264182781062684">"מתי: <xliff:g id="EVENTDATE">%s</xliff:g> (כל היום, חוזר)"</string>
-    <string name="notification_exchange_calendar_added" msgid="6823659622379350159">"נוסף יומן של Exchange"</string>
-    <string name="app_name" msgid="5316597712787122829">"שירותי Exchange"</string>
+    <string name="notification_exchange_calendar_added" msgid="6823659622379350159">"‏נוסף יומן של Exchange"</string>
+    <string name="app_name" msgid="5316597712787122829">"‏שירותי Exchange"</string>
     <string name="exception_cancel" msgid="6160117429428313805">"אירוע זה בוטל לתאריך: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="exception_updated" msgid="3397583105901142050">"הפרטים של אירוע זה השתנו בתאריך: <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="policy_dont_allow_storage_cards" msgid="2765447013574188473">"אל תאפשר כרטיסי אחסון"</string>
     <string name="policy_dont_allow_unsigned_apps" msgid="4896164334956001479">"אל תאפשר יישומים לא חתומים"</string>
     <string name="policy_dont_allow_unsigned_installers" msgid="1326544905185523540">"אל תאפשר תוכנות התקנה לא חתומות של יישום."</string>
-    <string name="policy_dont_allow_wifi" msgid="3109487776704143995">"אל תאפשר Wi-Fi"</string>
+    <string name="policy_dont_allow_wifi" msgid="3109487776704143995">"‏אל תאפשר Wi-Fi"</string>
     <string name="policy_dont_allow_text_messaging" msgid="7846141657345860427">"אל תאפשר העברת הודעות טקסט"</string>
-    <string name="policy_dont_allow_pop_imap" msgid="4702932192358698651">"אל תאפשר חשבונות מסוג POP3 או IMAP"</string>
+    <string name="policy_dont_allow_pop_imap" msgid="4702932192358698651">"‏אל תאפשר חשבונות מסוג POP3 או IMAP"</string>
     <string name="policy_dont_allow_irda" msgid="1848561629495912430">"אל תאפשר תקשורת אינפרא-אדום"</string>
-    <string name="policy_dont_allow_html" msgid="5888652525907651489">"אל תאפשר דוא\"ל בפורמט HTML"</string>
+    <string name="policy_dont_allow_html" msgid="5888652525907651489">"‏אל תאפשר דוא\"ל בפורמט HTML"</string>
     <string name="policy_dont_allow_browser" msgid="1018764395507493616">"אל תאפשר דפדפנים"</string>
     <string name="policy_dont_allow_consumer_email" msgid="6958427300686692292">"אל תאפשר דוא\"ל צרכן"</string>
     <string name="policy_dont_allow_internet_sharing" msgid="2370083814654927695">"אל תאפשר שיתוף באינטרנט"</string>
-    <string name="policy_require_smime" msgid="673557150920820590">"נדרשת העברת הודעות SMIME"</string>
-    <string name="policy_bluetooth_restricted" msgid="5248824127186039567">"הגבל את השימוש ב-Bluetooth"</string>
+    <string name="policy_require_smime" msgid="673557150920820590">"‏נדרשת העברת הודעות SMIME"</string>
+    <string name="policy_bluetooth_restricted" msgid="5248824127186039567">"‏הגבל את השימוש ב-Bluetooth"</string>
     <string name="policy_app_blacklist" msgid="8169194058285873461">"אל תאפשר יישומים שצוינו"</string>
     <string name="policy_app_whitelist" msgid="3670572644342165306">"אפשר רק יישומים שצוינו"</string>
     <string name="policy_text_truncation" msgid="1783448050735715818">"הגבל את גודל הטקסט בדוא\"ל"</string>
-    <string name="policy_html_truncation" msgid="102158408055486343">"הגבל גודל דוא\"ל בפורמט HTML"</string>
-    <string name="policy_require_sd_encryption" msgid="366468398301273342">"נדרשת הצפנת כרטיס SD"</string>
+    <string name="policy_html_truncation" msgid="102158408055486343">"‏הגבל גודל דוא\"ל בפורמט HTML"</string>
+    <string name="policy_require_sd_encryption" msgid="366468398301273342">"‏נדרשת הצפנת כרטיס SD"</string>
     <string name="policy_dont_allow_attachments" msgid="6250520458670348907">"אל תאפשר קבצים מצורפים"</string>
     <string name="policy_max_attachment_size" msgid="4020279603050888661">"הגבל את גודל הקובץ המצורף"</string>
     <string name="policy_require_manual_sync_roaming" msgid="6637416341015662148">"אפשר רק סינכרון ידני בעת נדידה"</string>
diff --git a/src/com/android/exchange/adapter/ProvisionParser.java b/src/com/android/exchange/adapter/ProvisionParser.java
index d7be0d8..436a0a4 100644
--- a/src/com/android/exchange/adapter/ProvisionParser.java
+++ b/src/com/android/exchange/adapter/ProvisionParser.java
@@ -18,7 +18,8 @@
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.content.res.Resources;
-import android.os.storage.StorageManager;
+import android.os.Environment;
+import android.support.v4.content.ContextCompat;
 
 import com.android.emailcommon.provider.Policy;
 import com.android.exchange.Eas;
@@ -31,10 +32,9 @@
 import org.xmlpull.v1.XmlPullParserFactory;
 
 import java.io.ByteArrayInputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 
 /**
@@ -616,31 +616,8 @@
      * TODO: Rewrite this when an appropriate API is available from the framework
      */
     private boolean hasRemovableStorage() {
-        try {
-            StorageManager sm = (StorageManager)mContext.getSystemService(Context.STORAGE_SERVICE);
-            Class<?> svClass = Class.forName("android.os.storage.StorageVolume");
-            Class<?> svManager = Class.forName("android.os.storage.StorageManager");
-            Method gvl = svManager.getDeclaredMethod("getVolumeList");
-            Object[] volumeList = (Object[]) gvl.invoke(sm);
-            for (Object volume: volumeList) {
-                Method isRemovable = svClass.getDeclaredMethod("isRemovable");
-                Method getDescription = svClass.getDeclaredMethod("getDescription");
-                String desc = (String)getDescription.invoke(volume);
-                if ((Boolean)isRemovable.invoke(volume)) {
-                    log("Removable: " + desc);
-                    return true;
-                } else {
-                    log("Not Removable: " + desc);
-                }
-            }
-            return false;
-        } catch (ClassNotFoundException e) {
-        } catch (NoSuchMethodException e) {
-        } catch (IllegalArgumentException e) {
-        } catch (IllegalAccessException e) {
-        } catch (InvocationTargetException e) {
-        }
-        // To be safe, we'll always indicate that there IS removable storage
-        return true;
+        final File[] cacheDirs = ContextCompat.getExternalCacheDirs(mContext);
+        return Environment.isExternalStorageRemovable()
+                || (cacheDirs != null && cacheDirs.length > 1);
     }
 }
diff --git a/src/com/android/exchange/utility/CalendarUtilities.java b/src/com/android/exchange/utility/CalendarUtilities.java
index 8739b80..2251e22 100644
--- a/src/com/android/exchange/utility/CalendarUtilities.java
+++ b/src/com/android/exchange/utility/CalendarUtilities.java
@@ -1520,7 +1520,7 @@
         int attendeeStatus;
         switch (responseType) {
             case RESPONSE_TYPE_NOT_RESPONDED:
-                attendeeStatus = Attendees.ATTENDEE_STATUS_NONE;
+                attendeeStatus = Attendees.ATTENDEE_STATUS_INVITED;
                 break;
             case RESPONSE_TYPE_ACCEPTED:
                 attendeeStatus = Attendees.ATTENDEE_STATUS_ACCEPTED;