Clean up settings shortcuts
- Remove some bad entries - Fix icons to be top-level item specific - Add memory Bug: 20632230 Change-Id: I067b467b9ee354b52ef61b312dc5a89fd7eae2ac
This commit is contained in:
@@ -767,7 +767,6 @@
|
|||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="com.android.settings.SHORTCUT" />
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
android:value="com.android.settings.notification.ZenModeScheduleRuleSettings" />
|
android:value="com.android.settings.notification.ZenModeScheduleRuleSettings" />
|
||||||
@@ -787,7 +786,6 @@
|
|||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="com.android.settings.SHORTCUT" />
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
android:value="com.android.settings.notification.ZenModeEventRuleSettings" />
|
android:value="com.android.settings.notification.ZenModeEventRuleSettings" />
|
||||||
@@ -807,7 +805,6 @@
|
|||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="com.android.settings.SHORTCUT" />
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
android:value="com.android.settings.notification.ZenModeExternalRuleSettings" />
|
android:value="com.android.settings.notification.ZenModeExternalRuleSettings" />
|
||||||
@@ -926,6 +923,19 @@
|
|||||||
android:value="true" />
|
android:value="true" />
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity android:name="Settings$MemorySettingsActivity"
|
||||||
|
android:label="@string/memory_settings_title"
|
||||||
|
android:taskAffinity="">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="com.android.settings.SHORTCUT" />
|
||||||
|
</intent-filter>
|
||||||
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
|
android:value="com.android.settings.applications.ProcessStatsSummary" />
|
||||||
|
<meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
|
||||||
|
android:resource="@id/manage_memory" />
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity android:name="Settings$AllApplicationsActivity"
|
<activity android:name="Settings$AllApplicationsActivity"
|
||||||
android:label="@string/applications_settings"
|
android:label="@string/applications_settings"
|
||||||
android:taskAffinity="">
|
android:taskAffinity="">
|
||||||
|
BIN
res/drawable-xxxhdpi/shortcut_base.png
Normal file
BIN
res/drawable-xxxhdpi/shortcut_base.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 KiB |
34
res/layout/shortcut_badge.xml
Normal file
34
res/layout/shortcut_badge.xml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 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="@dimen/shortcut_size"
|
||||||
|
android:layout_height="@dimen/shortcut_size">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="@dimen/shortcut_size"
|
||||||
|
android:layout_height="@dimen/shortcut_size"
|
||||||
|
android:scaleType="fitXY"
|
||||||
|
android:src="@drawable/shortcut_base" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@android:id/icon"
|
||||||
|
android:layout_width="@dimen/shortcut_size"
|
||||||
|
android:layout_height="@dimen/shortcut_size"
|
||||||
|
android:padding="12dp"
|
||||||
|
android:scaleType="fitXY" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
@@ -244,4 +244,7 @@
|
|||||||
<dimen name="mdm_app_info_height">72dp</dimen>
|
<dimen name="mdm_app_info_height">72dp</dimen>
|
||||||
<dimen name="mdm_app_info_padding_top_bottom">8dp</dimen>
|
<dimen name="mdm_app_info_padding_top_bottom">8dp</dimen>
|
||||||
<dimen name="mdm_app_name_padding_left">16dp</dimen>
|
<dimen name="mdm_app_name_padding_left">16dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="shortcut_size">40dp</dimen>
|
||||||
|
<dimen name="badge_size">10dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -17,18 +17,33 @@
|
|||||||
package com.android.settings;
|
package com.android.settings;
|
||||||
|
|
||||||
import android.app.LauncherActivity;
|
import android.app.LauncherActivity;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.ActivityInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.Bitmap.Config;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.view.ContextThemeWrapper;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.View.MeasureSpec;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
|
||||||
import com.android.settings.Settings.TetherSettingsActivity;
|
import com.android.settings.Settings.TetherSettingsActivity;
|
||||||
|
import com.android.settings.dashboard.DashboardCategory;
|
||||||
|
import com.android.settings.dashboard.DashboardTile;
|
||||||
import com.android.settingslib.TetherUtil;
|
import com.android.settingslib.TetherUtil;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CreateShortcut extends LauncherActivity {
|
public class CreateShortcut extends LauncherActivity {
|
||||||
|
|
||||||
|
private static final String TOP_LEVEL_HEADER = "com.android.settings.TOP_LEVEL_HEADER_ID";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Intent getTargetIntent() {
|
protected Intent getTargetIntent() {
|
||||||
Intent targetIntent = new Intent(Intent.ACTION_MAIN, null);
|
Intent targetIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||||
@@ -46,10 +61,45 @@ public class CreateShortcut extends LauncherActivity {
|
|||||||
Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher_settings));
|
Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher_settings));
|
||||||
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
|
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
|
||||||
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, itemForPosition(position).label);
|
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, itemForPosition(position).label);
|
||||||
|
ResolveInfo resolveInfo = itemForPosition(position).resolveInfo;
|
||||||
|
ActivityInfo activityInfo = resolveInfo.activityInfo;
|
||||||
|
if (activityInfo.metaData != null && activityInfo.metaData.containsKey(TOP_LEVEL_HEADER)) {
|
||||||
|
int topLevelId = activityInfo.metaData.getInt(TOP_LEVEL_HEADER);
|
||||||
|
int resourceId = getDrawableResource(topLevelId);
|
||||||
|
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, createIcon(resourceId));
|
||||||
|
}
|
||||||
setResult(RESULT_OK, intent);
|
setResult(RESULT_OK, intent);
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Bitmap createIcon(int resource) {
|
||||||
|
Context context = new ContextThemeWrapper(this, android.R.style.Theme_Material_Light);
|
||||||
|
View view = LayoutInflater.from(context).inflate(R.layout.shortcut_badge, null);
|
||||||
|
((ImageView) view.findViewById(android.R.id.icon)).setImageResource(resource);
|
||||||
|
|
||||||
|
int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
|
||||||
|
view.measure(spec, spec);
|
||||||
|
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
|
||||||
|
Config.ARGB_8888);
|
||||||
|
Canvas canvas = new Canvas(bitmap);
|
||||||
|
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
|
||||||
|
view.draw(canvas);
|
||||||
|
return bitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getDrawableResource(int topLevelId) {
|
||||||
|
ArrayList<DashboardCategory> categories = new ArrayList<>();
|
||||||
|
SettingsActivity.loadCategoriesFromResource(R.xml.dashboard_categories, categories, this);
|
||||||
|
for (DashboardCategory category : categories) {
|
||||||
|
for (DashboardTile tile : category.tiles) {
|
||||||
|
if (tile.id == topLevelId) {
|
||||||
|
return tile.iconRes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean onEvaluateShowIcons() {
|
protected boolean onEvaluateShowIcons() {
|
||||||
return false;
|
return false;
|
||||||
@@ -60,7 +110,8 @@ public class CreateShortcut extends LauncherActivity {
|
|||||||
* implementation queries for activities.
|
* implementation queries for activities.
|
||||||
*/
|
*/
|
||||||
protected List<ResolveInfo> onQueryPackageManager(Intent queryIntent) {
|
protected List<ResolveInfo> onQueryPackageManager(Intent queryIntent) {
|
||||||
List<ResolveInfo> activities = super.onQueryPackageManager(queryIntent);
|
List<ResolveInfo> activities = getPackageManager().queryIntentActivities(queryIntent,
|
||||||
|
PackageManager.GET_META_DATA);
|
||||||
if (activities == null) return null;
|
if (activities == null) return null;
|
||||||
for (int i = activities.size() - 1; i >= 0; i--) {
|
for (int i = activities.size() - 1; i >= 0; i--) {
|
||||||
ResolveInfo info = activities.get(i);
|
ResolveInfo info = activities.get(i);
|
||||||
|
@@ -113,5 +113,6 @@ public class Settings extends SettingsActivity {
|
|||||||
public static class TopLevelSettings extends SettingsActivity { /* empty */ }
|
public static class TopLevelSettings extends SettingsActivity { /* empty */ }
|
||||||
public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class WifiCallingSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class WifiCallingSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
|
public static class MemorySettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1039,7 +1039,7 @@ public class SettingsActivity extends Activity
|
|||||||
*/
|
*/
|
||||||
private void buildDashboardCategories(List<DashboardCategory> categories) {
|
private void buildDashboardCategories(List<DashboardCategory> categories) {
|
||||||
categories.clear();
|
categories.clear();
|
||||||
loadCategoriesFromResource(R.xml.dashboard_categories, categories);
|
loadCategoriesFromResource(R.xml.dashboard_categories, categories, this);
|
||||||
updateTilesList(categories);
|
updateTilesList(categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1050,10 +1050,11 @@ public class SettingsActivity extends Activity
|
|||||||
* @param resid The XML resource to load and parse.
|
* @param resid The XML resource to load and parse.
|
||||||
* @param target The list in which the parsed categories and tiles should be placed.
|
* @param target The list in which the parsed categories and tiles should be placed.
|
||||||
*/
|
*/
|
||||||
private void loadCategoriesFromResource(int resid, List<DashboardCategory> target) {
|
public static void loadCategoriesFromResource(int resid, List<DashboardCategory> target,
|
||||||
|
Context context) {
|
||||||
XmlResourceParser parser = null;
|
XmlResourceParser parser = null;
|
||||||
try {
|
try {
|
||||||
parser = getResources().getXml(resid);
|
parser = context.getResources().getXml(resid);
|
||||||
AttributeSet attrs = Xml.asAttributeSet(parser);
|
AttributeSet attrs = Xml.asAttributeSet(parser);
|
||||||
|
|
||||||
int type;
|
int type;
|
||||||
@@ -1082,7 +1083,7 @@ public class SettingsActivity extends Activity
|
|||||||
if ("dashboard-category".equals(nodeName)) {
|
if ("dashboard-category".equals(nodeName)) {
|
||||||
DashboardCategory category = new DashboardCategory();
|
DashboardCategory category = new DashboardCategory();
|
||||||
|
|
||||||
TypedArray sa = obtainStyledAttributes(
|
TypedArray sa = context.obtainStyledAttributes(
|
||||||
attrs, com.android.internal.R.styleable.PreferenceHeader);
|
attrs, com.android.internal.R.styleable.PreferenceHeader);
|
||||||
category.id = sa.getResourceId(
|
category.id = sa.getResourceId(
|
||||||
com.android.internal.R.styleable.PreferenceHeader_id,
|
com.android.internal.R.styleable.PreferenceHeader_id,
|
||||||
@@ -1098,12 +1099,13 @@ public class SettingsActivity extends Activity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sa.recycle();
|
sa.recycle();
|
||||||
sa = obtainStyledAttributes(attrs, com.android.internal.R.styleable.Preference);
|
sa = context.obtainStyledAttributes(attrs,
|
||||||
|
com.android.internal.R.styleable.Preference);
|
||||||
tv = sa.peekValue(
|
tv = sa.peekValue(
|
||||||
com.android.internal.R.styleable.Preference_key);
|
com.android.internal.R.styleable.Preference_key);
|
||||||
if (tv != null && tv.type == TypedValue.TYPE_STRING) {
|
if (tv != null && tv.type == TypedValue.TYPE_STRING) {
|
||||||
if (tv.resourceId != 0) {
|
if (tv.resourceId != 0) {
|
||||||
category.key = getString(tv.resourceId);
|
category.key = context.getString(tv.resourceId);
|
||||||
} else {
|
} else {
|
||||||
category.key = tv.string.toString();
|
category.key = tv.string.toString();
|
||||||
}
|
}
|
||||||
@@ -1121,7 +1123,7 @@ public class SettingsActivity extends Activity
|
|||||||
if (innerNodeName.equals("dashboard-tile")) {
|
if (innerNodeName.equals("dashboard-tile")) {
|
||||||
DashboardTile tile = new DashboardTile();
|
DashboardTile tile = new DashboardTile();
|
||||||
|
|
||||||
sa = obtainStyledAttributes(
|
sa = context.obtainStyledAttributes(
|
||||||
attrs, com.android.internal.R.styleable.PreferenceHeader);
|
attrs, com.android.internal.R.styleable.PreferenceHeader);
|
||||||
tile.id = sa.getResourceId(
|
tile.id = sa.getResourceId(
|
||||||
com.android.internal.R.styleable.PreferenceHeader_id,
|
com.android.internal.R.styleable.PreferenceHeader_id,
|
||||||
@@ -1163,11 +1165,13 @@ public class SettingsActivity extends Activity
|
|||||||
|
|
||||||
String innerNodeName2 = parser.getName();
|
String innerNodeName2 = parser.getName();
|
||||||
if (innerNodeName2.equals("extra")) {
|
if (innerNodeName2.equals("extra")) {
|
||||||
getResources().parseBundleExtra("extra", attrs, curBundle);
|
context.getResources().parseBundleExtra("extra", attrs,
|
||||||
|
curBundle);
|
||||||
XmlUtils.skipCurrentTag(parser);
|
XmlUtils.skipCurrentTag(parser);
|
||||||
|
|
||||||
} else if (innerNodeName2.equals("intent")) {
|
} else if (innerNodeName2.equals("intent")) {
|
||||||
tile.intent = Intent.parseIntent(getResources(), parser, attrs);
|
tile.intent = Intent.parseIntent(context.getResources(), parser,
|
||||||
|
attrs);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
XmlUtils.skipCurrentTag(parser);
|
XmlUtils.skipCurrentTag(parser);
|
||||||
@@ -1180,7 +1184,7 @@ public class SettingsActivity extends Activity
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show the SIM Cards setting if there are more than 2 SIMs installed.
|
// Show the SIM Cards setting if there are more than 2 SIMs installed.
|
||||||
if(tile.id != R.id.sim_settings || Utils.showSimCardTile(this)){
|
if(tile.id != R.id.sim_settings || Utils.showSimCardTile(context)){
|
||||||
category.addTile(tile);
|
category.addTile(tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user