インストール済パッケージを取得するでは、端末にインストールされているアプリケーションのパッケージ名を取得し、リストにしています。
今回は、取得したパッケージ名以外に、アプリケーションの名前とアイコンを取得し、それをリストにする方法を解説します。
さらに最後に、パッケージ名を利用して、選択したアプリケーションをアンインストールしてみます。
ポイントは、以下の4つです。
- ・PackageManagerからインストール済みアプリケーションの情報を取得する。
- ・ApplicationInfo#loadLabel(PackageManager pm)メソッドでアプリケーション名取得
- ・PackageManager#getApplicationIcon(String packageName)メソッドでアイコンを取得
- ・Intentの引数に、Intent.ACTION_DELETEを指定し、アンインストール画面に遷移する。
なお今回、リストの作成の際に以下の記事で作成したサンプルを利用していますので参考にしてください。
それでは続きをどうぞ
アプリケーション名を取得する
まず、アプリケーション名を取得します。アプリケーション名の取得は、ApplicationInfoクラスのloadLabel(PackageManager pm)メソッドで行います。
以下のソースコードを見て下さい。
private CustomData itemData; (...省略...) //PackageManagerのオブジェクトを取得 PackageManager pm = this.getPackageManager(); //インストール済パッケージ情報を取得する final List appInfoList = pm.getInstalledApplications(BIND_AUTO_CREATE); for(ApplicationInfo ai : appInfoList){ itemData = new CustomData(); if(ai.loadLabel(pm).toString()!=null){ //アプリ名取得 itemData.setTextData(ai.loadLabel(pm).toString()); }else{ itemData.setTextData("NoName"); } }
12行目で、アプリケーション名を取得し、String型に変換しています。
なお、取得したアプリケーション名をセットしているitemDataは「 リストビューをカスタマイズする」で登場した CustomDataクラスのインスタンスです。
アプリケーションのアイコンを取得する
次に、アプリケーションのアイコンを取得します。アイコンの取得は、PackageManagerクラスのgetApplicationIcon(String packageName)メソッドにて行います。以下のソースコードを見て下さい。
private Drawable icon = null; // データの作成 List objects = new ArrayList(); (...省略...) for(ApplicationInfo ai : appInfoList){ itemData = new CustomData(); if(ai.loadLabel(pm).toString()!=null){ //アプリ名取得 (...省略...) } try { //アプリのアイコン取得 icon = pm.getApplicationIcon(ai.packageName); } catch (NameNotFoundException e) { e.printStackTrace(); } itemData.setImageData(icon); objects.add(itemData); customAdapater = new CustomAdapter(this, 0, objects); listView.setAdapter(customAdapater); }
14行目で、パッケージ名を引数にしてアイコンを取得しています。取得したアイコンは、アプリケーション名同様itemDataにセットしておきます。
なお、取得したアイコンはDrawable型ですので、それに合わせてCustomDataおよびCustomAdapterクラスの中身も多少変更する必要があります(詳しくはサンプルコードをご覧下さい)。
最後に、取得したアプリケーション名およびアイコンを、ListViewにセットして完了です(「 リストビューをカスタマイズする」参照)。
選択したアプリケーションをアンインストールする
選択したアプリケーションをアンインストールします。ポイントは、URIにリストから選択されたアプリケーションのパッケージ名を引数にし、IntentにACTION_DELETEとURIを指定します。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<!--?--> parent, View view, int position, long id) { ApplicationInfo ai = appInfoList.get(position); Uri uri=Uri.fromParts("package",ai.packageName,null); Intent intent=new Intent(Intent.ACTION_DELETE,uri); startActivity(intent); } });
4行目でリストで選択されたアプリケーションの情報を取得、5行目でアプリケーションのパッケージ名を引数にURIを作成、6行目でIntentを生成しています。Intent生成の際に、引数にアプリケーションのURIおよびアクションのACTION_DELETEを指定することで、アプリケーションのアンインストール画面に遷移させることが可能です。
以上で、簡単なアンインストーラの完成です。