ApplicationInfo.java revision a5902524d4403885eb4c50360bf3465c6be796ef
131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/* 231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * you may not use this file except in compliance with the License. 631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * You may obtain a copy of the License at 731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 1031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * See the License for the specific language governing permissions and 1431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * limitations under the License. 1531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 1631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 17a5902524d4403885eb4c50360bf3465c6be796efJoe Onoratopackage com.android.launcher2; 1831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 1931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.ComponentName; 2031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.ContentValues; 2131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.Intent; 2231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.graphics.Bitmap; 2331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.graphics.drawable.Drawable; 2431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 2531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/** 2631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Represents a launchable application. An application is made of a name (or title), 2731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * an intent and an icon. 2831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 2931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectclass ApplicationInfo extends ItemInfo { 3031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 3231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * The application name. 3331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 3431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project CharSequence title; 3531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 3731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * The intent used to start the application. 3831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 3931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project Intent intent; 4031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 4131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 4231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * The application icon. 4331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 4431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project Drawable icon; 4531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 4631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 4731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * When set to true, indicates that the icon has been resized. 4831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 4931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project boolean filtered; 5031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 5131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 5231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Indicates whether the icon comes from an application's resource (if false) 5331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * or from a custom Bitmap (if true.) 5431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 5531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project boolean customIcon; 5631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 5731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 5831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * If isShortcut=true and customIcon=false, this contains a reference to the 5931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * shortcut icon as an application's resource. 6031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 6131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project Intent.ShortcutIconResource iconResource; 6231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project ApplicationInfo() { 6473b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy itemType = LauncherSettings.BaseLauncherColumns.ITEM_TYPE_SHORTCUT; 6531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 6631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public ApplicationInfo(ApplicationInfo info) { 6831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project super(info); 6931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project title = info.title.toString(); 7031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project intent = new Intent(info.intent); 7131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project if (info.iconResource != null) { 7231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project iconResource = new Intent.ShortcutIconResource(); 7331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project iconResource.packageName = info.iconResource.packageName; 7431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project iconResource.resourceName = info.iconResource.resourceName; 7531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 7631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project icon = info.icon; 7731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project filtered = info.filtered; 7831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project customIcon = info.customIcon; 7931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 8031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 8231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Creates the application intent based on a component name and various launch flags. 8373b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy * Sets {@link #itemType} to {@link LauncherSettings.BaseLauncherColumns#ITEM_TYPE_APPLICATION}. 8431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 8531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * @param className the class name of the component representing the intent 8631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * @param launchFlags the launch flags 8731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 8831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project final void setActivity(ComponentName className, int launchFlags) { 8931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project intent = new Intent(Intent.ACTION_MAIN); 9031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project intent.addCategory(Intent.CATEGORY_LAUNCHER); 9131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project intent.setComponent(className); 9231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project intent.setFlags(launchFlags); 9373b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy itemType = LauncherSettings.BaseLauncherColumns.ITEM_TYPE_APPLICATION; 9431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 9531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 9631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 9731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project void onAddToDatabase(ContentValues values) { 9831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project super.onAddToDatabase(values); 9931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 10031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project String titleStr = title != null ? title.toString() : null; 10173b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.BaseLauncherColumns.TITLE, titleStr); 10231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 1031ce1a24cba4dc41bccfeab6fccb2f3355423841aRomain Guy String uri = intent != null ? intent.toUri(0) : null; 10473b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.BaseLauncherColumns.INTENT, uri); 10531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 10631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project if (customIcon) { 10773b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.BaseLauncherColumns.ICON_TYPE, 10873b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy LauncherSettings.BaseLauncherColumns.ICON_TYPE_BITMAP); 10931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project Bitmap bitmap = ((FastBitmapDrawable) icon).getBitmap(); 11031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project writeBitmap(values, bitmap); 11131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } else { 11273b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.BaseLauncherColumns.ICON_TYPE, 11373b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy LauncherSettings.BaseLauncherColumns.ICON_TYPE_RESOURCE); 11431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project if (iconResource != null) { 11573b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.BaseLauncherColumns.ICON_PACKAGE, 11673b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy iconResource.packageName); 11773b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy values.put(LauncherSettings.BaseLauncherColumns.ICON_RESOURCE, 11873b979d8c141c7ceac82dad7c5b271a6a42afa67Romain Guy iconResource.resourceName); 11931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 12031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 12131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 12231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 12331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 12431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public String toString() { 12531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return title.toString(); 12631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 12731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project} 128