/** * Copyright (c) 2012 Todoroo Inc * * See the file "LICENSE" for the full license governing this code. */ package com.todoroo.astrid.helper; import java.util.List; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import com.todoroo.astrid.api.AstridApiConstants; public class TaskListContextMenuExtensionLoader { public static class ContextMenuItem { public CharSequence title; public Intent intent; } private ContextMenuItem[] contextMenuItemCache = new ContextMenuItem[0]; public void loadContextMenuIntents(Context context) { Intent queryIntent = new Intent(AstridApiConstants.ACTION_TASK_CONTEXT_MENU); PackageManager pm = context.getPackageManager(); List<ResolveInfo> resolveInfoList = pm.queryBroadcastReceivers(queryIntent, PackageManager.GET_META_DATA); int length = resolveInfoList.size(); contextMenuItemCache = new ContextMenuItem[length]; for(int i = 0; i < length; i++) { ResolveInfo resolveInfo = resolveInfoList.get(i); ContextMenuItem item = new ContextMenuItem(); item.intent = new Intent(AstridApiConstants.ACTION_TASK_CONTEXT_MENU); item.intent.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); item.title = resolveInfo.loadLabel(pm); contextMenuItemCache[i] = item; } } public void loadInNewThread(final Context context) { new Thread(new Runnable() { public void run() { loadContextMenuIntents(context); } }).start(); } public ContextMenuItem[] getList() { return contextMenuItemCache; } }