2011-09-05 6 views

답변

7

확실히, PackageManager.getInstalledPackages 방법을보십시오.

List<PackageInfo> pInfos = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES); 
for (PackageInfo pInfo : pInfos) { 
    ActivityInfo[] aInfos = pInfo.activities; 
    if (aInfos != null) { 
    for (ActivityInfo activityInfo : aInfos) { 
     Log.i("ACT", activityInfo.name); 
     // do whatever else you like... 
    } 
    } 
} 
1
ArrayList<PackageInfo> res = new ArrayList<PackageInfo>(); 
PackageManager pm = ctx.getPackageManager(); 
List<PackageInfo> packs = pm.getInstalledPackages(0); 

for(int i=0;i<packs.size();i++) { 
    PackageInfo p = packs.get(i); 
    String description = (String) p.applicationInfo.loadDescription(pm); 
    String label= p.applicationInfo.loadLabel(pm).toString(); 
    String packageName = p.packageName; 
    String versionName = p.versionName; 
    String versionCode = p.versionCode; 
    String icon = p.applicationInfo.loadIcon(pm); 
//Continue to extract other info about the app... 
} 

참고 :

<uses-permission android:name="android.permission.GET_TASKS" /> 

은 위의 코드에 이것을 추가 : 매니페스트 파일에이 권한을 추가

PackageManager.getactivities -- I have not used this PackageManager.getactivities but I hope it will work for you.... 
+0

'다음은 인쇄 등록 활동 이름의 예입니다 pm.getInstalledPackages (0)'- PackageManager가 반환해야하는 정보의 종류 (예 : PackageManager.GET_ACTIVITIES)를 지정해야하므로 작동하지 않습니다. 내 대답을 확인하십시오. Btw, 'android.permission.GET_TASKS'는 내가 그것없이 처리 할 수 ​​있었던 활동을 열거 할 필요가 없습니다. – Idolon

+0

PackageManager.GET_ACTIVITIES에 대해 언급했는데 위의 코드로 장치에 설치된 앱 목록을 가져 오는 데 사용한 코드를 추가했습니다 ... –

+0

'getApplicationContext()'가 필요하지 않습니다 - 단지'getPackageManager()'를 on 'ctx'. – CommonsWare

관련 문제