1. 程式人生 > >Android-獲取手機已經安裝的程式

Android-獲取手機已經安裝的程式

有時候我們會查詢手機裡面是否安裝了某個程式,或者獲取已經安裝軟體名稱的集合。

android這邊提供了相應的介面。

        final PackageManager packageManager = getActivity().getPackageManager();//獲取packagemanager 
        List< PackageInfo> pinfo = packageManager.getInstalledPackages(0);//獲取所有已安裝程式的包資訊 
            if(pinfo != null){ 
            for(int i = 0; i < pinfo.size(); i++){ 
                String packName = pinfo.get(i).packageName; 
                Log.d("info", "-->"+packName);
            } 
        } 

上面的例子可以打印出安裝軟體的包名。每個程式的包名在android手機裡都是唯一的。

判斷手機是否安裝了某個程式,如果安裝了此程式,刪除它。

	private void uninstallSoftware(Context context, String name) {
		final PackageManager packageManager = context.getPackageManager();
		try {
			PackageInfo pInfo = packageManager.getPackageInfo(name,
					PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
			if(pInfo!=null){
				//刪除軟體
				Uri uri = Uri.parse("package:"+ name);
				Intent intent = new Intent(Intent.ACTION_DELETE, uri);
				context.startActivity(intent);
			}
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
	}
從android2.2開始軟體可以安裝到SD卡上,所以也有相應介面判斷程式是否安裝到SD卡上
	private void isInstallOnSd(Context context,String name){
		PackageManager pm=context.getPackageManager();
		ApplicationInfo appInfo;
		try {
			appInfo = pm.getApplicationInfo(name, 0);
			if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
			       // App on sdcard
				Log.d("info", "app on sd");
			}
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		} 
	}