Merge "Don't set volume to remote if volume is same as current device volume" into rvc-qpr-dev
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 8c26a6b..72492dd 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -23,8 +23,8 @@
     <string name="bt_share_picker_label" msgid="6268100924487046932">"بلوتوث"</string>
     <string name="unknown_device" msgid="9221903979877041009">"جهاز غير معروف"</string>
     <string name="unknownNumber" msgid="4994750948072751566">"غير معروف"</string>
-    <string name="airplane_error_title" msgid="2683839635115739939">"وضع الطائرة"</string>
-    <string name="airplane_error_msg" msgid="8698965595254137230">"لا يمكنك استخدام البلوتوث في وضع الطائرة."</string>
+    <string name="airplane_error_title" msgid="2683839635115739939">"وضع الطيران"</string>
+    <string name="airplane_error_msg" msgid="8698965595254137230">"لا يمكنك استخدام البلوتوث في وضع الطيران."</string>
     <string name="bt_enable_title" msgid="8657832550503456572"></string>
     <string name="bt_enable_line1" msgid="7203551583048149">"لإستخدام خدمات البلوتوث، يجب تفعيل البلوتوث أولاً."</string>
     <string name="bt_enable_line2" msgid="4341936569415937994">"هل تريد تفعيل البلوتوث الآن؟"</string>
diff --git a/res/values-fa/strings_pbap.xml b/res/values-fa/strings_pbap.xml
index 348156a..1689150 100644
--- a/res/values-fa/strings_pbap.xml
+++ b/res/values-fa/strings_pbap.xml
@@ -3,7 +3,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="pbap_session_key_dialog_title" msgid="3580996574333882561">"‏تایپ کلید جلسه برای %1$s"</string>
     <string name="pbap_session_key_dialog_header" msgid="2772472422782758981">"به کلید جلسه بلوتوث نیاز است"</string>
-    <string name="pbap_acceptance_timeout_message" msgid="1107401415099814293">"‏پذیرش اتصال با %1$s خیلی زمان برد"</string>
+    <string name="pbap_acceptance_timeout_message" msgid="1107401415099814293">"‏پذیرفتن اتصال با %1$s خیلی زمان برد"</string>
     <string name="pbap_authentication_timeout_message" msgid="4166979525521902687">"‏وارد کردن کلید جلسه با %1$s خیلی زمان برد"</string>
     <string name="auth_notif_ticker" msgid="1575825798053163744">"‏درخواست احراز هویت Obex"</string>
     <string name="auth_notif_title" msgid="7599854855681573258">"کلید جلسه"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 3c51f64..57a6214 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -59,7 +59,7 @@
     <string name="download_fail_line1" msgid="3846450148862894552">"Ֆայլը չհաջողվեց ստանալ"</string>
     <string name="download_fail_line2" msgid="8950394574689971071">"Ֆայլ՝ <xliff:g id="FILE">%1$s</xliff:g>"</string>
     <string name="download_fail_line3" msgid="3451040656154861722">"Պատճառը՝ <xliff:g id="REASON">%1$s</xliff:g>"</string>
-    <string name="download_fail_ok" msgid="1521733664438320300">"Հաստատել"</string>
+    <string name="download_fail_ok" msgid="1521733664438320300">"Եղավ"</string>
     <string name="download_succ_line5" msgid="4509944688281573595">"Ֆայլը ստացվել է"</string>
     <string name="download_succ_ok" msgid="7053688246357050216">"Բացել"</string>
     <string name="upload_line1" msgid="2055952074059709052">"Ում՝ «<xliff:g id="RECIPIENT">%1$s</xliff:g>»"</string>
diff --git a/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java b/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
index ea9b256..26bec40 100644
--- a/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
+++ b/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
@@ -112,8 +112,9 @@
         Intent launchIntent = new Intent();
         launchIntent.setAction(BluetoothPrefs.BLUETOOTH_SETTING_ACTION);
         launchIntent.addCategory(BluetoothPrefs.BLUETOOTH_SETTING_CATEGORY);
+        int flags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
         PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0,
