Offer to enable a print service after it is installed (Settings).

The user has to explicitly enable a print service from the settings UI
before using it. Usually, users very rarely if at all interact with print
services, therefore all print service management task are performed from
the print settings. We also have to get user consent warning that the
user's data is about to be given to a third-party app. We now post a
notification allowing the user to go directly to the settings screen to
turn the service on.

bug:10447510

Change-Id: Ibfb5368a09b1e012dd6dd0f3d33a5ad10e5ee00e
diff --git a/res/drawable-hdpi/ic_print.png b/res/drawable-hdpi/ic_print.png
deleted file mode 100644
index aaff3dd..0000000
--- a/res/drawable-hdpi/ic_print.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_print.png b/res/drawable-mdpi/ic_print.png
deleted file mode 100644
index a3954b5..0000000
--- a/res/drawable-mdpi/ic_print.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_print.png b/res/drawable-xhdpi/ic_print.png
deleted file mode 100644
index 6b55a14..0000000
--- a/res/drawable-xhdpi/ic_print.png
+++ /dev/null
Binary files differ
diff --git a/res/xml/settings_headers.xml b/res/xml/settings_headers.xml
index 55b3bca..8744328 100644
--- a/res/xml/settings_headers.xml
+++ b/res/xml/settings_headers.xml
@@ -192,7 +192,7 @@
     <header
         android:id="@+id/print_settings"
         android:fragment="com.android.settings.print.PrintSettingsFragment"
-        android:icon="@drawable/ic_print"
+        android:icon="@*android:drawable/ic_print"
         android:title="@string/print_settings" />
 
     <!-- Development -->
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index d254842..49f0e65 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -65,6 +65,9 @@
     static final String EXTRA_ADD_PRINTERS_COMPONENT_NAME = "add_printers_component_name";
     static final String EXTRA_SERVICE_COMPONENT_NAME = "service_component_name";
 
+    private static final String EXTRA_PRINT_SERVICE_COMPONENT_NAME =
+            "EXTRA_PRINT_SERVICE_COMPONENT_NAME";
+
     private final PackageMonitor mSettingsPackageMonitor = new SettingsPackageMonitor();
 
     private final Handler mHandler = new Handler() {
@@ -97,6 +100,7 @@
         mSettingsPackageMonitor.register(getActivity(), getActivity().getMainLooper(), false);
         mSettingsContentObserver.register(getContentResolver());
         updateServicesPreferences();
+        startPrintServiceSettingsIfNeeded();
         setHasOptionsMenu(true);
     }
 
@@ -213,6 +217,20 @@
         }
     }
 
+    private void startPrintServiceSettingsIfNeeded() {
+        if (getArguments() == null) {
+            return;
+        }
+        String componentName = getArguments().getString(EXTRA_PRINT_SERVICE_COMPONENT_NAME);
+        if (componentName != null) {
+            getArguments().remove(EXTRA_PRINT_SERVICE_COMPONENT_NAME);
+            Preference prereference = findPreference(componentName);
+            if (prereference != null) {
+                prereference.performClick(getPreferenceScreen());
+            }
+        }
+    }
+
     private class SettingsPackageMonitor extends PackageMonitor {
         @Override
         public void onPackageAdded(String packageName, int uid) {