Commits

Stephen Smalley  committed 50892f2 Merge

Merge branch 'master' into seandroid

  • Participants
  • Parent commits b50ca8a, ba32c24

Comments (0)

Files changed (320)

 include $(CLEAR_VARS)
 
 LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt telephony-common
-LOCAL_STATIC_JAVA_LIBRARIES := guava android-support-v4 jsr305
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13 jsr305
 
 LOCAL_MODULE_TAGS := optional
 
 
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
 
+LOCAL_AAPT_FLAGS += -c zz_ZZ
+
 include $(BUILD_PACKAGE)
 
 # Use the folloing include to make our test apk.

File AndroidManifest.xml

     <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" />
     <uses-permission android:name="android.permission.READ_PROFILE" />
     <uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
     <uses-permission android:name="android.permission.SET_TIME" />
+    <uses-permission android:name="android.permission.ACCESS_NOTIFICATIONS" />
 
     <application android:label="@string/settings_label"
             android:icon="@mipmap/ic_launcher_settings"
             android:taskAffinity=""
             android:theme="@android:style/Theme.Holo"
-            android:uiOptions="splitActionBarWhenNarrow"
             android:hardwareAccelerated="true"
+            android:requiredForAllUsers="true"
             android:supportsRtl="true">
 
         <!-- Settings -->
         <!-- Top-level settings -->
 
         <activity android:name="Settings$WifiSettingsActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:taskAffinity=""
                 android:label="@string/wifi_settings"
                 android:configChanges="orientation|keyboardHidden|screenSize"
 
         <!-- Keep compatibility with old shortcuts. -->
         <activity-alias android:name=".wifi.WifiSettings"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:taskAffinity="com.android.settings"
                 android:label="@string/wifi_settings"
                 android:targetActivity="Settings$WifiSettingsActivity"
         </activity-alias>
 
         <activity android:name=".wifi.WifiPickerActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:taskAffinity="com.android.settings"
                 android:parentActivityName="Settings">
             <intent-filter>
         </activity>
 
         <activity android:name=".wifi.WifiSetupActivity"
-            android:theme="@style/setup_wizard_theme"
-            android:label="@string/wifi_setup_wizard_title"
+                android:uiOptions="splitActionBarWhenNarrow"
+                android:theme="@style/setup_wizard_theme"
+                android:label="@string/wifi_setup_wizard_title"
                 android:icon="@drawable/empty_icon"
-            android:clearTaskOnLaunch="true">
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.net.wifi.SETUP_WIFI_NETWORK" />
         </activity>
 
         <activity android:name=".wifi.WifiSettingsForSetupWizardXL"
-                  android:theme="@android:style/Theme.Holo.NoActionBar"
-                  android:screenOrientation="behind"
-                  android:clearTaskOnLaunch="true"
-                  android:windowSoftInputMode="adjustResize"
-                  android:exported="true" />
+                android:uiOptions="splitActionBarWhenNarrow"
+                android:theme="@android:style/Theme.Holo.NoActionBar"
+                android:screenOrientation="behind"
+                android:clearTaskOnLaunch="true"
+                android:windowSoftInputMode="adjustResize"
+                android:exported="true" />
 
         <activity android:name="Settings$AdvancedWifiSettingsActivity"
                 android:taskAffinity="com.android.settings"
 
         <activity android:name="ApnSettings"
                 android:label="@string/apn_settings"
-                android:uiOptions="none"
                 android:configChanges="orientation|keyboardHidden|screenSize"
                 android:launchMode="singleTask"
                 android:parentActivityName="Settings$WirelessSettingsActivity">
         </activity>
 
         <activity android:name="Settings$BluetoothSettingsActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:label="@string/bluetooth_settings_title"
                 android:taskAffinity=""
                 android:excludeFromRecents="true">
 
         <!-- Keep compatibility with old shortcuts. -->
         <activity-alias android:name=".bluetooth.BluetoothSettings"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:label="@string/bluetooth_settings_title"
                 android:targetActivity="Settings$BluetoothSettingsActivity"
                 android:exported="true"
         </activity-alias>
 
         <activity android:name=".bluetooth.DevicePickerActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:theme="@android:style/Theme.Holo.DialogWhenLarge"
                 android:label="@string/device_picker"
                 android:clearTaskOnLaunch="true">
 
         <activity android:name="Settings$TetherSettingsActivity"
                 android:label="@string/tether_settings_title_all"