-                launchIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+                launchIntent, flags);
         extras.putParcelable(ERROR_RESOLUTION_ACTION_INTENT, pendingIntent);
         PlaybackStateCompat errorState = new PlaybackStateCompat.Builder()
                 .setErrorMessage(getString(R.string.bluetooth_disconnected))
diff --git a/src/com/android/bluetooth/hfp/AtPhonebook.java b/src/com/android/bluetooth/hfp/AtPhonebook.java
index d57b317..7259690 100644
--- a/src/com/android/bluetooth/hfp/AtPhonebook.java
+++ b/src/com/android/bluetooth/hfp/AtPhonebook.java
@@ -425,21 +425,29 @@
         }
 
         if (ancillaryPhonebook) {
-            pbr.cursor = mContentResolver.query(Calls.CONTENT_URI, CALLS_PROJECTION, where, null,
-                    Calls.DEFAULT_SORT_ORDER + " LIMIT " + MAX_PHONEBOOK_SIZE);
+            Bundle queryArgs = new Bundle();
+            queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, where);
+            queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SORT_ORDER, Calls.DEFAULT_SORT_ORDER);
+            queryArgs.putInt(ContentResolver.QUERY_ARG_LIMIT, MAX_PHONEBOOK_SIZE);
+            pbr.cursor = mContentResolver.query(Calls.CONTENT_URI, CALLS_PROJECTION,
+                    queryArgs, null);
+
             if (pbr.cursor == null) {
                 return false;
             }
-
             pbr.numberColumn = pbr.cursor.getColumnIndexOrThrow(Calls.NUMBER);
             pbr.numberPresentationColumn =
                     pbr.cursor.getColumnIndexOrThrow(Calls.NUMBER_PRESENTATION);
             pbr.typeColumn = -1;
             pbr.nameColumn = -1;
         } else {
+            Bundle queryArgs = new Bundle();
+            queryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, where);
+            queryArgs.putInt(ContentResolver.QUERY_ARG_LIMIT, MAX_PHONEBOOK_SIZE);
             final Uri phoneContentUri = DevicePolicyUtils.getEnterprisePhoneUri(mContext);
-            pbr.cursor = mContentResolver.query(phoneContentUri, PHONES_PROJECTION, where, null,
-                    Phone.NUMBER + " LIMIT " + MAX_PHONEBOOK_SIZE);
+            pbr.cursor = mContentResolver.query(phoneContentUri, PHONES_PROJECTION,
+                    queryArgs, null);
+
             if (pbr.cursor == null) {
                 return false;
             }
diff --git a/src/com/android/bluetooth/pan/PanService.java b/src/com/android/bluetooth/pan/PanService.java
index 11c2abb..ffaf1ce 100644
--- a/src/com/android/bluetooth/pan/PanService.java
+++ b/src/com/android/bluetooth/pan/PanService.java
@@ -61,6 +61,13 @@
     private static final boolean DBG = false;
     private static PanService sPanService;
 
+    private static final String ACTION_TETHERING_STATE_CHANGED =
+            "android.bluetooth.pan.profile.action.TETHERING_STATE_CHANGED";
+    private static final String EXTRA_TETHERING_STATE =
+            "android.bluetooth.pan.extra.TETHERING_STATE";
+    private static final int TETHERING_STATE_OFF = 1;
+    private static final int TETHERING_STATE_ON = 2;
+
     private static final String BLUETOOTH_IFACE_ADDR_START = "192.168.44.1";
     private static final int BLUETOOTH_MAX_PAN_CONNECTIONS = 5;
     private static final int BLUETOOTH_PREFIX_LENGTH = 24;
@@ -411,6 +418,10 @@
             for (BluetoothDevice dev : devList) {
                 disconnect(dev);
             }
+            Intent intent = new Intent(ACTION_TETHERING_STATE_CHANGED);
+            intent.putExtra(EXTRA_TETHERING_STATE,
+                    mTetherOn ? TETHERING_STATE_ON : TETHERING_STATE_OFF);
+            sendBroadcast(intent, BLUETOOTH_PERM);
         }
     }