Add install support for WIFI UID
Bug: 8472221
Change-Id: If203760fc960b4d8987d745e49ef1d4355c45adf
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9579830..f4b4bc6 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -29,6 +29,7 @@
<uses-permission android:name="android.permission.ACCESS_WIMAX_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIMAX_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+ <uses-permission android:name="com.android.certinstaller.INSTALL_AS_USER" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7b028db..db07a3d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1274,6 +1274,8 @@
<string name="wifi_scan_always_available">Scanning always available</string>
<!-- Checkbox summary for option to toggle scan always available setting -->
<string name="wifi_scan_always_available_summary">Let Google\'s location service and other apps scan for networks, even when Wi-Fi is off</string>
+ <!-- Preference title for option to install certificates -->
+ <string name="wifi_install_credentials">Install certificates</string>
<string name="wifi_scan_notify_text_location_on">To improve location accuracy and for other purposes, Google and other apps may scan for nearby networks, even when Wi-Fi is off. If you don\'t want this to happen, go to Advanced > Scanning always available.</string>
<string name="wifi_scan_notify_text_location_off">Apps may scan for nearby networks, even when Wi-Fi is off. If you don\'t want this to happen, go to Advanced > Scanning always available.</string>
<!-- Wifi scan always mode checkbox text -->
diff --git a/res/xml/wifi_advanced_settings.xml b/res/xml/wifi_advanced_settings.xml
index 4319ec6..d250585 100644
--- a/res/xml/wifi_advanced_settings.xml
+++ b/res/xml/wifi_advanced_settings.xml
@@ -53,6 +53,11 @@
android:entryValues="@array/wifi_frequency_band_values"
/>
+ <Preference
+ android:key="install_credentials"
+ android:title="@string/wifi_install_credentials"
+ android:persistent="false" />
+
<CheckBoxPreference
android:key="suspend_optimizations"
android:title="@string/wifi_suspend_optimizations"
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index abe153f..7663058 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -17,6 +17,7 @@
package com.android.settings.wifi;
import android.content.Context;
+import android.content.Intent;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiWatchdogStateMachine;
@@ -27,6 +28,7 @@
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.provider.Settings.Global;
+import android.security.Credentials;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
@@ -46,6 +48,7 @@
private static final String KEY_SLEEP_POLICY = "sleep_policy";
private static final String KEY_POOR_NETWORK_DETECTION = "wifi_poor_network_detection";
private static final String KEY_SCAN_ALWAYS_AVAILABLE = "wifi_scan_always_available";
+ private static final String KEY_INSTALL_CREDENTIALS = "install_credentials";
private static final String KEY_SUSPEND_OPTIMIZATIONS = "suspend_optimizations";
private WifiManager mWifiManager;
@@ -94,6 +97,13 @@
scanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+ Intent intent=new Intent(Credentials.INSTALL_AS_USER_ACTION);
+ intent.setClassName("com.android.certinstaller",
+ "com.android.certinstaller.CertInstallerMain");
+ intent.putExtra(Credentials.EXTRA_INSTALL_AS_UID, android.os.Process.WIFI_UID);
+ Preference pref = findPreference(KEY_INSTALL_CREDENTIALS);
+ pref.setIntent(intent);
+
CheckBoxPreference suspendOptimizations =
(CheckBoxPreference) findPreference(KEY_SUSPEND_OPTIMIZATIONS);
suspendOptimizations.setChecked(Global.getInt(getContentResolver(),
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 497bce9..587197b 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -819,7 +819,7 @@
private void loadCertificates(Spinner spinner, String prefix) {
final Context context = mConfigUi.getContext();
- String[] certs = KeyStore.getInstance().saw(prefix);
+ String[] certs = KeyStore.getInstance().saw(prefix, android.os.Process.WIFI_UID);
if (certs == null || certs.length == 0) {
certs = new String[] {unspecifiedCert};
} else {