Merge "Shortened the "Restrict background data" string so it won't trucate. Bug: 5255012"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 92f3acc..ab9d975 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -937,7 +937,8 @@
</intent-filter>
</receiver>
- <receiver android:name=".bluetooth.BluetoothPermissionRequest">
+ <receiver android:name=".bluetooth.BluetoothPermissionRequest"
+ android:permission="android.permission.BLUETOOTH_ADMIN">
<intent-filter>
<action android:name="android.bluetooth.device.action.CONNECTION_ACCESS_REQUEST" />
<action android:name="android.bluetooth.device.action.CONNECTION_ACCESS_CANCEL" />
diff --git a/res/drawable-hdpi/appwidget_bg_holo.9.png b/res/drawable-hdpi/appwidget_bg_holo.9.png
index 829e656..34af75f 100644
--- a/res/drawable-hdpi/appwidget_bg_holo.9.png
+++ b/res/drawable-hdpi/appwidget_bg_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png
index dbbf15c..9d6fcc3 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_mid_c_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png
index 6e772d1..78996de 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_mid_l_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png
index 03d95f0..59fd474 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_mid_r_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png
index 875c5f9..2a147ca 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_off_c_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png
index 2fc328b..3d04abd 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_off_l_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png
index 213bc4c..32dc212 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_off_r_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png
index 84737ea..dd1b3ff 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_on_c_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png
index f15709e..e6c5acf 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_on_l_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png b/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png
index a92d8e4..9d96d06 100644
--- a/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png
+++ b/res/drawable-hdpi/appwidget_settings_ind_on_r_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png
index bfa2d51..544a6dc 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_off_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png
index 2a84db0..5a4596b 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_bluetooth_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png b/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png
index 8b91582..54c8266 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_brightness_auto_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png b/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png
index c5044bc..0de4d0e 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_brightness_full_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png
index 1b1666a..89e823b 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_gps_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png
index 135c4dc..e37446c 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_sync_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png b/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png
index 9f36c40..0e0ccda 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_wifi_off_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png b/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png
index bdb2bf3..c3c51e85 100644
--- a/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png
+++ b/res/drawable-hdpi/ic_appwidget_settings_wifi_on_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/preview.png b/res/drawable-hdpi/preview.png
deleted file mode 100644
index d8f1880..0000000
--- a/res/drawable-hdpi/preview.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_bg_holo.9.png b/res/drawable-mdpi/appwidget_bg_holo.9.png
index 5cd3a61..fa082c2 100644
--- a/res/drawable-mdpi/appwidget_bg_holo.9.png
+++ b/res/drawable-mdpi/appwidget_bg_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png
index 3b27803..9c5bd25 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_mid_c_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png
index a7bd60b..ee8dcce 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_mid_l_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png
index a60a7a4..a91f50b 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_mid_r_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png
index 552616c..2edaa2b 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_off_c_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png
index 735403c..1452c51 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_off_l_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png
index f348c13..9844e87 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_off_r_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png
index 7d98a6e..5a59a10 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_on_c_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png
index 58357d0..9a1cb7a 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_on_l_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png b/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png
index b63ca40..4ac5dab 100644
--- a/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png
+++ b/res/drawable-mdpi/appwidget_settings_ind_on_r_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png
index 5681da6..a830c6a 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_off_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png
index 5dedfad..07328dd 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_bluetooth_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png b/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png
index b341811..81f80df 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_brightness_auto_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png b/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png
index 5b40244..b3c94c7 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_brightness_full_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png
index 1c064ff..4a70da7 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_gps_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png
index 5bffa9a..6e3c81a 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_sync_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png b/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png
index fc6670b..6edec54 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_wifi_off_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png b/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png
index e6730c5..6cb023a 100644
--- a/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png
+++ b/res/drawable-mdpi/ic_appwidget_settings_wifi_on_holo.png
Binary files differ
diff --git a/res/drawable-mdpi/preview.png b/res/drawable-mdpi/preview.png
deleted file mode 100644
index ebf7f3d..0000000
--- a/res/drawable-mdpi/preview.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/preview.png b/res/drawable-nodpi/preview.png
new file mode 100644
index 0000000..10a7c90
--- /dev/null
+++ b/res/drawable-nodpi/preview.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_bg_holo.9.png b/res/drawable-xhdpi/appwidget_bg_holo.9.png
index 4628822..a30874b 100644
--- a/res/drawable-xhdpi/appwidget_bg_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_bg_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png
index c2a4902..45f6b8a 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_mid_c_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png
index 206a731..083997c 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_mid_l_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png
index d0768a3..98b4711 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_mid_r_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png
index 590fac1..1c7021c 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_off_c_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png
index b9e6721..1c96527 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_off_l_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png
index 260a1fd..7e9000b 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_off_r_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png
index acc10ec..dd6ebcf 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_on_c_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png
index 897cda4..5ac5819 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_on_l_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png b/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png
index 072338a..5b748c1 100644
--- a/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png
+++ b/res/drawable-xhdpi/appwidget_settings_ind_on_r_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png
index 9ef00a8..9b75bb1 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_off_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png
index de68344..c830b60 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_bluetooth_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png
index 5059b0e..b76f1c3 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_brightness_auto_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png
index 525456a..5bd888b 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_brightness_full_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png
index bdb71f2..2a9a290 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_gps_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png
index 53fa2b4..55d4de8 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_sync_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png
index 66eace2..53b4566 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_wifi_off_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png b/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png
index 82d6c37..1dcbef5 100644
--- a/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png
+++ b/res/drawable-xhdpi/ic_appwidget_settings_wifi_on_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/preview.png b/res/drawable-xhdpi/preview.png
deleted file mode 100644
index 8dfe17f..0000000
--- a/res/drawable-xhdpi/preview.png
+++ /dev/null
Binary files differ
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f8d0e9a..3b70830 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -733,16 +733,21 @@
<!-- Informational text when encryption fails -->
<string name="crypt_keeper_failed_summary" product="tablet">
- Encryption was interrupted and can\'t complete. You must perform a factory data reset (erasing
- all your data) before you can resume using your tablet. You can try encrypting your tablet
- again after the reset is complete.
+ Encryption was interrupted and can\'t complete. As a result, the data on
+ your tablet is no longer accessible.
+ \n\n
+ To resume using your tablet, you must perform a factory reset.
+ When you set up your tablet after the reset, you\'ll have an opportunity
+ to restore any data that was backed up to your Google Account.
</string>
<!-- Informational text when encryption fails -->
<string name="crypt_keeper_failed_summary" product="default">
- Encryption was interrupted and can\'t complete. You must perform a factory data reset (erasing
- all your data) before you can resume using your phone. You can try encrypting your phone
- again after the reset is complete.
+ Encryption was interrupted and can\'t complete. As a result, the data on
+ your phone is no longer accessible.
+ \n\nTo resume using your phone, you must perform a factory reset.
+ When you set up your phone after the reset, you\'ll have an opportunity
+ to restore any data that was backed up to your Google Account.
</string>
<!-- Unlock Picker Settings --><skip />
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java
index 0c8ce28..b1de932e7 100644
--- a/src/com/android/settings/CryptKeeper.java
+++ b/src/com/android/settings/CryptKeeper.java
@@ -86,6 +86,11 @@
private static final String FORCE_VIEW_ENTRY = "entry";
private static final String FORCE_VIEW_ERROR = "error";
+ /** When encryption is detected, this flag indivates whether or not we've checked for erros. */
+ private boolean mValidationComplete;
+ /** A flag to indicate that the volume is in a bad state (e.g. partially encrypted). */
+ private boolean mEncryptionGoneBad;
+
private int mCooldown;
PowerManager.WakeLock mWakeLock;
private EditText mPasswordEntry;
@@ -149,6 +154,34 @@
}
}
+ private class ValidationTask extends AsyncTask<Void, Void, Boolean> {
+ @Override
+ protected Boolean doInBackground(Void... params) {
+ IMountService service = getMountService();
+ try {
+ int state = service.getEncryptionState();
+ if (state == IMountService.ENCRYPTION_STATE_NONE) {
+ Log.w(TAG, "Unexpectedly in CryptKeeper even though there is no encryption.");
+ return true; // Unexpected, but fine, I guess...
+ }
+ return state == IMountService.ENCRYPTION_STATE_OK;
+ } catch (RemoteException e) {
+ Log.w(TAG, "Unable to get encryption state properly");
+ return true;
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Boolean result) {
+ mValidationComplete = true;
+ if (Boolean.FALSE.equals(result)) {
+ Log.w(TAG, "Incomplete, or corrupted encryption detected. Prompting user to wipe.");
+ mEncryptionGoneBad = true;
+ }
+ setupUi();
+ }
+ }
+
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -204,6 +237,9 @@
mWakeLock = retained.wakelock;
Log.d(TAG, "Restoring wakelock from NonConfigurationInstanceState");
}
+
+ // Check the encryption status to ensure something hasn't gone bad.
+ new ValidationTask().execute((Void[]) null);
}
/**
@@ -216,10 +252,24 @@
super.onStart();
// Check to see why we were started.
+ if (mValidationComplete) {
+ setupUi();
+ }
+ }
+
+ /**
+ * Initializes the UI based on the current state of encryption.
+ * This is idempotent - calling repeatedly will simply re-initialize the UI.
+ */
+ private void setupUi() {
+ if (mEncryptionGoneBad || isDebugView(FORCE_VIEW_ERROR)) {
+ setContentView(R.layout.crypt_keeper_progress);
+ showFactoryReset();
+ return;
+ }
+
String progress = SystemProperties.get("vold.encrypt_progress");
- if (!"".equals(progress)
- || isDebugView(FORCE_VIEW_PROGRESS)
- || isDebugView(FORCE_VIEW_ERROR)) {
+ if (!"".equals(progress) || isDebugView(FORCE_VIEW_PROGRESS)) {
setContentView(R.layout.crypt_keeper_progress);
encryptionProgressInit();
} else {
@@ -308,7 +358,7 @@
private void updateProgress() {
String state = SystemProperties.get("vold.encrypt_progress");
- if ("error_partially_encrypted".equals(state) || isDebugView(FORCE_VIEW_ERROR)) {
+ if ("error_partially_encrypted".equals(state)) {
showFactoryReset();
return;
}
diff --git a/src/com/android/settings/ProgressCategory.java b/src/com/android/settings/ProgressCategory.java
index 6c74846..e854a00 100644
--- a/src/com/android/settings/ProgressCategory.java
+++ b/src/com/android/settings/ProgressCategory.java
@@ -45,13 +45,13 @@
textView.setVisibility(noDeviceFound ? View.INVISIBLE : View.VISIBLE);
progressBar.setVisibility(mProgress ? View.VISIBLE : View.INVISIBLE);
- if (mProgress) {
+ if (mProgress || !noDeviceFound) {
if (mNoDeviceFoundAdded) {
removePreference(mNoDeviceFoundPreference);
mNoDeviceFoundAdded = false;
}
} else {
- if (noDeviceFound && !mNoDeviceFoundAdded) {
+ if (!mNoDeviceFoundAdded) {
if (mNoDeviceFoundPreference == null) {
mNoDeviceFoundPreference = new Preference(getContext());
mNoDeviceFoundPreference.setLayoutResource(R.layout.preference_empty_list);
@@ -70,4 +70,3 @@
notifyChanged();
}
}
-
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 916b5c8..0f5a491 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -20,6 +20,7 @@
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.wifi.p2p.WifiP2pManager;
import android.nfc.NfcAdapter;
@@ -141,7 +142,7 @@
WifiP2pManager p2p = (WifiP2pManager) activity.getSystemService(Context.WIFI_P2P_SERVICE);
- if (!p2p.isP2pSupported()) {
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
getPreferenceScreen().removePreference(wifiP2p);
getPreferenceScreen().removePreference(findPreference(KEY_WIFI_P2P_SETTINGS));
} else {
diff --git a/src/com/android/settings/applications/RunningState.java b/src/com/android/settings/applications/RunningState.java
index 552aa56..beb9605 100644
--- a/src/com/android/settings/applications/RunningState.java
+++ b/src/com/android/settings/applications/RunningState.java
@@ -99,7 +99,20 @@
// All processes, used for retrieving memory information.
final ArrayList<ProcessItem> mAllProcessItems = new ArrayList<ProcessItem>();
-
+
+ static class AppProcessInfo {
+ final ActivityManager.RunningAppProcessInfo info;
+ boolean hasServices;
+ boolean hasForegroundServices;
+
+ AppProcessInfo(ActivityManager.RunningAppProcessInfo _info) {
+ info = _info;
+ }
+ }
+
+ // Temporary structure used when updating above information.
+ final SparseArray<AppProcessInfo> mTmpAppProcesses = new SparseArray<AppProcessInfo>();
+
int mSequence = 0;
// ----- following protected by mLock -----
@@ -641,25 +654,97 @@
mSequence++;
boolean changed = false;
-
+
+ // Retrieve list of services, filtering out anything that definitely
+ // won't be shown in the UI.
List<ActivityManager.RunningServiceInfo> services
= am.getRunningServices(MAX_SERVICES);
- final int NS = services != null ? services.size() : 0;
+ int NS = services != null ? services.size() : 0;
for (int i=0; i<NS; i++) {
ActivityManager.RunningServiceInfo si = services.get(i);
// We are not interested in services that have not been started
// and don't have a known client, because
// there is nothing the user can do about them.
if (!si.started && si.clientLabel == 0) {
+ services.remove(i);
+ i--;
+ NS--;
continue;
}
// We likewise don't care about services running in a
// persistent process like the system or phone.
if ((si.flags&ActivityManager.RunningServiceInfo.FLAG_PERSISTENT_PROCESS)
!= 0) {
+ services.remove(i);
+ i--;
+ NS--;
continue;
}
-
+ }
+
+ // Retrieve list of running processes, organizing them into a sparse
+ // array for easy retrieval.
+ List<ActivityManager.RunningAppProcessInfo> processes
+ = am.getRunningAppProcesses();
+ final int NP = processes != null ? processes.size() : 0;
+ mTmpAppProcesses.clear();
+ for (int i=0; i<NP; i++) {
+ ActivityManager.RunningAppProcessInfo pi = processes.get(i);
+ mTmpAppProcesses.put(pi.pid, new AppProcessInfo(pi));
+ }
+
+ // Initial iteration through running services to collect per-process
+ // info about them.
+ for (int i=0; i<NS; i++) {
+ ActivityManager.RunningServiceInfo si = services.get(i);
+ if (si.restarting == 0 && si.pid > 0) {
+ AppProcessInfo ainfo = mTmpAppProcesses.get(si.pid);
+ if (ainfo != null) {
+ ainfo.hasServices = true;
+ if (si.foreground) {
+ ainfo.hasForegroundServices = true;
+ }
+ }
+ }
+ }
+
+ // Update state we are maintaining about process that are running services.
+ for (int i=0; i<NS; i++) {
+ ActivityManager.RunningServiceInfo si = services.get(i);
+
+ // If this service's process is in use at a higher importance
+ // due to another process bound to one of its services, then we
+ // won't put it in the top-level list of services. Instead we
+ // want it to be included in the set of processes that the other
+ // process needs.
+ if (si.restarting == 0 && si.pid > 0) {
+ AppProcessInfo ainfo = mTmpAppProcesses.get(si.pid);
+ if (ainfo != null && !ainfo.hasForegroundServices) {
+ // This process does not have any foreground services.
+ // If its importance is greater than the service importance
+ // then there is something else more significant that is
+ // keeping it around that it should possibly be included as
+ // a part of instead of being shown by itself.
+ if (ainfo.info.importance
+ < ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE) {
+ // Follow process chain to see if there is something
+ // else that could be shown
+ boolean skip = false;
+ ainfo = mTmpAppProcesses.get(ainfo.info.importanceReasonPid);
+ while (ainfo != null) {
+ if (ainfo.hasServices || isInterestingProcess(ainfo.info)) {
+ skip = true;
+ break;
+ }
+ ainfo = mTmpAppProcesses.get(ainfo.info.importanceReasonPid);
+ }
+ if (skip) {
+ continue;
+ }
+ }
+ }
+ }
+
HashMap<String, ProcessItem> procs = mServiceProcessesByName.get(si.uid);
if (procs == null) {
procs = new HashMap<String, ProcessItem>();
@@ -694,9 +779,6 @@
// Now update the map of other processes that are running (but
// don't have services actively running inside them).
- List<ActivityManager.RunningAppProcessInfo> processes
- = am.getRunningAppProcesses();
- final int NP = processes != null ? processes.size() : 0;
for (int i=0; i<NP; i++) {
ActivityManager.RunningAppProcessInfo pi = processes.get(i);
ProcessItem proc = mServiceProcessesByPid.get(pi.pid);
diff --git a/src/com/android/settings/bluetooth/DevicePickerFragment.java b/src/com/android/settings/bluetooth/DevicePickerFragment.java
index 8b32941..87d31e7 100644
--- a/src/com/android/settings/bluetooth/DevicePickerFragment.java
+++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java
@@ -33,6 +33,7 @@
private boolean mNeedAuth;
private String mLaunchPackage;
private String mLaunchClass;
+ private boolean mStartScanOnResume;
@Override
void addPreferencesForActivity() {
@@ -50,13 +51,17 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().setTitle(getString(R.string.device_picker));
+ mStartScanOnResume = (savedInstanceState == null); // don't start scan after rotation
}
@Override
public void onResume() {
super.onResume();
addCachedDevices();
- mLocalAdapter.startScanning(true);
+ if (mStartScanOnResume) {
+ mLocalAdapter.startScanning(true);
+ mStartScanOnResume = false;
+ }
}
@Override
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 8d4e77b..0ecb8a9 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -33,8 +33,8 @@
import android.net.wifi.WifiConfiguration.ProxySettings;
import android.net.wifi.WifiConfiguration.Status;
import android.net.wifi.WifiInfo;
-import android.net.wifi.WpsConfiguration;
-import android.net.wifi.WpsConfiguration.Setup;
+import android.net.wifi.Wps;
+import android.net.wifi.Wps.Setup;
import android.security.Credentials;
import android.security.KeyStore;
import android.text.Editable;
@@ -484,8 +484,8 @@
return MANUAL;
}
- WpsConfiguration getWpsConfig() {
- WpsConfiguration config = new WpsConfiguration();
+ Wps getWpsConfig() {
+ Wps config = new Wps();
switch (mNetworkSetupSpinner.getSelectedItemPosition()) {
case WPS_PBC:
config.setup = Setup.PBC;
diff --git a/src/com/android/settings/wifi/p2p/WifiP2pDialog.java b/src/com/android/settings/wifi/p2p/WifiP2pDialog.java
index c345538..8c06168 100644
--- a/src/com/android/settings/wifi/p2p/WifiP2pDialog.java
+++ b/src/com/android/settings/wifi/p2p/WifiP2pDialog.java
@@ -19,8 +19,8 @@
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
-import android.net.wifi.WpsConfiguration;
-import android.net.wifi.WpsConfiguration.Setup;
+import android.net.wifi.Wps;
+import android.net.wifi.Wps.Setup;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.os.Bundle;
@@ -64,21 +64,21 @@
public WifiP2pConfig getConfig() {
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = mDeviceAddress.getText().toString();
- config.wpsConfig = new WpsConfiguration();
+ config.wps = new Wps();
switch (mWpsSetupIndex) {
case WPS_PBC:
- config.wpsConfig.setup = Setup.PBC;
+ config.wps.setup = Setup.PBC;
break;
case WPS_KEYPAD:
- config.wpsConfig.setup = Setup.KEYPAD;
- config.wpsConfig.pin = ((TextView) mView.findViewById(R.id.wps_pin)).
+ config.wps.setup = Setup.KEYPAD;
+ config.wps.pin = ((TextView) mView.findViewById(R.id.wps_pin)).
getText().toString();
break;
case WPS_DISPLAY:
- config.wpsConfig.setup = Setup.DISPLAY;
+ config.wps.setup = Setup.DISPLAY;
break;
default:
- config.wpsConfig.setup = Setup.PBC;
+ config.wps.setup = Setup.PBC;
break;
}
return config;