From d8f391b4e0e8d876ec7216d34f86a9b3e8bab7e5 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Fri, 20 Sep 2013 16:25:52 -0700 Subject: [PATCH] Offer to enable a print service after it is installed. 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: Iea56c0825f0bf38328ad94912f0ea5576e9339b3 --- api/current.txt | 2 + core/java/android/print/PrintAttributes.java | 184 ++++++++++++--------- .../res/res/drawable-hdpi/ic_print.png | Bin .../res/res/drawable-mdpi/ic_print.png | Bin .../res/res/drawable-xhdpi/ic_print.png | Bin core/res/res/values/strings.xml | 172 ++++++++++--------- core/res/res/values/symbols.xml | 167 ++++++++++--------- .../printspooler/NotificationController.java | 2 +- .../android/server/print/PrintManagerService.java | 52 ++++++ 9 files changed, 334 insertions(+), 245 deletions(-) rename packages/PrintSpooler/res/drawable-hdpi/stat_notify_print.png => core/res/res/drawable-hdpi/ic_print.png (100%) rename packages/PrintSpooler/res/drawable-mdpi/stat_notify_print.png => core/res/res/drawable-mdpi/ic_print.png (100%) rename packages/PrintSpooler/res/drawable-xhdpi/stat_notify_print.png => core/res/res/drawable-xhdpi/ic_print.png (100%) diff --git a/api/current.txt b/api/current.txt index f04bf40f0bd5..c7e0a934c1b0 100644 --- a/api/current.txt +++ b/api/current.txt @@ -19265,6 +19265,8 @@ package android.print { field public static final android.print.PrintAttributes.MediaSize PRC_9; field public static final android.print.PrintAttributes.MediaSize ROC_16K; field public static final android.print.PrintAttributes.MediaSize ROC_8K; + field public static final android.print.PrintAttributes.MediaSize UNKNOWN_LANDSCAPE; + field public static final android.print.PrintAttributes.MediaSize UNKNOWN_PORTRAIT; } public static final class PrintAttributes.Resolution { diff --git a/core/java/android/print/PrintAttributes.java b/core/java/android/print/PrintAttributes.java index 94bbb08102cd..4cbb94c3acfc 100644 --- a/core/java/android/print/PrintAttributes.java +++ b/core/java/android/print/PrintAttributes.java @@ -265,316 +265,336 @@ public final class PrintAttributes implements Parcelable { public static final class MediaSize { private static final String LOG_TAG = "MediaSize"; - // TODO: Verify media sizes and add more standard ones. + /** + * Unknown media size in portrait mode. + *

+ * Note: This is for specifying orientation without media + * size. You should not use the dimensions reported by this class. + *

+ */ + public static final MediaSize UNKNOWN_PORTRAIT = + new MediaSize("UNKNOWN_PORTRAIT", "android", + R.string.mediasize_unknown_portrait, Integer.MAX_VALUE, 1); + + /** + * Unknown media size in landscape mode. + *

+ * Note: This is for specifying orientation without media + * size. You should not use the dimensions reported by this class. + *

+ */ + public static final MediaSize UNKNOWN_LANDSCAPE = + new MediaSize("UNKNOWN_LANDSCAPE", "android", + R.string.mediasize_unknown_landscape, 1, Integer.MAX_VALUE); // ISO sizes /** ISO A0 media size: 841mm x 1189mm (33.11" x 46.81") */ public static final MediaSize ISO_A0 = - new MediaSize("ISO_A0", "android", R.string.mediaSize_iso_a0, 33110, 46810); + new MediaSize("ISO_A0", "android", R.string.mediasize_iso_a0, 33110, 46810); /** ISO A1 media size: 594mm x 841mm (23.39" x 33.11") */ public static final MediaSize ISO_A1 = - new MediaSize("ISO_A1", "android", R.string.mediaSize_iso_a1, 23390, 33110); + new MediaSize("ISO_A1", "android", R.string.mediasize_iso_a1, 23390, 33110); /** ISO A2 media size: 420mm x 594mm (16.54" x 23.39") */ public static final MediaSize ISO_A2 = - new MediaSize("ISO_A2", "android", R.string.mediaSize_iso_a2, 16540, 23390); + new MediaSize("ISO_A2", "android", R.string.mediasize_iso_a2, 16540, 23390); /** ISO A3 media size: 297mm x 420mm (11.69" x 16.54") */ public static final MediaSize ISO_A3 = - new MediaSize("ISO_A3", "android", R.string.mediaSize_iso_a3, 11690, 16540); + new MediaSize("ISO_A3", "android", R.string.mediasize_iso_a3, 11690, 16540); /** ISO A4 media size: 210mm x 297mm (8.27" x 11.69") */ public static final MediaSize ISO_A4 = - new MediaSize("ISO_A4", "android", R.string.mediaSize_iso_a4, 8270, 11690); + new MediaSize("ISO_A4", "android", R.string.mediasize_iso_a4, 8270, 11690); /** ISO A5 media size: 148mm x 210mm (5.83" x 8.27") */ public static final MediaSize ISO_A5 = - new MediaSize("ISO_A5", "android", R.string.mediaSize_iso_a5, 5830, 8270); + new MediaSize("ISO_A5", "android", R.string.mediasize_iso_a5, 5830, 8270); /** ISO A6 media size: 105mm x 148mm (4.13" x 5.83") */ public static final MediaSize ISO_A6 = - new MediaSize("ISO_A6", "android", R.string.mediaSize_iso_a6, 4130, 5830); + new MediaSize("ISO_A6", "android", R.string.mediasize_iso_a6, 4130, 5830); /** ISO A7 media size: 74mm x 105mm (2.91" x 4.13") */ public static final MediaSize ISO_A7 = - new MediaSize("ISO_A7", "android", R.string.mediaSize_iso_a7, 2910, 4130); + new MediaSize("ISO_A7", "android", R.string.mediasize_iso_a7, 2910, 4130); /** ISO A8 media size: 52mm x 74mm (2.05" x 2.91") */ public static final MediaSize ISO_A8 = - new MediaSize("ISO_A8", "android", R.string.mediaSize_iso_a8, 2050, 2910); + new MediaSize("ISO_A8", "android", R.string.mediasize_iso_a8, 2050, 2910); /** ISO A9 media size: 37mm x 52mm (1.46" x 2.05") */ public static final MediaSize ISO_A9 = - new MediaSize("ISO_A9", "android", R.string.mediaSize_iso_a9, 1460, 2050); + new MediaSize("ISO_A9", "android", R.string.mediasize_iso_a9, 1460, 2050); /** ISO A10 media size: 26mm x 37mm (1.02" x 1.46") */ public static final MediaSize ISO_A10 = - new MediaSize("ISO_A10", "android", R.string.mediaSize_iso_a10, 1020, 1460); + new MediaSize("ISO_A10", "android", R.string.mediasize_iso_a10, 1020, 1460); /** ISO B0 media size: 1000mm x 1414mm (39.37" x 55.67") */ public static final MediaSize ISO_B0 = - new MediaSize("ISO_B0", "android", R.string.mediaSize_iso_b0, 39370, 55670); + new MediaSize("ISO_B0", "android", R.string.mediasize_iso_b0, 39370, 55670); /** ISO B1 media size: 707mm x 1000mm (27.83" x 39.37") */ public static final MediaSize ISO_B1 = - new MediaSize("ISO_B1", "android", R.string.mediaSize_iso_b1, 27830, 39370); + new MediaSize("ISO_B1", "android", R.string.mediasize_iso_b1, 27830, 39370); /** ISO B2 media size: 500mm x 707mm (19.69" x 27.83") */ public static final MediaSize ISO_B2 = - new MediaSize("ISO_B2", "android", R.string.mediaSize_iso_b2, 19690, 27830); + new MediaSize("ISO_B2", "android", R.string.mediasize_iso_b2, 19690, 27830); /** ISO B3 media size: 353mm x 500mm (13.90" x 19.69") */ public static final MediaSize ISO_B3 = - new MediaSize("ISO_B3", "android", R.string.mediaSize_iso_b3, 13900, 19690); + new MediaSize("ISO_B3", "android", R.string.mediasize_iso_b3, 13900, 19690); /** ISO B4 media size: 250mm x 353mm (9.84" x 13.90") */ public static final MediaSize ISO_B4 = - new MediaSize("ISO_B4", "android", R.string.mediaSize_iso_b4, 9840, 13900); + new MediaSize("ISO_B4", "android", R.string.mediasize_iso_b4, 9840, 13900); /** ISO B5 media size: 176mm x 250mm (6.93" x 9.84") */ public static final MediaSize ISO_B5 = - new MediaSize("ISO_B5", "android", R.string.mediaSize_iso_b5, 6930, 9840); + new MediaSize("ISO_B5", "android", R.string.mediasize_iso_b5, 6930, 9840); /** ISO B6 media size: 125mm x 176mm (4.92" x 6.93") */ public static final MediaSize ISO_B6 = - new MediaSize("ISO_B6", "android", R.string.mediaSize_iso_b6, 4920, 6930); + new MediaSize("ISO_B6", "android", R.string.mediasize_iso_b6, 4920, 6930); /** ISO B7 media size: 88mm x 125mm (3.46" x 4.92") */ public static final MediaSize ISO_B7 = - new MediaSize("ISO_B7", "android", R.string.mediaSize_iso_b7, 3460, 4920); + new MediaSize("ISO_B7", "android", R.string.mediasize_iso_b7, 3460, 4920); /** ISO B8 media size: 62mm x 88mm (2.44" x 3.46") */ public static final MediaSize ISO_B8 = - new MediaSize("ISO_B8", "android", R.string.mediaSize_iso_b8, 2440, 3460); + new MediaSize("ISO_B8", "android", R.string.mediasize_iso_b8, 2440, 3460); /** ISO B9 media size: 44mm x 62mm (1.73" x 2.44") */ public static final MediaSize ISO_B9 = - new MediaSize("ISO_B9", "android", R.string.mediaSize_iso_b9, 1730, 2440); + new MediaSize("ISO_B9", "android", R.string.mediasize_iso_b9, 1730, 2440); /** ISO B10 media size: 31mm x 44mm (1.22" x 1.73") */ public static final MediaSize ISO_B10 = - new MediaSize("ISO_B10", "android", R.string.mediaSize_iso_b10, 1220, 1730); + new MediaSize("ISO_B10", "android", R.string.mediasize_iso_b10, 1220, 1730); /** ISO C0 media size: 917mm x 1297mm (36.10" x 51.06") */ public static final MediaSize ISO_C0 = - new MediaSize("ISO_C0", "android", R.string.mediaSize_iso_c0, 36100, 51060); + new MediaSize("ISO_C0", "android", R.string.mediasize_iso_c0, 36100, 51060); /** ISO C1 media size: 648mm x 917mm (25.51" x 36.10") */ public static final MediaSize ISO_C1 = - new MediaSize("ISO_C1", "android", R.string.mediaSize_iso_c1, 25510, 36100); + new MediaSize("ISO_C1", "android", R.string.mediasize_iso_c1, 25510, 36100); /** ISO C2 media size: 458mm x 648mm (18.03" x 25.51") */ public static final MediaSize ISO_C2 = - new MediaSize("ISO_C2", "android", R.string.mediaSize_iso_c2, 18030, 25510); + new MediaSize("ISO_C2", "android", R.string.mediasize_iso_c2, 18030, 25510); /** ISO C3 media size: 324mm x 458mm (12.76" x 18.03") */ public static final MediaSize ISO_C3 = - new MediaSize("ISO_C3", "android", R.string.mediaSize_iso_c3, 12760, 18030); + new MediaSize("ISO_C3", "android", R.string.mediasize_iso_c3, 12760, 18030); /** ISO C4 media size: 229mm x 324mm (9.02" x 12.76") */ public static final MediaSize ISO_C4 = - new MediaSize("ISO_C4", "android", R.string.mediaSize_iso_c4, 9020, 12760); + new MediaSize("ISO_C4", "android", R.string.mediasize_iso_c4, 9020, 12760); /** ISO C5 media size: 162mm x 229mm (6.38" x 9.02") */ public static final MediaSize ISO_C5 = - new MediaSize("ISO_C5", "android", R.string.mediaSize_iso_c5, 6380, 9020); + new MediaSize("ISO_C5", "android", R.string.mediasize_iso_c5, 6380, 9020); /** ISO C6 media size: 114mm x 162mm (4.49" x 6.38") */ public static final MediaSize ISO_C6 = - new MediaSize("ISO_C6", "android", R.string.mediaSize_iso_c6, 4490, 6380); + new MediaSize("ISO_C6", "android", R.string.mediasize_iso_c6, 4490, 6380); /** ISO C7 media size: 81mm x 114mm (3.19" x 4.49") */ public static final MediaSize ISO_C7 = - new MediaSize("ISO_C7", "android", R.string.mediaSize_iso_c7, 3190, 4490); + new MediaSize("ISO_C7", "android", R.string.mediasize_iso_c7, 3190, 4490); /** ISO C8 media size: 57mm x 81mm (2.24" x 3.19") */ public static final MediaSize ISO_C8 = - new MediaSize("ISO_C8", "android", R.string.mediaSize_iso_c8, 2240, 3190); + new MediaSize("ISO_C8", "android", R.string.mediasize_iso_c8, 2240, 3190); /** ISO C9 media size: 40mm x 57mm (1.57" x 2.24") */ public static final MediaSize ISO_C9 = - new MediaSize("ISO_C9", "android", R.string.mediaSize_iso_c9, 1570, 2240); + new MediaSize("ISO_C9", "android", R.string.mediasize_iso_c9, 1570, 2240); /** ISO C10 media size: 28mm x 40mm (1.10" x 1.57") */ public static final MediaSize ISO_C10 = - new MediaSize("ISO_C10", "android", R.string.mediaSize_iso_c10, 1100, 1570); + new MediaSize("ISO_C10", "android", R.string.mediasize_iso_c10, 1100, 1570); // North America /** North America Letter media size: 8.5" x 11" (279mm x 216mm) */ public static final MediaSize NA_LETTER = - new MediaSize("NA_LETTER", "android", R.string.mediaSize_na_letter, 8500, 11000); + new MediaSize("NA_LETTER", "android", R.string.mediasize_na_letter, 8500, 11000); /** North America Government-Letter media size: 8.0" x 10.5" (203mm x 267mm) */ public static final MediaSize NA_GOVT_LETTER = new MediaSize("NA_GOVT_LETTER", "android", - R.string.mediaSize_na_gvrnmt_letter, 8000, 10500); + R.string.mediasize_na_gvrnmt_letter, 8000, 10500); /** North America Legal media size: 8.5" x 14" (216mm x 356mm) */ public static final MediaSize NA_LEGAL = - new MediaSize("NA_LEGAL", "android", R.string.mediaSize_na_legal, 8500, 14000); + new MediaSize("NA_LEGAL", "android", R.string.mediasize_na_legal, 8500, 14000); /** North America Junior Legal media size: 8.0" x 5.0" (203mm × 127mm) */ public static final MediaSize NA_JUNIOR_LEGAL = new MediaSize("NA_JUNIOR_LEGAL", "android", - R.string.mediaSize_na_junior_legal, 8000, 5000); + R.string.mediasize_na_junior_legal, 8000, 5000); /** North America Ledger media size: 17" x 11" (432mm × 279mm) */ public static final MediaSize NA_LEDGER = - new MediaSize("NA_LEDGER", "android", R.string.mediaSize_na_ledger, 17000, 11000); + new MediaSize("NA_LEDGER", "android", R.string.mediasize_na_ledger, 17000, 11000); /** North America Tabloid media size: 11" x 17" (279mm × 432mm) */ public static final MediaSize NA_TABLOID = new MediaSize("NA_TABLOID", "android", - R.string.mediaSize_na_tabloid, 11000, 17000); + R.string.mediasize_na_tabloid, 11000, 17000); /** North America Index Card 3x5 media size: 3" x 5" (76mm x 127mm) */ public static final MediaSize NA_INDEX_3X5 = new MediaSize("NA_INDEX_3X5", "android", - R.string.mediaSize_na_index_3x5, 3000, 5000); + R.string.mediasize_na_index_3x5, 3000, 5000); /** North America Index Card 4x6 media size: 4" x 6" (102mm x 152mm) */ public static final MediaSize NA_INDEX_4X6 = new MediaSize("NA_INDEX_4X6", "android", - R.string.mediaSize_na_index_4x6, 4000, 6000); + R.string.mediasize_na_index_4x6, 4000, 6000); /** North America Index Card 5x8 media size: 5" x 8" (127mm x 203mm) */ public static final MediaSize NA_INDEX_5X8 = new MediaSize("NA_INDEX_5X8", "android", - R.string.mediaSize_na_index_5x8, 5000, 8000); + R.string.mediasize_na_index_5x8, 5000, 8000); /** North America Monarch media size: 7.25" x 10.5" (184mm x 267mm) */ public static final MediaSize NA_MONARCH = new MediaSize("NA_MONARCH", "android", - R.string.mediaSize_na_monarch, 7250, 10500); + R.string.mediasize_na_monarch, 7250, 10500); /** North America Quarto media size: 8" x 10" (203mm x 254mm) */ public static final MediaSize NA_QUARTO = new MediaSize("NA_QUARTO", "android", - R.string.mediaSize_na_quarto, 8000, 10000); + R.string.mediasize_na_quarto, 8000, 10000); /** North America Foolscap media size: 8" x 13" (203mm x 330mm) */ public static final MediaSize NA_FOOLSCAP = new MediaSize("NA_FOOLSCAP", "android", - R.string.mediaSize_na_foolscap, 8000, 13000); + R.string.mediasize_na_foolscap, 8000, 13000); // Chinese /** Chinese ROC 8K media size: 270mm x 390mm (10.629" x 15.3543") */ public static final MediaSize ROC_8K = new MediaSize("ROC_8K", "android", - R.string.mediaSize_chinese_roc_8k, 10629, 15354); + R.string.mediasize_chinese_roc_8k, 10629, 15354); /** Chinese ROC 16K media size: 195mm x 270mm (7.677" x 10.629") */ public static final MediaSize ROC_16K = new MediaSize("ROC_16K", "android", - R.string.mediaSize_chinese_roc_16k, 7677, 10629); + R.string.mediasize_chinese_roc_16k, 7677, 10629); /** Chinese PRC 1 media size: 102mm x 165mm (4.015" x 6.496") */ public static final MediaSize PRC_1 = new MediaSize("PRC_1", "android", - R.string.mediaSize_chinese_prc_1, 4015, 6496); + R.string.mediasize_chinese_prc_1, 4015, 6496); /** Chinese PRC 2 media size: 102mm x 176mm (4.015" x 6.929") */ public static final MediaSize PRC_2 = new MediaSize("PRC_2", "android", - R.string.mediaSize_chinese_prc_2, 4015, 6929); + R.string.mediasize_chinese_prc_2, 4015, 6929); /** Chinese PRC 3 media size: 125mm x 176mm (4.921" x 6.929") */ public static final MediaSize PRC_3 = new MediaSize("PRC_3", "android", - R.string.mediaSize_chinese_prc_3, 4921, 6929); + R.string.mediasize_chinese_prc_3, 4921, 6929); /** Chinese PRC 4 media size: 110mm x 208mm (4.330" x 8.189") */ public static final MediaSize PRC_4 = new MediaSize("PRC_4", "android", - R.string.mediaSize_chinese_prc_4, 4330, 8189); + R.string.mediasize_chinese_prc_4, 4330, 8189); /** Chinese PRC 5 media size: 110mm x 220mm (4.330" x 8.661") */ public static final MediaSize PRC_5 = new MediaSize("PRC_5", "android", - R.string.mediaSize_chinese_prc_5, 4330, 8661); + R.string.mediasize_chinese_prc_5, 4330, 8661); /** Chinese PRC 6 media size: 120mm x 320mm (4.724" x 12.599") */ public static final MediaSize PRC_6 = new MediaSize("PRC_6", "android", - R.string.mediaSize_chinese_prc_6, 4724, 12599); + R.string.mediasize_chinese_prc_6, 4724, 12599); /** Chinese PRC 7 media size: 160mm x 230mm (6.299" x 9.055") */ public static final MediaSize PRC_7 = new MediaSize("PRC_7", "android", - R.string.mediaSize_chinese_prc_7, 6299, 9055); + R.string.mediasize_chinese_prc_7, 6299, 9055); /** Chinese PRC 8 media size: 120mm x 309mm (4.724" x 12.165") */ public static final MediaSize PRC_8 = new MediaSize("PRC_8", "android", - R.string.mediaSize_chinese_prc_8, 4724, 12165); + R.string.mediasize_chinese_prc_8, 4724, 12165); /** Chinese PRC 9 media size: 229mm x 324mm (9.016" x 12.756") */ public static final MediaSize PRC_9 = new MediaSize("PRC_9", "android", - R.string.mediaSize_chinese_prc_9, 9016, 12756); + R.string.mediasize_chinese_prc_9, 9016, 12756); /** Chinese PRC 10 media size: 324mm x 458mm (12.756" x 18.032") */ public static final MediaSize PRC_10 = new MediaSize("PRC_10", "android", - R.string.mediaSize_chinese_prc_10, 12756, 18032); + R.string.mediasize_chinese_prc_10, 12756, 18032); /** Chinese PRC 16k media size: 146mm x 215mm (5.749" x 8.465") */ public static final MediaSize PRC_16k = new MediaSize("PRC_16k", "android", - R.string.mediaSize_chinese_prc_16k, 5749, 8465); + R.string.mediasize_chinese_prc_16k, 5749, 8465); /** Chinese Pa Kai media size: 267mm x 389mm (10.512" x 15.315") */ public static final MediaSize OM_PA_KAI = new MediaSize("OM_PA_KAI", "android", - R.string.mediaSize_chinese_om_pa_kai, 10512, 15315); + R.string.mediasize_chinese_om_pa_kai, 10512, 15315); /** Chinese Dai Pa Kai media size: 275mm x 395mm (10.827" x 15.551") */ public static final MediaSize OM_DAI_PA_KAI = new MediaSize("OM_DAI_PA_KAI", "android", - R.string.mediaSize_chinese_om_dai_pa_kai, 10827, 15551); + R.string.mediasize_chinese_om_dai_pa_kai, 10827, 15551); /** Chinese Jurro Ku Kai media size: 198mm x 275mm (7.796" x 10.827") */ public static final MediaSize OM_JUURO_KU_KAI = new MediaSize("OM_JUURO_KU_KAI", "android", - R.string.mediaSize_chinese_om_jurro_ku_kai, 7796, 10827); + R.string.mediasize_chinese_om_jurro_ku_kai, 7796, 10827); // Japanese /** Japanese JIS B10 media size: 32mm x 45mm (1.259" x 1.772") */ public static final MediaSize JIS_B10 = new MediaSize("JIS_B10", "android", - R.string.mediaSize_japanese_jis_b10, 1259, 1772); + R.string.mediasize_japanese_jis_b10, 1259, 1772); /** Japanese JIS B9 media size: 45mm x 64mm (1.772" x 2.52") */ public static final MediaSize JIS_B9 = new MediaSize("JIS_B9", "android", - R.string.mediaSize_japanese_jis_b9, 1772, 2520); + R.string.mediasize_japanese_jis_b9, 1772, 2520); /** Japanese JIS B8 media size: 64mm x 91mm (2.52" x 3.583") */ public static final MediaSize JIS_B8 = new MediaSize("JIS_B8", "android", - R.string.mediaSize_japanese_jis_b8, 2520, 3583); + R.string.mediasize_japanese_jis_b8, 2520, 3583); /** Japanese JIS B7 media size: 91mm x 128mm (3.583" x 5.049") */ public static final MediaSize JIS_B7 = new MediaSize("JIS_B7", "android", - R.string.mediaSize_japanese_jis_b7, 3583, 5049); + R.string.mediasize_japanese_jis_b7, 3583, 5049); /** Japanese JIS B6 media size: 128mm x 182mm (5.049" x 7.165") */ public static final MediaSize JIS_B6 = new MediaSize("JIS_B6", "android", - R.string.mediaSize_japanese_jis_b6, 5049, 7165); + R.string.mediasize_japanese_jis_b6, 5049, 7165); /** Japanese JIS B5 media size: 182mm x 257mm (7.165" x 10.118") */ public static final MediaSize JIS_B5 = new MediaSize("JIS_B5", "android", - R.string.mediaSize_japanese_jis_b5, 7165, 10118); + R.string.mediasize_japanese_jis_b5, 7165, 10118); /** Japanese JIS B4 media size: 257mm x 364mm (10.118" x 14.331") */ public static final MediaSize JIS_B4 = new MediaSize("JIS_B4", "android", - R.string.mediaSize_japanese_jis_b4, 10118, 14331); + R.string.mediasize_japanese_jis_b4, 10118, 14331); /** Japanese JIS B3 media size: 364mm x 515mm (14.331" x 20.276") */ public static final MediaSize JIS_B3 = new MediaSize("JIS_B3", "android", - R.string.mediaSize_japanese_jis_b3, 14331, 20276); + R.string.mediasize_japanese_jis_b3, 14331, 20276); /** Japanese JIS B2 media size: 515mm x 728mm (20.276" x 28.661") */ public static final MediaSize JIS_B2 = new MediaSize("JIS_B2", "android", - R.string.mediaSize_japanese_jis_b2, 20276, 28661); + R.string.mediasize_japanese_jis_b2, 20276, 28661); /** Japanese JIS B1 media size: 728mm x 1030mm (28.661" x 40.551") */ public static final MediaSize JIS_B1 = new MediaSize("JIS_B1", "android", - R.string.mediaSize_japanese_jis_b1, 28661, 40551); + R.string.mediasize_japanese_jis_b1, 28661, 40551); /** Japanese JIS B0 media size: 1030mm x 1456mm (40.551" x 57.323") */ public static final MediaSize JIS_B0 = new MediaSize("JIS_B0", "android", - R.string.mediaSize_japanese_jis_b0, 40551, 57323); + R.string.mediasize_japanese_jis_b0, 40551, 57323); /** Japanese JIS Exec media size: 216mm x 330mm (8.504" x 12.992") */ public static final MediaSize JIS_EXEC = new MediaSize("JIS_EXEC", "android", - R.string.mediaSize_japanese_jis_exec, 8504, 12992); + R.string.mediasize_japanese_jis_exec, 8504, 12992); /** Japanese Chou4 media size: 90mm x 205mm (3.543" x 8.071") */ public static final MediaSize JPN_CHOU4 = new MediaSize("JPN_CHOU4", "android", - R.string.mediaSize_japanese_chou4, 3543, 8071); + R.string.mediasize_japanese_chou4, 3543, 8071); /** Japanese Chou3 media size: 120mm x 235mm (4.724" x 9.252") */ public static final MediaSize JPN_CHOU3 = new MediaSize("JPN_CHOU3", "android", - R.string.mediaSize_japanese_chou3, 4724, 9252); + R.string.mediasize_japanese_chou3, 4724, 9252); /** Japanese Chou2 media size: 111.1mm x 146mm (4.374" x 5.748") */ public static final MediaSize JPN_CHOU2 = new MediaSize("JPN_CHOU2", "android", - R.string.mediaSize_japanese_chou2, 4374, 5748); + R.string.mediasize_japanese_chou2, 4374, 5748); /** Japanese Hagaki media size: 100mm x 148mm (3.937" x 5.827") */ public static final MediaSize JPN_HAGAKI = new MediaSize("JPN_HAGAKI", "android", - R.string.mediaSize_japanese_hagaki, 3937, 5827); + R.string.mediasize_japanese_hagaki, 3937, 5827); /** Japanese Oufuku media size: 148mm x 200mm (5.827" x 7.874") */ public static final MediaSize JPN_OUFUKU = new MediaSize("JPN_OUFUKU", "android", - R.string.mediaSize_japanese_oufuku, 5827, 7874); + R.string.mediasize_japanese_oufuku, 5827, 7874); /** Japanese Kahu media size: 240mm x 322.1mm (9.449" x 12.681") */ public static final MediaSize JPN_KAHU = new MediaSize("JPN_KAHU", "android", - R.string.mediaSize_japanese_kahu, 9449, 12681); + R.string.mediasize_japanese_kahu, 9449, 12681); /** Japanese Kaku2 media size: 240mm x 332mm (9.449" x 13.071") */ public static final MediaSize JPN_KAKU2 = new MediaSize("JPN_KAKU2", "android", - R.string.mediaSize_japanese_kaku2, 9449, 13071); + R.string.mediasize_japanese_kaku2, 9449, 13071); /** Japanese You4 media size: 105mm x 235mm (4.134" x 9.252") */ public static final MediaSize JPN_YOU4 = new MediaSize("JPN_YOU4", "android", - R.string.mediaSize_japanese_you4, 4134, 9252); + R.string.mediasize_japanese_you4, 4134, 9252); private final String mId; /**@hide */ diff --git a/packages/PrintSpooler/res/drawable-hdpi/stat_notify_print.png b/core/res/res/drawable-hdpi/ic_print.png similarity index 100% rename from packages/PrintSpooler/res/drawable-hdpi/stat_notify_print.png rename to core/res/res/drawable-hdpi/ic_print.png diff --git a/packages/PrintSpooler/res/drawable-mdpi/stat_notify_print.png b/core/res/res/drawable-mdpi/ic_print.png similarity index 100% rename from packages/PrintSpooler/res/drawable-mdpi/stat_notify_print.png rename to core/res/res/drawable-mdpi/ic_print.png diff --git a/packages/PrintSpooler/res/drawable-xhdpi/stat_notify_print.png b/core/res/res/drawable-xhdpi/ic_print.png similarity index 100% rename from packages/PrintSpooler/res/drawable-xhdpi/stat_notify_print.png rename to core/res/res/drawable-xhdpi/ic_print.png diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 957d41e8db32..c57873e983df 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -4238,178 +4238,183 @@ - ISO A0 + ISO A0 - ISO A1 + ISO A1 - ISO A2 + ISO A2 - ISO A3 + ISO A3 - ISO A4 + ISO A4 - ISO A5 + ISO A5 - ISO A6 + ISO A6 - ISO A7 + ISO A7 - ISO A8 + ISO A8 - ISO A9 + ISO A9 - ISO A10 + ISO A10 - ISO B0 + ISO B0 - ISO B1 + ISO B1 - ISO B2 + ISO B2 - ISO B3 + ISO B3 - ISO B4 + ISO B4 - ISO B5 + ISO B5 - ISO B6 + ISO B6 - ISO B7 + ISO B7 - ISO B8 + ISO B8 - ISO B9 + ISO B9 - ISO B10 + ISO B10 - ISO C0 + ISO C0 - ISO C1 + ISO C1 - ISO C2 + ISO C2 - ISO C3 + ISO C3 - ISO C4 + ISO C4 - ISO C5 + ISO C5 - ISO C6 + ISO C6 - ISO C7 + ISO C7 - ISO C8 + ISO C8 - ISO C9 + ISO C9 - ISO C10 + ISO C10 - Letter + Letter - Government Letter + Government Letter - Legal + Legal - Junior Legal + Junior Legal - Ledger + Ledger - Tabloid + Tabloid - Index Card 3x5 + Index Card 3x5 - Index Card 4x6 + Index Card 4x6 - Index Card 5x8 + Index Card 5x8 - Monarch + Monarch - Quarto + Quarto - Foolscap + Foolscap - ROC 8K + ROC 8K - ROC 16K + ROC 16K - PRC 1 + PRC 1 - PRC 2 + PRC 2 - PRC 3 + PRC 3 - PRC 4 + PRC 4 - PRC 5 + PRC 5 - PRC 6 + PRC 6 - PRC 7 + PRC 7 - PRC 8 + PRC 8 - PRC 9 + PRC 9 - PRC 10 + PRC 10 - PRC 16K + PRC 16K - Pa Kai + Pa Kai - Dai Pa Kai + Dai Pa Kai - Jurro Ku Kai + Jurro Ku Kai - JIS B10 + JIS B10 - JIS B9 + JIS B9 - JIS B8 + JIS B8 - JIS B7 + JIS B7 - JIS B6 + JIS B6 - JIS B5 + JIS B5 - JIS B4 + JIS B4 - JIS B3 + JIS B3 - JIS B2 + JIS B2 - JIS B1 + JIS B1 - JIS B0 + JIS B0 - JIS Exec + JIS Exec - Chou4 + Chou4 - Chou3 + Chou3 - Chou2 + Chou2 - Hagaki + Hagaki - Oufuku + Oufuku - Kahu + Kahu - Kaku2 + Kaku2 - You4 + You4 + + + Unknown portrait + + Unknown landscape Cancelled @@ -4419,6 +4424,11 @@ unknown + + %s service installed + + Tap to enable + Enter administrator PIN diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index a491612362d9..8370b9f671f6 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -675,6 +675,8 @@ + + @@ -840,87 +842,89 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1031,6 +1035,7 @@ + diff --git a/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java b/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java index 829fb0681494..25bb071ac4cb 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java +++ b/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java @@ -89,7 +89,7 @@ public class NotificationController { private void createPrintingNotification(PrintJobInfo printJob) { Notification.Builder builder = new Notification.Builder(mContext) - .setSmallIcon(R.drawable.stat_notify_print) + .setSmallIcon(com.android.internal.R.drawable.ic_print) .setContentTitle(mContext.getString(R.string.printing_notification_title_template, printJob.getLabel())) .addAction(R.drawable.stat_notify_cancelling, mContext.getString(R.string.cancel), diff --git a/services/java/com/android/server/print/PrintManagerService.java b/services/java/com/android/server/print/PrintManagerService.java index ddc50466d98e..5f8708acb397 100644 --- a/services/java/com/android/server/print/PrintManagerService.java +++ b/services/java/com/android/server/print/PrintManagerService.java @@ -17,12 +17,17 @@ package com.android.server.print; import android.Manifest; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; import android.database.ContentObserver; import android.net.Uri; import android.os.Binder; @@ -40,6 +45,7 @@ import android.printservice.PrintServiceInfo; import android.provider.Settings; import android.util.SparseArray; +import com.android.internal.R; import com.android.internal.content.PackageMonitor; import com.android.internal.os.BackgroundThread; @@ -53,6 +59,9 @@ public final class PrintManagerService extends IPrintManager.Stub { private static final char COMPONENT_NAME_SEPARATOR = ':'; + private static final String EXTRA_PRINT_SERVICE_COMPONENT_NAME = + "EXTRA_PRINT_SERVICE_COMPONENT_NAME"; + private final Object mLock = new Object(); private final Context mContext; @@ -395,6 +404,25 @@ public final class PrintManagerService extends IPrintManager.Stub { } } + @Override + public void onPackageAdded(String packageName, int uid) { + Intent intent = new Intent(android.printservice.PrintService.SERVICE_INTERFACE); + intent.setPackage(packageName); + + List installedServices = mContext.getPackageManager() + .queryIntentServicesAsUser(intent, PackageManager.GET_SERVICES, + getChangingUserId()); + + final int installedServiceCount = installedServices.size(); + for (int i = 0; i < installedServiceCount; i++) { + ServiceInfo serviceInfo = installedServices.get(i).serviceInfo; + ComponentName component = new ComponentName(serviceInfo.packageName, + serviceInfo.name); + String label = serviceInfo.loadLabel(mContext.getPackageManager()).toString(); + showEnableInstalledPrintServiceNotification(component, label); + } + } + private void persistComponentNamesToSettingLocked(String settingName, Set componentNames, int userId) { StringBuilder builder = new StringBuilder(); @@ -522,4 +550,28 @@ public final class PrintManagerService extends IPrintManager.Stub { throw new IllegalArgumentException("Calling user can be changed to only " + "UserHandle.USER_CURRENT or UserHandle.USER_CURRENT_OR_SELF."); } + + private void showEnableInstalledPrintServiceNotification(ComponentName component, + String label) { + Intent intent = new Intent(Settings.ACTION_PRINT_SETTINGS); + intent.putExtra(EXTRA_PRINT_SERVICE_COMPONENT_NAME, component.flattenToString()); + + PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, + PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT, null); + + Notification.Builder builder = new Notification.Builder(mContext) + .setSmallIcon(R.drawable.ic_print) + .setContentTitle(mContext.getString(R.string.print_service_installed_title, label)) + .setContentText(mContext.getString(R.string.print_service_installed_message)) + .setContentIntent(pendingIntent) + .setWhen(System.currentTimeMillis()) + .setAutoCancel(true) + .setShowWhen(true); + + NotificationManager notificationManager = (NotificationManager) mContext + .getSystemService(Context.NOTIFICATION_SERVICE); + + String notificationTag = getClass().getName() + ":" + component.flattenToString(); + notificationManager.notify(notificationTag, 0, builder.build()); + } } -- 2.11.0