Итак, я хочу получить все приложения с устройства и поместить их в ListView
, но не могу.Я не знаю, если проблема в адаптере или процессе получения приложения
Вот это populateListViewMethod()
:
private void populateListView() {ListView listView = findViewById(R.id.list_view_apps_main);
final PackageManager pm = getPackageManager();
//get a list of installed
apps.List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
Log.d("", "Installed package :" + packageInfo.packageName);
Log.d("", "Source dir : " + packageInfo.sourceDir);
Log.d("", "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
}
listView.setAdapter(new AppsAdapter(this, (ArrayList<ApplicationInfo>) packages));
}
И адаптер:
public class AppsAdapter extends ArrayAdapter<ApplicationInfo>{
private Context mContext;
public AppsAdapter(Activity context, ArrayList<ApplicationInfo> Capps) {
super(context, 0, Capps );
mContext=context;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if(convertView ==null){
convertView =LayoutInflater.from(mContext).
inflate(R.layout.app_list_item,parent,false);
}
final ApplicationInfo applicationInfo =getItem(position);
ImageView imageView = convertView.findViewById(R.id.image_icon_app_list_item);
imageView.setImageDrawable(applicationInfo.loadIcon(mContext.getPackageManager()));
TextView textView =convertView.findViewById(R.id.app_name_list_item);
textView.setText(applicationInfo.name);
Button button =convertView.findViewById(R.id.add_icon_button_list_item);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ShortcutIcon(applicationInfo.name,
applicationInfo.loadIcon(mContext.getPackageManager())
,applicationInfo.packageName);
}
});
return convertView;
}
}