天天看點

PackageManager(PackageManager)資訊類

(PackageManager)資訊類

  • 類圖結構
PackageManager(PackageManager)資訊類
PackageManager(PackageManager)資訊類
    • Android.content.pm包
  • ApplicationInfo  
  • ComponentInfo
    •  ActivityInfo
    • ProviderInfo
    • ServiceInfo
  • InstrumentationInfo
  • PermissionGroupInfo
  • PermissionInfo

  •  PackageInfo 
  •  ResolveInfo  

  •  用例
    • ApplicationInfo
    • ResolveInfo
    •  PackageInfo

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//擷取包名PackageManager	PackageInfo	ApplicationInfo	ActivityInfo
		
		//擷取包管理器
		PackageManager pm=this.getPackageManager();
		
		//擷取所有的包資訊
		List<PackageInfo> packageInfos=pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
		
		for (PackageInfo packageInfo : packageInfos) {
			
			//擷取應用程式資訊(<application>标簽)
			ApplicationInfo applicationInfo=packageInfo.applicationInfo;
		
			//應用程式包名
			Log.i("liujun", "PackageInfo包名:---"+applicationInfo.packageName);
			
		}
		
		
		//
		
		//建立意圖
		Intent intent=new Intent();
		intent.setAction(Intent.ACTION_MAIN);
		intent.addCategory(Intent.CATEGORY_LAUNCHER);
		
		//擷取解析資訊對象集合
		List<ResolveInfo> resolveInfos=pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
		
		for (ResolveInfo resolveInfo : resolveInfos) {
			
			//擷取應用程式包名
			String packName=resolveInfo.activityInfo.packageName;
			
			Log.i("liujun", "ResolveInfo包名:--"+packName);
			
		}
		
		
		Log.i("liujun", "packageInfos長度:--"+packageInfos.size());
		
		Log.i("liujun", "ResolveInfo長度:--"+resolveInfos.size());
		
		
		/**
		 *	結果表明packageInfos.size()會多于resolveInfos.size()的
		 *	這是因為PackageInfo代表的是整個系統安裝的程式(包)
		 *	ResolveInfo代表的是整個系統中含有桌面快捷圖示的程式
		 * 	顯然前者包含後者,且多于後者
		 */
		
	}

}
           

代碼位址

http://download.csdn.net/detail/u010739551/7893685

補充 

RunningTaskInfo

ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        
        //目前運作的任務棧資訊集合
        List<RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);
        
        RunningTaskInfo runningTaskInfo=rti.get(0);
        
        //元件名
        ComponentName componentName=runningTaskInfo.topActivity;
        
        //包名
        String packageNameStr=componentName.getPackageName();
           

繼續閱讀