2010. 3. 10. 08:46ㆍ안드로이드 개발
복잡하게 생각할 것 없이 프로세스 목록을 보여주는 shell command 명령인 "ps"를 실행시켜서 프로세스 목록을 받아오면 된다. 문제는 kill 명령은 권한 문제로 인해 사용할 수 없는 것 같으니 다른 대안을 찾아야 할 듯..
try
{
Process ps = Runtime.getRuntime().exec("ps");
byte[] msg = new byte[128];
int len;
String Value = "";
while((len = ps.getInputStream().read(msg)) > 0)
{
Value = Value + new String(msg, 0, len);
}
Toast.makeText(this, Value, Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
}
다음과 같이 ActivityManager를 이용하여 실행 중인 프로세스 정보를 가져올 수도 있다. 리스트에서 특정 프로세스를 선택하면 해당 프로세스의 이름과 pid, uid를 표시해준다.
ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE );
final List<ActivityManager.RunningAppProcessInfo> appList = activityManager.getRunningAppProcesses();
final ArrayAdapter<ActivityManager.RunningAppProcessInfo> adaptedAppList = new ArrayAdapter<ActivityManager.RunningAppProcessInfo>(this,
android.R.layout.simple_list_item_single_choice, appList);
listView = getListView();
listView.setAdapter(adaptedAppList);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
ActivityManager.RunningAppProcessInfo runApp = adaptedAppList.getItem(arg2);
String name = runApp.processName+"<"+runApp.pid+">"+runApp.uid;
Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
}
});