장치에 설치된 모든 응용 프로그램의 이름을 listview에 표시하는 매우 간단한 응용 프로그램을 작성하려고합니다. Google의 ListView 튜토리얼을 기본으로 사용하고 있습니다.문제점 설치된 모든 응용 프로그램의 ListView 표시 및 OnItemClickListener 구현
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
final PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
final ArrayList<ResolveInfo> list =
(ArrayList<ResolveInfo>) pm.queryIntentActivities(intent,
PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo : list)
{
Log.i(TAG, ": Installed Applications " + rInfo.activityInfo.
applicationInfo.loadLabel(pm).toString());
}
final ArrayAdapter<ResolveInfo> adapter =
new ArrayAdapter<ResolveInfo>(this, R.layout.list_item, list)
{
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
convertView = LayoutInflater.from(parent.getContext()).
inflate(R.layout.list_item, parent, false);
final String text = list.get(position).activityInfo.
applicationInfo.loadLabel(pm).toString();
((TextView)convertView.findViewById(R.id.text)).setText(text);
final Drawable drawable = list.get(position).activityInfo.applicationInfo.loadIcon(pm);
((ImageView)convertView.findViewById(R.id.image)).setImageDrawable(drawable);
return convertView;
}
};
setListAdapter(adapter);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// On Item Click Activity
// This is where I want to send the Package Name of the app selected to be passed to a method.
}
});
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/image"
android:layout_width="50dp" android:layout_height="50dp" />
<TextView android:id="@+id/text"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="10dp" android:textSize="16sp" />
</LinearLayout>
UPDATE :
여기 내 코드는 내가 지금하는 방법에 선택한 앱의 패키지 이름을 통과하는 OnItemClickListener를 사용해야합니다. 목록에 제대로 활동의 이름을 표시하려면
발생한 예외를 찾으려면 LogCat을 확인하십시오. 그 질문에 대답하지 않으면 여기에 게시하십시오. – kcoppock
logcat에서 오류를 확인하고 여기에 표시 할 수 있습니다. – Lavanya
이 유일한 힘은 에뮬레이터에서 닫히고 실제 장치에서는 정상적으로 작동하는 것으로 나타났습니다. 불행히도 패키지 정보는 다음과 같이 표시됩니다 : ResolveInfo {4053e448 com.alphonso.pulse.NewsRack p = 0 o = 0 m = 0x108000} 더 인간이 읽을 수있게 만드는 방법에 대한 아이디어가 있습니까? –