2013年1月7日 星期一

使用系統預設的Intent.ACTION_PICK_ACTIVITY選擇應用程式或捷徑

Intent.ACTION_PICK_ACTIVITY為系統中預設選擇選擇捷徑或應用程式的intent
所以可以使用這個intent可以叫出一個activity來選擇捷徑或應用程式
下例就是一個列出所有應用程式(有登記在launcher)的選擇清單
// 設定選單的內容
Intent appIntent = new Intent(Intent.ACTION_MAIN, null);
appIntent.addCategory(Intent.CATEGORY_LAUNCHER);
      
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
             
pickIntent.putExtra(Intent.EXTRA_INTENT, appIntent); // 選單的內容
pickIntent.putExtra(Intent.EXTRA_TITLE, "Select an application"); // 選單的標題
                
startActivityForResult(pickIntent, 0);


但是這樣子選擇應用程式之後並不會有任何動作
所以還要去實做onActivityResult()去接收選擇應用程式後回傳的那個intent, 這樣才能對選擇的目標進行想要做的操作
下例則為啟動選擇的應用程式的Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
    if (resultCode == Activity.RESULT_OK)
    {
        if(requestCode == 0)
        {
            startActivity(intent); // 啟動選擇的應用程式
        }
    }
}