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:
Jason Monk
2015-06-11 15:47:29 -04:00
parent 1fdbbffced
commit 2acff556c2
7 changed files with 117 additions and 14 deletions

View File

@@ -767,7 +767,6 @@
<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.notification.ZenModeScheduleRuleSettings" />
@@ -787,7 +786,6 @@
<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.notification.ZenModeEventRuleSettings" />
@@ -807,7 +805,6 @@
<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.notification.ZenModeExternalRuleSettings" />
@@ -926,6 +923,19 @@
android:value="true" />
</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"
android:label="@string/applications_settings"
android:taskAffinity="">

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View 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>

View File

@@ -244,4 +244,7 @@
<dimen name="mdm_app_info_height">72dp</dimen>
<dimen name="mdm_app_info_padding_top_bottom">8dp</dimen>
<dimen name="mdm_app_name_padding_left">16dp</dimen>
<dimen name="shortcut_size">40dp</dimen>
<dimen name="badge_size">10dp</dimen>
</resources>

View File

@@ -17,18 +17,33 @@
package com.android.settings;
import android.app.LauncherActivity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
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.MeasureSpec;
import android.widget.ImageView;
import android.widget.ListView;
import com.android.settings.Settings.TetherSettingsActivity;
import com.android.settings.dashboard.DashboardCategory;
import com.android.settings.dashboard.DashboardTile;
import com.android.settingslib.TetherUtil;
import java.util.ArrayList;
import java.util.List;
public class CreateShortcut extends LauncherActivity {
private static final String TOP_LEVEL_HEADER = "com.android.settings.TOP_LEVEL_HEADER_ID";
@Override
protected Intent getTargetIntent() {
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.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
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);
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
protected boolean onEvaluateShowIcons() {
return false;
@@ -60,7 +110,8 @@ public class CreateShortcut extends LauncherActivity {
* implementation queries for activities.
*/
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;
for (int i = activities.size() - 1; i >= 0; i--) {
ResolveInfo info = activities.get(i);

View File

@@ -113,5 +113,6 @@ public class Settings extends SettingsActivity {
public static class TopLevelSettings extends SettingsActivity { /* empty */ }
public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
public static class WifiCallingSettingsActivity extends SettingsActivity { /* empty */ }
public static class MemorySettingsActivity extends SettingsActivity { /* empty */ }
}

View File

@@ -1039,7 +1039,7 @@ public class SettingsActivity extends Activity
*/
private void buildDashboardCategories(List<DashboardCategory> categories) {
categories.clear();
loadCategoriesFromResource(R.xml.dashboard_categories, categories);
loadCategoriesFromResource(R.xml.dashboard_categories, categories, this);
updateTilesList(categories);
}
@@ -1050,10 +1050,11 @@ public class SettingsActivity extends Activity
* @param resid The XML resource to load and parse.
* @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;
try {
parser = getResources().getXml(resid);
parser = context.getResources().getXml(resid);
AttributeSet attrs = Xml.asAttributeSet(parser);
int type;
@@ -1082,7 +1083,7 @@ public class SettingsActivity extends Activity
if ("dashboard-category".equals(nodeName)) {
DashboardCategory category = new DashboardCategory();
TypedArray sa = obtainStyledAttributes(
TypedArray sa = context.obtainStyledAttributes(
attrs, com.android.internal.R.styleable.PreferenceHeader);
category.id = sa.getResourceId(
com.android.internal.R.styleable.PreferenceHeader_id,
@@ -1098,12 +1099,13 @@ public class SettingsActivity extends Activity
}
}
sa.recycle();
sa = obtainStyledAttributes(attrs, com.android.internal.R.styleable.Preference);
sa = context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.Preference);
tv = sa.peekValue(
com.android.internal.R.styleable.Preference_key);
if (tv != null && tv.type == TypedValue.TYPE_STRING) {
if (tv.resourceId != 0) {
category.key = getString(tv.resourceId);
category.key = context.getString(tv.resourceId);
} else {
category.key = tv.string.toString();
}
@@ -1121,7 +1123,7 @@ public class SettingsActivity extends Activity
if (innerNodeName.equals("dashboard-tile")) {
DashboardTile tile = new DashboardTile();
sa = obtainStyledAttributes(
sa = context.obtainStyledAttributes(
attrs, com.android.internal.R.styleable.PreferenceHeader);
tile.id = sa.getResourceId(
com.android.internal.R.styleable.PreferenceHeader_id,
@@ -1163,11 +1165,13 @@ public class SettingsActivity extends Activity
String innerNodeName2 = parser.getName();
if (innerNodeName2.equals("extra")) {
getResources().parseBundleExtra("extra", attrs, curBundle);
context.getResources().parseBundleExtra("extra", attrs,
curBundle);
XmlUtils.skipCurrentTag(parser);
} else if (innerNodeName2.equals("intent")) {
tile.intent = Intent.parseIntent(getResources(), parser, attrs);
tile.intent = Intent.parseIntent(context.getResources(), parser,
attrs);
} else {
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.
if(tile.id != R.id.sim_settings || Utils.showSimCardTile(this)){
if(tile.id != R.id.sim_settings || Utils.showSimCardTile(context)){
category.addTile(tile);
}