-                android:uiOptions="none"
                 android:taskAffinity=""
                 android:excludeFromRecents="true">
             <intent-filter>
         <!-- Keep compatibility with old shortcuts. -->
         <activity-alias android:name=".TetherSettings"
                   android:label="@string/tether_settings_title_all"
-                  android:uiOptions="none"
                   android:clearTaskOnLaunch="true"
                   android:exported="true"
                   android:targetActivity="Settings$TetherSettingsActivity">
         </activity-alias>
 
         <activity android:name="Settings$WifiP2pSettingsActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:taskAffinity="com.android.settings"
                 android:parentActivityName="Settings$WifiSettingsActivity">
             <intent-filter>
         <activity android:name="Settings$UserDictionarySettingsActivity"
                 android:label="@string/user_dict_settings_titlebar"
                 android:taskAffinity="com.android.settings"
-                android:uiOptions="none"
                 android:parentActivityName="Settings$InputMethodAndLanguageSettingsActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
         <activity android:name="Settings$ManageApplicationsActivity"
                 android:label="@string/applications_settings"
                 android:taskAffinity=""
-                android:excludeFromRecents="true"
-                android:uiOptions="none">
+                android:excludeFromRecents="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.APPLICATION_SETTINGS" />
             </intent-filter>
         </activity-alias>
 
+        <activity android:name=".users.AppRestrictionsFragment$Activity"
+                android:label="@string/application_info_label"
+                android:exported="true"
+                android:taskAffinity="">
+            <intent-filter>
+                <action android:name="com.android.settings.APP_RESTRICTIONS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <!-- Provide direct entry into manage apps showing running services. -->
         <activity android:name="Settings$RunningServicesActivity"
                 android:label="@string/runningservices_settings_title"
                 android:resource="@id/application_settings" />
         </activity>
 
+        <activity android:name="Settings$NotificationStationActivity"
+                android:label="@string/sound_category_notification_title"
+                android:taskAffinity=""
+                android:excludeFromRecents="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="com.android.settings.SHORTCUT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.NotificationStation" />
+        </activity>
+
+        <activity android:name="Settings$AppOpsSummaryActivity"
+                android:label="@string/app_ops_settings"
+                android:taskAffinity=""
+                android:excludeFromRecents="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.APP_OPS_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <!-- Not yet ready to expose.
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
+                <category android:name="com.android.settings.SHORTCUT" />
+                -->
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.applications.AppOpsSummary" />
+            <!--
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/application_settings" /> -->
+        </activity>
+        
         <activity android:name="Settings$LocationSettingsActivity"
                 android:label="@string/location_settings_title"
-                android:uiOptions="none"
                 android:configChanges="orientation|keyboardHidden|screenSize"
                 android:taskAffinity=""
                 android:excludeFromRecents="true">
 
         <activity android:name="Settings$StorageSettingsActivity"
                 android:label="@string/storage_settings_title"
-                android:uiOptions="none"
                 android:taskAffinity="com.android.settings"
                 android:parentActivityName="Settings">
             <intent-filter>
                 android:theme="@android:style/Theme.Holo.DialogWhenLarge"/>
 
         <activity android:name="ApnEditor"
-                android:label="@string/apn_edit"
-                android:theme="@android:style/Theme.Holo.DialogWhenLarge">
+                android:label="@string/apn_edit">
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <action android:name="android.intent.action.EDIT" />
             </intent-filter>
         </activity>
 
