/* * Copyright (C) 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. */ package com.androsz.electricsleepbeta.app; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; import com.androsz.electricsleepbeta.R; import com.androsz.electricsleepbeta.content.StartSleepReceiver; /** * This Activity actually handles two stages of a launcher shortcut's life * cycle. * * 1. Your application offers to provide shortcuts to the launcher. When the * user installs a shortcut, an activity within your application generates the * actual shortcut and returns it to the launcher, where it is shown to the user * as an icon. * * 2. Any time the user clicks on an installed shortcut, an intent is sent. * Typically this would then be handled as necessary by an activity within your * application. **/ public class LauncherShortcuts extends Activity { private static final String EXTRA_KEY = "com.androsz.electricsleepbeta.app.LauncherShortcuts"; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); // Resolve the intent final Intent intent = getIntent(); final String action = intent.getAction(); // If the intent is a request to create a shortcut, we'll do that and // exit if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) { setupShortcut(); } else if (StartSleepReceiver.START_SLEEP.equals(action)) { Intent homeIntent = new Intent(this, HomeActivity.class); homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(homeIntent); Intent sleepIntent = new Intent(StartSleepReceiver.START_SLEEP); sendBroadcast(sleepIntent); } finish(); overridePendingTransition(0, 0); } /** * This function creates a shortcut and returns it to the caller. There are * actually two intents that you will send back. * * The first intent serves as a container for the shortcut and is returned * to the launcher by setResult(). This intent must contain three fields: * * <ul> * <li>{@link android.content.Intent#EXTRA_SHORTCUT_INTENT} The shortcut * intent.</li> * <li>{@link android.content.Intent#EXTRA_SHORTCUT_NAME} The text that will * be displayed with the shortcut.</li> * <li>{@link android.content.Intent#EXTRA_SHORTCUT_ICON} The shortcut's * icon, if provided as a bitmap, <i>or</i> * {@link android.content.Intent#EXTRA_SHORTCUT_ICON_RESOURCE} if provided * as a drawable resource.</li> * </ul> * * If you use a simple drawable resource, note that you must wrapper it * using {@link android.content.Intent.ShortcutIconResource}, as shown * below. This is required so that the launcher can access resources that * are stored in your application's .apk file. If you return a bitmap, such * as a thumbnail, you can simply put the bitmap into the extras bundle * using {@link android.content.Intent#EXTRA_SHORTCUT_ICON}. * * The shortcut intent can be any intent that you wish the launcher to send, * when the user clicks on the shortcut. Typically this will be * {@link android.content.Intent#ACTION_VIEW} with an appropriate Uri for * your content, but any Intent will work here as long as it triggers the * desired action within your Activity. */ private void setupShortcut() { // First, set up the shortcut intent. For this example, we simply create // an intent that // will bring us directly back to this activity. A more typical // implementation would use a // data Uri in order to display a more specific result, or a custom // action in order to // launch a specific operation. Intent shortcutIntent = new Intent(StartSleepReceiver.START_SLEEP); shortcutIntent.setClassName(this, this.getClass().getName()); shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); // shortcutIntent.putExtra(EXTRA_KEY, // "ApiDemos Provided This Shortcut"); // Then, set up the container intent (the response to the caller) Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.track_sleep)); Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.home_btn_sleep); intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); // Now, return the result to the launcher setResult(RESULT_OK, intent); } }