Не удается заполнить все мои приложения в списке - PullRequest
0 голосов
/ 11 октября 2018

Итак, я хочу получить все приложения с устройства и поместить их в 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;
    }
}

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете использовать приведенный ниже код для получения списка приложений , установленных на вашем устройстве:

List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);
ArrayList<ApplicationInfo> packages = new ArrayList<>();
for (PackageInfo packageInfo : packageInfoList){
    packages.add(packageInfo.applicationInfo);
}
//Add this packages to your list adapter then
listView.setAdapter(new AppsAdapter(this, (ArrayList<ApplicationInfo>) packages));

Больше от здесь

...