Twitter のように端末にインストールしているアプリの一覧を取得する

スポンサーリンク

Twitterが.

Twitterが、公式アプリでユーザーの端末内のアプリ一覧情報を収集する「アプリリスト」を次期アップデートで有効にする。

Twitterヘルプセンター___Twitterのアプリリストとは

Twitter、端末にインストールされたアプリの一覧収集機能を追加 - ITmedia ニュース

インストールしているアプリ情報を取得するのにパーミッションは要らない.

// アイコンから起動できるアプリのみ取得
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager pm = context.getPackageManager();
List<ResolveInfo> packs = pm.queryIntentActivities(intent, 0);
ResolveInfo info;
int count_packs = packs.size();
for (int i = 0; i < count_packs; i++) {
  info = packs.get(i);
  ActivityInfo activityInfo = info.activityInfo;
  String label = activityInfo.applicationInfo.loadLabel(pm).toString();
  String packageName = activityInfo.packageName;
  String icon = "android.resource://" + packageName + "/" + activityInfo.applicationInfo.icon;
  String description = (String) p.applicationInfo.loadDescription(pm);
  String versionName = p.versionName;
  String versionCode = ((int)p.versionCode) + "";

  Log.d("FetchInstalledApps", label + " " + packageName + " " + icon);
}

Intent.CATEGORY_LAUCHER を変えたりしながらいろんな条件で取得できる.

肝は「ActivityInfo」.

ActivityInfo | Android Developers

前述, Twitter は以下のようにアナウンスしている.

情報をTwitterに提供したくない場合は設定で無効にする必要がある。

お行儀の良い大手Twitterだからこんなに丁寧だけど.

すでに, 他のアプリで抜かれててもおかしくない, ようにも思ったり...

あなたのAndroidの個人情報がアプリ開発者によって抜き取り可能かをチェックする方法

Twitterヘルプセンター | Twitterのアプリリストとは