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

          雪山飛鵠

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

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

          公告

          Locations of visitors to this page

          常用鏈接

          留言簿(18)

          隨筆分類(222)

          隨筆檔案(214)

          文章檔案(1)

          收藏夾(67)

          我的鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          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;

              
          // 獲取默認的SharedPreferences
              SharedPreferences sharedPreferences ;

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

              @Override
              
          public void onCreate(Bundle savedInstanceState) {
                  
          super.onCreate(savedInstanceState);
                  
                  sharedPreferences 
          = PreferenceManager.getDefaultSharedPreferences(this);
                  exists 
          = sharedPreferences.getBoolean(PREFERENCE_KEY_SHORTCUT_EXISTS, false);
                  
          //創建桌面快捷方式
                  
          //若第一次啟動則創建,下次啟動則不創建
                  if (!exists) {
                      setUpShortCut();
                  }
                  
                  Intent intent
          =getIntent();
                  String action
          =intent.getAction();
                  
          //長按桌面 創建快捷方式
                  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();
                      }
                  });
              }

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

                  Intent intent 
          = new Intent(CREATE_SHORTCUT_ACTION);

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

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

                  
          // 設置是否允許重復創建快捷方式 false表示不允許
                  intent.putExtra("duplicate"false);

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

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

                  
          // 發送廣播
                  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" />
              
          <!-- 創建桌面快捷方式的權限 -->
              
          <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
          主站蜘蛛池模板: 昆山市| 黄浦区| 长乐市| 汉沽区| 卓尼县| 万山特区| 万盛区| 泽州县| 莱芜市| 东丰县| 荣成市| 兴安县| 青海省| 麻阳| 手游| 藁城市| 五峰| 普安县| 武鸣县| 灵川县| 寿宁县| 新建县| 鞍山市| 景宁| 万年县| 通河县| 青龙| 自治县| 长丰县| 美姑县| 扎赉特旗| 巨鹿县| 巴东县| 额尔古纳市| 门源| 衢州市| 蓬安县| 寿阳县| 许昌县| 雷山县| 自贡市|