溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請您在轉(zhuǎn)載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請您在轉(zhuǎn)載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
          ShortCutActivity
          package com.zhy.shortcut;

          import android.app.Activity;
          import android.content.ComponentName;
          import android.content.Intent;
          import android.content.SharedPreferences;
          import android.content.SharedPreferences.Editor;
          import android.os.Bundle;
          import android.preference.PreferenceManager;
          import android.view.View;
          import android.view.View.OnClickListener;
          import android.widget.Button;

          public class ShortCutActivity extends Activity {

              
          private static final String CREATE_SHORTCUT_ACTION = "com.android.launcher.action.INSTALL_SHORTCUT";

              
          private static final String DROP_SHORTCUT_ACTION = "com.android.launcher.action.UNINSTALL_SHORTCUT";

              
          private static final String PREFERENCE_KEY_SHORTCUT_EXISTS = "IsShortCutExists";

              Button button;

              
          // 獲取默認(rèn)的SharedPreferences
              SharedPreferences sharedPreferences ;

              
          // 從SharedPreferences獲取是否存在快捷方式 若不存在返回false 程序第一次進(jìn)來肯定返回false
              boolean exists ;

              @Override
              
          public void onCreate(Bundle savedInstanceState) {
                  
          super.onCreate(savedInstanceState);
                  
                  sharedPreferences 
          = PreferenceManager.getDefaultSharedPreferences(this);
                  exists 
          = sharedPreferences.getBoolean(PREFERENCE_KEY_SHORTCUT_EXISTS, false);
                  
          //創(chuàng)建桌面快捷方式
                  
          //若第一次啟動則創(chuàng)建,下次啟動則不創(chuàng)建
                  if (!exists) {
                      setUpShortCut();
                  }
                  
                  Intent intent
          =getIntent();
                  String action
          =intent.getAction();
                  
          //長按桌面 創(chuàng)建快捷方式
                  if(Intent.ACTION_CREATE_SHORTCUT.equals(action)){
                      
                      Intent shortCut
          =new Intent(Intent.ACTION_MAIN);
                      shortCut.setClassName(
          thisthis.getClass().getName());
                      
                      Intent data
          =new Intent();
                      
                      data.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(
          this, R.drawable.logo));
                      data.putExtra(Intent.EXTRA_SHORTCUT_NAME, 
          "sina");
                      data.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortCut);
                      data.putExtra(
          "duplicate"false);
                      
                      setResult(RESULT_OK, data);
                      
                      finish();
                      
                      
          return;
                  }
                  
                  setContentView(R.layout.main);

                  button 
          = (Button) findViewById(R.id.dropShortCut);

                  button.setOnClickListener(
          new OnClickListener() {

                      @Override
                      
          public void onClick(View v) {
                          tearDownShortCut();
                      }
                  });
              }

              
              
              
              
          /**
               * 啟動時創(chuàng)建桌面快捷方式
               
          */
              
          private void setUpShortCut() {

                  Intent intent 
          = new Intent(CREATE_SHORTCUT_ACTION);

                  
          // 設(shè)置快捷方式圖片
                  intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this, R.drawable.logo));

                  
          // 設(shè)置快捷方式名稱
                  intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "sina");

                  
          // 設(shè)置是否允許重復(fù)創(chuàng)建快捷方式 false表示不允許
                  intent.putExtra("duplicate"false);

                  
                  
                  
          // 設(shè)置快捷方式要打開的intent
                  
                  
          // 第一種方法創(chuàng)建快捷方式要打開的目標(biāo)intent
                  Intent targetIntent = new Intent();
                  
          // 設(shè)置應(yīng)用程序卸載時同時也刪除桌面快捷方式
                  targetIntent.setAction(Intent.ACTION_MAIN);
                  targetIntent.addCategory(
          "android.intent.category.LAUNCHER");
                  
                  ComponentName componentName 
          = new ComponentName(getPackageName(), this.getClass().getName());
                  targetIntent.setComponent(componentName);
                  

                  
          // 第二種方法創(chuàng)建快捷方式要打開的目標(biāo)intent
                  /*
                   * Intent
                   * targetIntent=getPackageManager().getLaunchIntentForPackage(getPackageName
                   * ());
                   
          */
                  intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);

                  
          // 發(fā)送廣播
                  sendBroadcast(intent);

                  Editor editor 
          = sharedPreferences.edit();
                  editor.putBoolean(PREFERENCE_KEY_SHORTCUT_EXISTS, 
          true);
                  editor.commit();

              }

              
          /**
               * 刪除桌面快捷方式
               
          */
              @Deprecated
              
          private void tearDownShortCut() {

                  Intent intent 
          = new Intent(DROP_SHORTCUT_ACTION);
                  
          // 指定要刪除的shortcut名稱
                  intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "sina");

                  String appClass 
          = getPackageName() + "." + this.getLocalClassName();

                  ComponentName component 
          = new ComponentName(getPackageName(), appClass);
                  intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
          new Intent().setAction(Intent.ACTION_MAIN).setComponent(component));
                  sendBroadcast(intent);

              }

              
              
              
              
              
              
              
              
          }
          AndroidManifest.xml
          <?xml version="1.0" encoding="utf-8"?>
          <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package
          ="com.zhy.shortcut"
              android:versionCode
          ="1"
              android:versionName
          ="1.0" >

              
          <uses-sdk android:minSdkVersion="8" />
              
          <!-- 創(chuàng)建桌面快捷方式的權(quán)限 -->
              
          <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
              
          <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
              
          <application
                  
          android:icon="@drawable/logo"
                  android:label
          ="@string/app_name" >
                  
          <activity
                      
          android:label="@string/app_name"
                      android:name
          =".ShortCutActivity" >
                      
          <intent-filter >
                          
          <action android:name="android.intent.action.MAIN" />
                          
          <category android:name="android.intent.category.LAUNCHER" />
                      
          </intent-filter>
                  
          </activity>
                  
          <activity-alias
                      
          android:targetActivity=".ShortCutActivity"
                      android:name
          =".AliasShortCutActivity" >
                      
          <intent-filter >
                          
          <action android:name="android.intent.action.CREATE_SHORTCUT" />
                          
          <category android:name="android.intent.category.DEFAULT" />
                      
          </intent-filter>
                  
          </activity-alias>
              
          </application>

          </manifest>


          posted on 2011-12-13 14:24 雪山飛鵠 閱讀(1751) 評論(0)  編輯  收藏 所屬分類: android
          主站蜘蛛池模板: 白玉县| 海兴县| 泰安市| 浑源县| 辽源市| 淅川县| 板桥市| 江北区| 鲁甸县| 奎屯市| 衡东县| 开平市| 疏附县| 新绛县| 锡林浩特市| 曲沃县| 沙田区| 沁水县| 河东区| 灵石县| 丁青县| 涪陵区| 伊金霍洛旗| 台江县| 甘孜县| 崇义县| 晋城| 聂荣县| 建阳市| 子长县| 苍山县| 哈密市| 石渠县| 于田县| 饶河县| 巴中市| 类乌齐县| 黄浦区| 米林县| 玛曲县| 特克斯县|