C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

インテント(Intent)を利用することで, インストールされている通常のアプリケーションの一覧を取得することができる.



インストール済みのアプリ一覧を取得

  • AppList.java
    • getPackageManagerメソッドで, PackageManagerのインスタンスを取得する.
    • インテントのインスタンスを生成する. このとき, Intent.ACTION_MAINを指定する.
    • Intent.CATEGORY_LAUNCHERを指定する.
    • PackageManager#queryIntentActivitiesメソッドで, アプリ情報(ResolveInfo)を取得する.
    • ResolveInfo#loadLabelメソッドで, アプリ情報からアプリ名を取得し, リストに追加する.
package com.moonlight_aska.android.applist;

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class AppList extends ListActivity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ArrayList<String> appList = new ArrayList<String>();
    // アプリ情報を取得
    PackageManager packageManager = getPackageManager();
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> appInfo = packageManager.queryIntentActivities(intent, 0);
    if(appInfo != null) {
      for(ResolveInfo app : appInfo) {
        // アプリ名をリストに追加
        appList.add( (String)app.loadLabel(packageManager));
      }
    }
    // リスト表示
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, appList);
    setListAdapter(adapter);
  }
}



このページへのコメント

i have a question if i want to add the Icon about the program how can i do ? THX

0
Posted by YAO 2011年07月28日(木) 19:11:36 返信

当方でも試してみましたが, 私の環境ではresolveInfo.loadLabel(getPackageManager())とresolveInfo.activityInfo.loadLabel(getPackageManager())で取得できるアプリ名は同じように見えます. 結果が異なる場合の具体例があれば教えてください.

0
Posted by aska 2011年05月08日(日) 15:09:30 返信

私のアプリでは、アプリ名をresolveInfo.activityInfo.loadLabel(context.getPackageManager())で取得しています。少し結果が違います。

0
Posted by kato 2011年05月05日(木) 23:04:35 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます