Показать все установленное приложение на телефоне, но показан только какой-то пакет - PullRequest
0 голосов
/ 03 февраля 2019

Здравствуйте, мне нужно показать все приложения на устройстве в виде списка, теперь он показывает приложения, но не все из них. Я не знаю почему, приложения Google, такие как youtube, chrome, google play, похоже, не отображаютсяСейчас я запускаю приложение на эмуляторе.Вот мой код:

 private List<ApplicationInfo> appList = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    getSupportActionBar().setDisplayShowTitleEnabled(false);


    final ListView myInstalledApp = (ListView) findViewById(R.id.installed_app_list);

    final List<settings.AppList> installedApps = getAllInstalledApps();
    final settings.AppAdapter installedAppAdapter = new settings.AppAdapter(settings.this, installedApps);
    myInstalledApp.setAdapter(installedAppAdapter);
}

private List<AppList> getAllInstalledApps() {

    List<AppList> List = new ArrayList<AppList>();
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);

    for (int i = 0; i < packs.size(); i++) {
        PackageInfo p = packs.get(i);

        if ((isSystemPackage(p) == false)) {
            String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();
            Drawable icon = p.applicationInfo.loadIcon(getPackageManager());
            List.add(new AppList(appName, icon));

        }
    }
    return List;
}

private boolean isSystemPackage(PackageInfo pInfo) {
    return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true : false;
}

public class AppAdapter extends BaseAdapter {

    private LayoutInflater layoutInflater;
    private List<AppList> appInList;

    public AppAdapter(Context context, List<AppList> customizedListView) {
        layoutInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        appInList = customizedListView;
    }
    @Override
    public int getCount() {
        return appInList.size();
    }
    @Override
    public Object getItem(int position) {
        return position;
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder listViewHolder;
        if(convertView == null){
            listViewHolder = new ViewHolder();
            convertView = layoutInflater.inflate(R.layout.app_item_layout, parent, false);

            listViewHolder.appNameText = (TextView)convertView.findViewById(R.id.list_app_name);
            listViewHolder.appIcon = (ImageView)convertView.findViewById(R.id.app_icon);
            convertView.setTag(listViewHolder);
        }
        else{
            listViewHolder = (ViewHolder)convertView.getTag();
        }
        listViewHolder.appNameText.setText(appInList.get(position).getName());
        listViewHolder.appIcon.setImageDrawable(appInList.get(position).getIcon());

        return convertView;
    }
}
static class ViewHolder{
    TextView appNameText;
    ImageView appIcon;
}

public class AppList {

    private String name;
    Drawable icon;

    public AppList(String name, Drawable icon) {
        this.name = name;
        this.icon = icon;
    }

    public String getName() {
        return name;
    }

    public Drawable getIcon() {
        return icon;
    }
}

и вот изображение того, что приложение показывает мне только мои тестовые приложения и некоторый пакет.

показанные приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...