+        <activity android:name=".wifi.WifiScanModeActivity"
+                  android:excludeFromRecents="true"
+                  android:theme="@style/Transparent">
+            <intent-filter>
+                <action android:name="android.net.wifi.action.REQUEST_SCAN_ALWAYS_AVAILABLE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <activity android:name=".bluetooth.RequestPermissionHelperActivity"
                   android:label="@string/bluetooth_pairing_request"
                   android:excludeFromRecents="true"
 
         <activity android:name="ActivityPicker"
                 android:label="@string/activity_picker_label"
-                android:theme="@*android:style/Theme.Dialog.Alert"
+                android:theme="@*android:style/Theme.Holo.Dialog.Alert"
                 android:finishOnCloseSystemDialogs="true">
             <intent-filter>
                 <action android:name="android.intent.action.PICK_ACTIVITY" />
         </activity>
 
         <activity android:name="Settings$WifiDisplaySettingsActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:label="@string/wifi_display_settings_title"
                 android:taskAffinity=""
                 android:excludeFromRecents="true">
 
         <activity android:name="Settings$PowerUsageSummaryActivity"
                 android:label="@string/power_usage_summary_title"
-                android:uiOptions="none"
                 android:taskAffinity=""
                 android:excludeFromRecents="true">
             <intent-filter>
         <activity android:name="Settings$AccountSyncSettingsActivity"
             android:label="@string/account_sync_settings_title"
             android:taskAffinity=""
-            android:parentActivityName="Settings"
-            android:uiOptions="none">
+            android:parentActivityName="Settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.ACCOUNT_SYNC_SETTINGS" />
 
         <activity android:name="Settings$DataUsageSummaryActivity"
                 android:label="@string/data_usage_summary_title"
-                android:uiOptions="none"
                 android:taskAffinity=""
                 android:excludeFromRecents="true">
             <intent-filter>
         </activity>
 
         <activity android:name="Settings$DreamSettingsActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
                 android:label="@string/screensaver_settings_title"
                 android:taskAffinity=""
                 android:excludeFromRecents="true">
                 android:resource="@id/display_settings" />
         </activity>
 
+        <activity android:name="Settings$UserSettingsActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
+                android:label="@string/user_settings_title"
+                android:taskAffinity=""
+                android:excludeFromRecents="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.USER_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.users.UserSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/user_settings" />
+        </activity>
+
+        <activity android:name="Settings$NotificationAccessSettingsActivity"
+                  android:label="@string/manage_notification_access"
+                  android:taskAffinity=""
+                  android:excludeFromRecents="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.NotificationAccessSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                       android:resource="@id/security_settings" />
+        </activity>
+
+        <!-- Show regulatory info (from settings item or dialing "*#07#") -->
+        <activity android:name="RegulatoryInfoDisplayActivity"
+                  android:label="@string/regulatory_information"
+                  android:taskAffinity=""
+                  android:excludeFromRecents="true">
+            <intent-filter>
+                <action android:name="android.settings.SHOW_REGULATORY_INFO" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <receiver android:name=".widget.SettingsAppWidgetProvider"
                 android:label="@string/gadget_title"
-                android:exported="true"
+                android:exported="false"
                 android:enabled="@bool/has_powercontrol_widget">
             <intent-filter>
                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

File proguard.flags

 -keep class com.android.settings.accounts.*
 -keep class com.android.settings.fuelgauge.*
 -keep class com.android.settings.users.*
