2010年10月26日 星期二

[Android] 如何在桌面建立捷徑圖示 (1.Launcher 的 BroadcastReceiver)



這幾天在找關於建立捷徑的資料 , 從中歸類出兩種方法 , 首先是第一種透過Launcher
的BroadcastReceiver 的方法建立快捷 , Launcher 為了讓其他應用程式能建立自己的捷
所以就註冊了一個BroadcastReceiver 專門接收其他應用程式發出的建立捷徑訊息
下面是Launcher的AndroidManifest.xml文件中Install-ShortcutReceiver的註冊訊息


 

 
 


接下來我們就要宣告並發送一個用來告知Launcher要建立桌面捷徑的Intent , 不過首先我
從Launcher那取得權限 , 權限名稱宣告如下:

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



接著我們需要宣告一個Intent , 用他來告知Launcher建立桌面捷徑 , 而對於這一個用來
Creates a shortcut 的Intent來說 , 他必須包含三個資訊 , 下面是Android Reference


Activity Action: Creates a shortcut.
Input: Nothing.
Output: An Intent representing the shortcut. The intent must contain three extras: 
SHORTCUT_INTENT (value: Intent), 
SHORTCUT_NAME (value: String),
SHORTCUT_ICON (value: Bitmap) or SHORTCUT_ICON_RESOURCE (value: ShortcutIconResource).


程式碼實作如下:

public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Intent shortcutIntent = new Intent(INSTALL_SHORTCUT);
        
        // 如果宣告的Intent是用來建立桌面捷徑的話
        // 必須在Intent中加入名稱 , 圖示 , 要執行的動作
        // 所以此時 shortcutIntent.putExtra 分別載入
        // 上面所需要的三個資訊          
       
     
     shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name));
        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this,R.drawable.logo));
        //可以用 SHORTCUT_ICON (value: Bitmap)代替
        
        shortcutIntent.putExtra("duplicate", false);
        // 如果桌面上已經存在了之前建立的捷徑
        // 那麼參數false代表不能再建立相同的捷徑
        // 預設為true , 代表允許重複建立捷徑
        // 網路上有人使用 putExtra(EXTRA_SHORTCUT_DUPLICATE, false);
        // 我是使用Android 2.2的版本 , EXTRA_SHORTCUT_DUPLICATE 似乎已經被移除了
        // 所以使用 "duplicate" 代替
        
        
        Intent TaskIntent = new Intent();
        // 這邊宣告的Intent代表要執行動作
        
        TaskIntent.setComponent(new ComponentName(this.getPackageName(),".ShortcutTest"));        
        // 執行主程式
        
        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,TaskIntent);
        sendBroadcast(shortcutIntent);
        // 通知Launcher
    }


另外也別忘了在AndroidManifest.xml要加上uses-permission的標籤




成功之後就會出現以下的結果




                                當成功產生捷徑的時候 , 會有一個Toast訊息





接著可以看到桌面多出了一個Shortcut的捷徑!!!!


點擊捷徑就可以執行我們的主程式了 , 另外如果想把捷徑當作快速撥號的話 , 只要稍作修改如下
Intent TaskIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel://119"));
//撥號動作 , 打119


相關文章:
[Android] 如何在桌面建立捷徑圖示 (2.接受Intent.ACTION_CREATE_SHORTCUT動作)

沒有留言:

張貼留言

Google Analytics