インストール済みのアプリ(apkファイル)の一覧を取得する方法

Androidでメーカー標準でインストールされているアプリを除いた、ユーザーがインストールしたアプリのみをリストアップする方法です。

英語が不自由だったのでリファレンスで目的の場所にたどり着くのにすごく時間がかかっただけなんですけどメモです。
ネットで調べても探し方が悪いのかあまりに一般的なのかなかなか出てこなかったので。

PackageManagerクラスを使ってパッケージの一覧を取得するのですが、メーカーがあらかじめインストールしているアプリも含めて全部を取得できてしまうのでApplicationInfo#flagsを使って絞込みします。

サンプル
PackageManager pm = getPackageManager();
if(pm == null){
		Log.d("test", "none package manager");
}else{
	List package_list = pm.getInstalledPackages(
			PackageManager.GET_UNINSTALLED_PACKAGES
				);
	for (PackageInfo info : package_list){
		if(info.applicationInfo != null){
			if((info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0){
				//システムイメージにインストールされてるパッケージ
			}else{
				//パッケージ名を出力
				Log.d("test", info.packageName);
			}
		}
	}
}