getLaunchIntentForPackegeを使う
- ListViewでインストール済みのアプリを一覧表示
- ListView#setOnItemClickListenerをセットしてアプリを起動。
Intent intent = getPackageManager().getLaunchIntentForPackage(String packageName);
startActivity(intent);
package com.efolab.listofinstalled;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
public class Main extends Activity {
Called when the activity is first created.
Context context;
LinearLayout layout;
ListView lv;
ArrayList<Map<String,String>> collection;
List<ApplicationInfo> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TODO
context = getApplicationContext();
layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
lv = new ListView(context);
lv.setBackgroundColor(Color.BLACK);
layout.addView(lv);
list = getInstalledPackageList();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1);
for(int i=0;i<list.size();i++){
adapter.add(list.get(i).packageName);
}
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
try{
String packageNm = list.get(position).packageName;
Intent intent = getPackageManager().getLaunchIntentForPackage(packageNm);
startActivity(intent);
}catch(Exception e){
Toast.makeText(context, "起動できませんでした", Toast.LENGTH_SHORT).show();
}
}
});
}
private List<ApplicationInfo> getInstalledPackageList() {
PackageManager pm = getPackageManager();
List<ApplicationInfo> list = pm
.getInstalledApplications(PackageManager.GET_META_DATA);
return list;
}
}