2010.11.01 23:35

가끔 안드로이드 핸드폰의 Launcher 어플을 보다 보면, 다운로드 어플 및 시스템 어플에 대해 궁금해질 때가 있다. 어떻게 어플을 찾아 낼까 라는... 여기 아래와 같은 코드를 통해 받아오는 방법이 존재한다. ( Launcher 소스 참조 )

패키지 매니저의 queryIntentActivities 메소드를 이용하는 방법이다. queryIntentActivities 메소드는 인자로 들어가는 Intent에 대해 검색하여 해당되는 모든 Activity를 ResolveInfo 리스트로 돌려준다. 여기서는 ACTION_MAIN, CATEGORY_LAUNCHER를 이용한 모든 Activity를 검색하는 하는 것이다. 
리스트로 받은 ResolveInfo는 ActivityInfo를 ActivityInfo는 ApplicationInfo를 가진다. ( API 참조 )
이러한 방법을 통해서 Activity를 얻어 올수 있겠다. 


PackageManager  mPm = getPackageManager();   

Intent intent = new Intent(Intent.ACTION_MAIN);      
intent.addCategory(Intent.CATEGORY_LAUNCHER);

List<ResolveInfo> list = mPm.queryIntentActivities(intent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
ArrayList<ActivityInfo> tempList=new ArrayList<ActivityInfo>();
int count=list.size();
for(int i=0; i<count; i++)
{
ResolveInfo firstInfo = list.get(i);
   String packageName = firstInfo.activityInfo.applicationInfo.packageName;
 tempList.add(list.get(i).activityInfo);
}
신고
Posted by 구름같은사나이

티스토리 툴바