+-keep class com.android.settings.NotificationStation
 
 # Keep click responders
 -keepclassmembers class com.android.settings.inputmethod.UserDictionaryAddWordActivity {

File res/drawable-hdpi/ic_settings_notifications.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_1.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_2.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_3.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_4.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_5.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_6.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_7.png

Added
New image

File res/drawable-ldrtl-hdpi/avatar_default_8.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_appwidget_settings_brightness_half_holo.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_bt_cellphone.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_emergency.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_network_signal_0.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_network_signal_1.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_network_signal_2.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_network_signal_3.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_network_signal_4.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_settings_applications.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_settings_display.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_settings_language.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_settings_multiuser.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_settings_sound.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_tab_selected_running.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_tab_unselected_running.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_1.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_2.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_3.png

Added
New image

File res/drawable-ldrtl-hdpi/ic_wifi_lock_signal_4.png

Added
New image

File res/drawable-ldrtl-hdpi/stat_sys_phone_call.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_1.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_2.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_3.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_4.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_5.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_6.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_7.png

Added
New image

File res/drawable-ldrtl-mdpi/avatar_default_8.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_appwidget_settings_brightness_half_holo.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_bt_cellphone.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_emergency.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_network_signal_0.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_network_signal_1.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_network_signal_2.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_network_signal_3.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_network_signal_4.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_settings_applications.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_settings_display.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_settings_language.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_settings_multiuser.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_settings_sound.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_tab_selected_running.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_tab_unselected_running.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_1.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_2.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_3.png

Added
New image

File res/drawable-ldrtl-mdpi/ic_wifi_lock_signal_4.png

Added
New image

File res/drawable-ldrtl-mdpi/stat_sys_phone_call.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_1.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_2.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_3.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_4.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_5.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_6.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_7.png

Added
New image

File res/drawable-ldrtl-xhdpi/avatar_default_8.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_appwidget_settings_brightness_half_holo.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_bt_cellphone.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_emergency.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_network_signal_0.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_network_signal_1.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_network_signal_2.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_network_signal_3.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_network_signal_4.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_settings_applications.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_settings_display.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_settings_language.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_settings_multiuser.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_settings_sound.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_tab_selected_running.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_tab_unselected_running.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_1.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_2.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_3.png

Added
New image

File res/drawable-ldrtl-xhdpi/ic_wifi_lock_signal_4.png

Added
New image

File res/drawable-ldrtl-xhdpi/stat_sys_phone_call.png

Added
New image

File res/drawable-mdpi/ic_settings_notifications.png

Added
New image

File res/drawable-xhdpi/ic_settings_notifications.png

Added
New image

File res/layout/app_ops_details.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipToPadding="false"
+    android:scrollbarStyle="@*android:integer/preference_fragment_scrollbarStyle">
+
+    <LinearLayout
+        android:id="@+id/all_details"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingBottom="5dip"
+        android:orientation="vertical">
+
+        <!-- App snippet -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+            android:orientation="vertical">
+
+            <!-- Application snippet label, version and icon -->
+            <include
+                layout="@layout/manage_applications_item"
+                android:id="@+id/app_snippet" />
+
+        </LinearLayout>
+
+        <!-- Operations list -->
+        <LinearLayout
+            android:id="@+id/operations_section"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+        </LinearLayout>
+    </LinearLayout>
+</ScrollView>

File res/layout/app_ops_details_item.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:paddingTop="8dip"
+    android:paddingBottom="8dip"
+    android:columnCount="3">
+
+    <ImageView
+        android:id="@+id/op_icon"
+        android:layout_width="@android:dimen/app_icon_size"
+        android:layout_height="@android:dimen/app_icon_size"
+        android:layout_column="0"
+        android:layout_row="0"
+        android:layout_rowSpan="2"
+        android:layout_marginEnd="8dip"
+        android:scaleType="centerInside"
+        android:contentDescription="@null" />
+
+    <TextView
+        android:id="@+id/op_name"
+        android:layout_column="1"
+        android:layout_row="0"
+        android:layout_gravity="fill_horizontal"
+        android:layout_marginTop="2dip"
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textAlignment="viewStart" />
+
+    <TextView
+        android:id="@+id/op_time"
+        android:layout_column="1"
+        android:layout_row="1"
+        android:layout_gravity="fill_horizontal|top"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textAlignment="viewStart" />
+
+    <Switch android:id="@+id/switchWidget"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:layout_marginStart="8dip"
+        android:layout_column="2"
+        android:layout_row="0"
+        android:layout_rowSpan="2"
+        android:padding="8dip"
+        android:focusable="false"
+        android:clickable="true" />
+
+</GridLayout>

File res/layout/app_ops_item.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:paddingTop="8dip"
+    android:paddingBottom="8dip"
+    android:columnCount="3">
+
+    <ImageView
+        android:id="@+id/app_icon"
+        android:layout_width="@android:dimen/app_icon_size"
+        android:layout_height="@android:dimen/app_icon_size"
+        android:layout_rowSpan="2"
+        android:layout_marginEnd="8dip"
+        android:scaleType="centerInside"
+        android:contentDescription="@null" />
+
+    <TextView
+        android:id="@+id/app_name"
+        android:layout_width="0dip"
+        android:layout_columnSpan="2"
+        android:layout_gravity="fill_horizontal"
+        android:layout_marginTop="2dip"
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textAlignment="viewStart" />
+
+    <TextView
+        android:id="@+id/op_name"
+        android:layout_width="0dip"
+        android:layout_gravity="fill_horizontal|top"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textAlignment="viewStart" />
+
+    <TextView
+        android:id="@+id/op_time"
+        android:layout_marginStart="8dip"
+        android:layout_gravity="top"
+        android:textAppearance="?android:attr/textAppearanceSmall" />
+
+</GridLayout>

File res/layout/app_ops_summary.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <android.support.v4.view.ViewPager
+            android:id="@+id/pager"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1">
+        <android.support.v4.view.PagerTabStrip
+                android:id="@+id/tabs"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="top"
+                android:textAppearance="@style/TextAppearance.PagerTabs"
+                android:paddingLeft="@dimen/pager_tabs_padding"
+                android:paddingRight="@dimen/pager_tabs_padding">
+        </android.support.v4.view.PagerTabStrip>
+    </android.support.v4.view.ViewPager>
+
+</LinearLayout>

File res/layout/app_percentage_item.xml

     <TextView
         android:id="@android:id/text1"
         android:layout_marginStart="8dip"
+        android:layout_marginTop="2dip"
         android:textAppearance="?android:attr/textAppearanceSmall" />
 
     <ProgressBar
         android:id="@android:id/progress"
         android:layout_height="12dip"
         android:layout_columnSpan="2"
-        android:layout_gravity="fill_horizontal"
+        android:layout_gravity="fill_horizontal|top"
         android:layout_marginTop="4dip"
         android:max="100"
         android:progressDrawable="@drawable/data_usage_bar"
     <TextView
         android:id="@android:id/summary"
         android:layout_width="0dip"
-        android:layout_gravity="fill_horizontal"
+        android:layout_gravity="fill_horizontal|top"
         android:layout_columnSpan="2"
         android:layout_marginTop="4dip"
         android:visibility="gone"

File res/layout/dream_info_row.xml

         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_toStartOf="@+id/divider"
+        android:clickable="true"
+        android:focusable="true"
         android:background="?android:attr/selectableItemBackground" >
 
         <!-- Dream icon -->
         android:background="?android:attr/selectableItemBackground"
         android:contentDescription="@string/screensaver_settings_button"
         android:padding="8dip"
+        android:clickable="true"
+        android:focusable="true"
         android:src="@drawable/ic_bt_config" />
 
-</RelativeLayout>
+</RelativeLayout>

File res/layout/edit_user_info_dialog_content.xml

+<!--
+     Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:baselineAligned="false"
+    android:padding="16dip">
+
+    <ImageView
+        android:id="@+id/user_photo"
+        android:layout_width="56dip"
+        android:layout_height="56dip"
+        android:layout_gravity="bottom"
+        android:layout_marginEnd="6dp"
+        android:contentDescription="@null"
+        android:background="@*android:drawable/spinner_background_holo_dark"
+        android:scaleType="fitCenter"/>
+
+    <EditText
+        android:id="@+id/user_name"
+        android:layout_width="0dip"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom"
+        android:layout_weight="1"
+        android:layout_marginStart="6dp"
+        android:ellipsize="end"
+        android:singleLine="true"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textAlignment="viewStart"
+        android:labelFor="@id/user_photo"
+        android:inputType="text|textCapWords"
+        android:selectAllOnFocus="true"
+        android:hint="@string/user_nickname"/>
+
+</LinearLayout>

File res/layout/edit_user_photo_popup_item.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/text1"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+    android:textAppearance="?android:attr/textAppearanceListItemSmall"
+    android:textColor="?android:attr/textColorAlertDialogListItem"
+    android:gravity="center_vertical"
+    android:paddingStart="16dip"
+    android:paddingEnd="16dip"
+    android:ellipsize="marquee"
+/>

File res/layout/enable_accessibility_service_dialog_content.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:scrollbarStyle="outsideOverlay"
+    android:gravity="top">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:paddingStart="16dip"
+        android:paddingEnd="16dip" >
+
+        <TextView android:id="@+id/capabilities_header"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:padding="10dip"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+
+        <LinearLayout android:id="@+id/capabilities"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:padding="10dip" />
+
+    </LinearLayout>
+
+</ScrollView>

File res/layout/manage_applications_item.xml

     <TextView
         android:id="@+id/app_size"
         android:layout_width="0dip"
-        android:layout_gravity="fill_horizontal"
+        android:layout_gravity="fill_horizontal|top"
         android:textAppearance="?android:attr/textAppearanceSmall"
         android:textAlignment="viewStart" />
 
     <TextView
         android:id="@+id/app_disabled"
         android:layout_marginStart="8dip"
+        android:layout_gravity="top"
         android:textAppearance="?android:attr/textAppearanceSmall" />
 
 </GridLayout>

File res/layout/notification_access_settings.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="0px"
+            android:layout_weight="1">
+        <ListView android:id="@android:id/list"
+                android:layout_width="match_parent" 
+                android:layout_height="match_parent"
+                android:drawSelectorOnTop="false"
+                android:fastScrollEnabled="true" />
+        <TextView android:id="@android:id/empty"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:text="@string/no_notification_listeners"
+                android:textAppearance="?android:attr/textAppearanceMedium" />
+    </FrameLayout>
+</LinearLayout>

File res/layout/notification_info_row.xml

+<!--
+     Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" >
+
+    <!-- Dream selectable row (icon, caption, radio button) -->
+
+    <RelativeLayout
+        android:id="@android:id/widget_frame"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_toStartOf="@+id/divider"
+        android:background="?android:attr/selectableItemBackground" >
+
+        <!-- Dream icon -->
+
+        <ImageView
+            android:id="@+id/pkgicon"
+            android:layout_width="@*android:dimen/status_bar_icon_size"
+            android:layout_height="@*android:dimen/status_bar_icon_size"
+            android:layout_centerVertical="true"
+            android:layout_marginBottom="6dp"
+            android:layout_marginStart="0dp"
+            android:layout_marginEnd="6dp"
+            android:layout_marginTop="6dp"
+            android:contentDescription="@null"
+            android:maxHeight="@*android:dimen/status_bar_icon_size"
+            android:maxWidth="@*android:dimen/status_bar_icon_size"
+            android:scaleType="fitCenter" />
+
+        <ImageView
+            android:id="@android:id/icon"
+            android:layout_width="@*android:dimen/status_bar_icon_size"
+            android:layout_height="@*android:dimen/status_bar_icon_size"
+            android:layout_centerVertical="true"
+            android:layout_toEndOf="@id/pkgicon"
+            android:layout_marginBottom="6dp"
+            android:layout_marginStart="0dp"
+            android:layout_marginEnd="8dp"
+            android:layout_marginTop="6dp"
+            android:contentDescription="@null"
+            android:maxHeight="@*android:dimen/status_bar_icon_size"
+            android:maxWidth="@*android:dimen/status_bar_icon_size"
+            android:scaleType="fitCenter" />
+
+        <!-- Dream caption -->
+
+        <TextView
+            android:id="@android:id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_toStartOf="@android:id/button1"
+            android:layout_toEndOf="@android:id/icon"
+            android:ellipsize="end"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textAlignment="viewStart"
+            android:labelFor="@android:id/button2" />
+
+        <!-- Dream radio button -->
+
+        <!--<RadioButton
+            android:id="@android:id/button1"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignParentEnd="true"
+            android:layout_centerVertical="true"
+            android:duplicateParentState="true"
+            android:clickable="false"
+            android:focusable="false" />-->
+    </RelativeLayout>
+
+    <!-- Divider -->
+
+    <ImageView
+        android:id="@id/divider"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_centerVertical="true"
+        android:layout_toStartOf="@android:id/button2"
+        android:contentDescription="@null"
+        android:src="@drawable/nav_divider" />
+
+    <!-- Settings icon -->
+
+    <ImageView
+        android:id="@android:id/button2"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_alignBottom="@android:id/widget_frame"
+        android:layout_alignParentEnd="true"
+        android:layout_alignTop="@android:id/widget_frame"
+        android:layout_centerVertical="true"
+        android:layout_margin="0dip"
+        android:background="?android:attr/selectableItemBackground"
+        android:contentDescription="@string/screensaver_settings_button"
+        android:padding="8dip"
+        android:src="@drawable/ic_bt_config" />
+
+</RelativeLayout>

File res/layout/notification_listener_item.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:orientation="horizontal"
+    android:paddingEnd="6dip"
+    android:gravity="center_vertical"
+    >
+
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="@android:dimen/app_icon_size"
+        android:layout_height="@android:dimen/app_icon_size"
+        android:layout_gravity="center_vertical"
+        android:scaleType="centerInside"
+        android:contentDescription="@null"
+        />
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="8dp"
+        android:layout_marginTop="8dip"
+        android:layout_marginBottom="8dip"
+        android:orientation="vertical"
+        android:gravity="left|center_vertical"
+        android:layout_weight="1">
+
+        <TextView android:id="@+id/name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:ellipsize="marquee"
+            android:fadingEdge="horizontal" />
+
+        <TextView android:id="@+id/description"
+            android:visibility="gone"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="4dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="?android:attr/textColorSecondary"
+            android:maxLines="4" />
+
+    </LinearLayout>
+
+    <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/checkbox"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:layout_marginEnd="16dip"
+        android:layout_marginStart="16dip"
+        android:focusable="false"
+        android:clickable="false" />
+
+</LinearLayout>

File res/layout/notification_log_row.xml

+<!--
+     Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="6dp"
+    android:paddingTop="6dp"
+    android:orientation="vertical"
+    android:background="?android:attr/selectableItemBackground"
+    >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@*android:dimen/status_bar_icon_size"
+        android:layout_marginBottom="4dp"
+        >
+
+        <ImageView
+            android:id="@android:id/icon"
+            android:layout_width="@*android:dimen/status_bar_icon_size"
+            android:layout_height="@*android:dimen/status_bar_icon_size"
+            android:layout_centerVertical="true"
+            android:layout_toEndOf="@id/pkgicon"
+            android:layout_marginStart="0dp"
+            android:layout_marginEnd="8dp"
+            android:contentDescription="@null"
+            android:adjustViewBounds="true"
+            android:maxHeight="@*android:dimen/status_bar_icon_size"
+            android:maxWidth="@*android:dimen/status_bar_icon_size"
+            android:scaleType="fitCenter" />
+
+        <TextView
+            android:id="@android:id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_toStartOf="@+id/timestamp"
+            android:layout_toEndOf="@android:id/icon"
+            android:ellipsize="end"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textStyle="bold"
+            android:textAlignment="viewStart"
+            android:labelFor="@android:id/button2" />
+
+        <DateTimeView
+            android:id="@+id/timestamp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@android:id/widget_frame"
+            android:layout_alignParentEnd="true"
+            android:layout_alignTop="@android:id/widget_frame"
+            android:layout_centerVertical="true"
+            android:ellipsize="end"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textAlignment="viewEnd"
+            />
+    </RelativeLayout>
+
+    <TextView
+        android:id="@+id/extra"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:layout_marginStart="30dp"
+        android:ellipsize="end"
+        android:singleLine="true"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textAlignment="viewStart"
+        />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="@*android:dimen/status_bar_icon_size"
+        android:orientation="horizontal"
+        android:layout_marginStart="30dp"
+        >
+
+        <ImageView
+            android:id="@+id/pkgicon"
+            android:layout_width="@*android:dimen/status_bar_icon_size"