Skip to content

Instantly share code, notes, and snippets.

@treesouth
Created February 14, 2015 07:44
Show Gist options
  • Save treesouth/c08240345ad264add7e8 to your computer and use it in GitHub Desktop.
Save treesouth/c08240345ad264add7e8 to your computer and use it in GitHub Desktop.
android获取系统内所有app的信息
import java.util.ArrayList;  
import java.util.Collections;  
import java.util.List;  
  
import android.content.Context;  
import android.content.pm.ApplicationInfo;  
import android.content.pm.PackageManager;  
import android.util.Log;  
  
  
public class RunningAppInfoParam {  
      
    private Context m_context;  
    private static final String LogTag = "hello";  
      
    public RunningAppInfoParam(Context context) {  
        m_context = context;  
    }  
      
    public List<ApplicationInfo> getInstallAppInfo() {  
        PackageManager mypm = m_context.getPackageManager();  
        List<ApplicationInfo> appInfoList = mypm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);  
        Collections.sort(appInfoList, new ApplicationInfo.DisplayNameComparator(mypm));// 排序    
          
        for(ApplicationInfo app: appInfoList) {  
            //Log.v(LogTag, "RunningAppInfoParam  getInstallAppInfo app label = " + (String)app.loadLabel(umpm));  
            //Log.v(LogTag, "RunningAppInfoParam  getInstallAppInfo app packageName = " + app.packageName);  
        }  
          
        return appInfoList;  
    }  
      
    //获取第三方应用信息  
    public ArrayList<String> getThirdAppInfo() {  
        List<ApplicationInfo> appList = getInstallAppInfo();  
        List<ApplicationInfo> thirdAppList = new ArrayList<ApplicationInfo>();  
        thirdAppList.clear();  
        for (ApplicationInfo app : appList) {    
            //非系统程序    
            if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {    
                thirdAppList.add(app);  
            }     
            //本来是系统程序,被用户手动更新后,该系统程序也成为第三方应用程序了    
            else if ((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){    
                thirdAppList.add(app);  
            }    
        }    
        PackageManager mypm = m_context.getPackageManager();  
        ArrayList<String> thirdAppNameList = new ArrayList<String>();  
        for(ApplicationInfo app : thirdAppList) {  
            Log.v(LogTag, "RunningAppInfoParam getThirdAppInfo app label = " + (String)app.loadLabel(mypm));  
            thirdAppNameList.add((String)app.loadLabel(mypm));  
        }  
          
        return thirdAppNameList;  
    }  
      
    //获取系统应用信息  
    public ArrayList<String> getSystemAppInfo() {  
        List<ApplicationInfo> appList = getInstallAppInfo();  
        List<ApplicationInfo> sysAppList = new ArrayList<ApplicationInfo>();  
        sysAppList.clear();  
        for (ApplicationInfo app : appList) {    
            if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {    
                sysAppList.add(app);  
            }    
        }  
        PackageManager mypm = m_context.getPackageManager();  
        ArrayList<String> sysAppNameList = new ArrayList<String>();  
        for(ApplicationInfo app : sysAppList) {  
            Log.v(LogTag, "RunningAppInfoParam getThirdAppInfo app label = " + (String)app.loadLabel(mypm));  
            sysAppNameList.add((String)app.loadLabel(mypm));  
        }  
          
        return sysAppNameList;  
          
    }  
      
}  
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment