c++Builder
http://edn.embarcadero.com/article/44700
// include に以下を追加します
#include <Androidapi.Helpers.hpp>
#include <Androidapi.JNI.JavaTypes.hpp>
#include <Androidapi.JNI.GraphicsContentViewText.hpp>
#include <Androidapi.JNIBridge.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
_di_JPackageManager PM; // PackageManager
_di_JList PL; // 取得したパッケージ情報を格納するためのリスト
_di_JApplicationInfo AI; // ApplicationInfo
_di_JIterator iter;
// PackageManagerを取得する
PM = TAndroidHelper::Activity->getPackageManager();
// JListにパッケージ情報を格納する
PL = PM->getInstalledApplications(TJContext::JavaClass->BIND_AUTO_CREATE);
iter = PL->iterator();
// 初期化
int i=0;
ListBox1->Items->Clear();
while (iter->hasNext()) {
// リストに格納されているパッケージ情報を1件取り出す
AI = TJApplicationInfo::Wrap(_di_ILocalObject(PL->get(i))->GetObjectID());
// ListBoxの itemsに loadLabelで取得したアプリケーション名をセットする
ListBox1->Items->Add(JStringToString(AI->loadLabel(PM)->toString()));
// ListBoxの itemsに パッケージ名をセットする // bachelor追記
ListBox1->Items->Add(JStringToString(AI->packageName->toString()); // bachelor追記
//次の項目へ
i++;
iter->next();
}
}
Delphi
http://edn.embarcadero.com/article/44698
// usesに以下を追加します
// Androidapi.JNI.GraphicsContentViewText
// Androidapi.JNI.JavaTypes
// Androidapi.Helpers
// Androidapi.JNIBridge
var
PM: JPackageManager; // PackageManager
PL: JLlist; // 取得したパッケージ情報を格納するためのリスト
AI: JApplicationInfo; // ApplicationInfo
iter: JIterator;
i: Integer;
begin
// PackageManagerを取得する
PM := TAndroidHelper.Activity.getPackageManager;
// JListにパッケージ情報を格納する
PL: PM.getInstalledApplications(TJContext.JavaClass.BIND_AUTO_CREATE);
iter := PL.Iterator;
// 初期化
i := 0;
ListBox1.Items.Clear;
while iter.hasNext do begin
// リストに格納されているパッケージ情報を1件取り出す
AI := TJApplicationInfo.Wrap((PL.get(i) as ILocalObject).GetObjectID);
// ListBoxの itemsに loadLabelで取得したアプリケーション名をセットする
ListBox1.Items.Add(JStringtoString(AI.loadLabel(PM).toString));
// 次の項目へ
i := i+1;
iter.next;
end;
end;
Android
http://qiita.com/shota_low/items/b2ee7fb1fd353f69d...
MainActivity.java
// import部分は略
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 端末にインストール済のアプリケーション一覧情報を取得
final PackageManager pm = getPackageManager();
final int flags = PackageManager.GET_UNINSTALLED_PACKAGES | PackageManager.GET_DISABLED_COMPONENTS;
final List<ApplicationInfo> installedAppList = pm.getInstalledApplications(flags);
// リストに一覧データを格納する
final List<AppData> dataList = new ArrayList<AppData>();
for (ApplicationInfo app : installedAppList) {
AppData data = new AppData();
data.label = app.loadLabel(pm).toString();
data.icon = app.loadIcon(pm);
data.pname = app.packageName;
dataList.add(data);
}
// リストビューにアプリケーションの一覧を表示する
final ListView listView = new ListView(this);
listView.setAdapter(new AppListAdapter(this, dataList));
//クリック処理
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ApplicationInfo item = installedAppList.get(position);
PackageManager pManager = getPackageManager();
Intent intent = pManager.getLaunchIntentForPackage(item.packageName);
startActivity(intent);
}
});
setContentView(listView);
}
// アプリケーションデータ格納クラス
private static class AppData {
String label;
Drawable icon;
String pname;
}
// アプリケーションのラベルとアイコンを表示するためのアダプタークラス
private static class AppListAdapter extends ArrayAdapter<AppData> {
private final LayoutInflater mInflater;
public AppListAdapter(Context context, List<AppData> dataList) {
super(context, R.layout.activity_main);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
addAll(dataList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.activity_main, parent, false);
holder.textLabel = (TextView) convertView.findViewById(R.id.label);
holder.imageIcon = (ImageView) convertView.findViewById(R.id.icon);
holder.packageName = (TextView) convertView.findViewById(R.id.pname);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 表示データを取得
final AppData data = getItem(position);
// ラベルとアイコンをリストビューに設定
holder.textLabel.setText(data.label);
holder.imageIcon.setImageDrawable(data.icon);
holder.packageName.setText(data.pname);
return convertView;
}
}
// ビューホルダー
private static class ViewHolder {
TextView textLabel;
ImageView imageIcon;
TextView packageName;
}
//あとは略
}