Android - How to get an icon of an app?

后端 未结 2 1279
予麋鹿
予麋鹿 2020-12-17 06:05

I am trying to display a list of task in this way -

Icon | ApplicationName | CheckBox

As i found that no listview adapter supports this so i decided to deve

2条回答
  •  感情败类
    2020-12-17 06:34

    Please check out my solution for getting the list of icon of application

    In this getting the list of ResolveInfo of all application.

    resolveInfo class contain Information that is returned from resolving an intent against an IntentFilter. This partially corresponds to information collected from the AndroidManifest.xml's tags

    This is the way to get the list of icon of application in android, hope this example will be help for you

        import java.util.List;
    
    
    import android.app.ListActivity;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.ResolveInfo;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    
    public class IconListActivity extends ListActivity {
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            loadApps();  
    
        }
    
    
    
        private void loadApps() {
            Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
            mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    
            List mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
    
            ListView listView = getListView();
            listView.setAdapter(new AppsAdapter(this,mApps));
         }
    
        public class AppsAdapter extends BaseAdapter {
            private LayoutInflater inflater;
            private List mApps;
    
            public AppsAdapter(Context context, List mApps) {
                this.inflater = LayoutInflater.from(context);
                this.mApps = mApps;
            }
    
            public View getView(int position, View convertView, ViewGroup parent) {
    
                ViewHendler hendler;
                if (convertView == null) {
                    convertView = inflater.inflate(R.layout.row_view, null);
                    hendler = new ViewHendler();
                    hendler.textLable = (TextView)convertView.findViewById(R.id.textViewLable);
                    hendler.iconImage = (ImageView)convertView.findViewById(R.id.imageViewIcon);
                    convertView.setTag(hendler);
                } else {
                    hendler = (ViewHendler)convertView.getTag();
                }
                ResolveInfo info = this.mApps.get(position);
                hendler.iconImage.setImageDrawable(info.loadIcon(getPackageManager()));
                hendler.textLable.setText(info.loadLabel(getPackageManager()));
    
                return convertView;
    
            }
            class ViewHendler{
                TextView textLable;
                ImageView iconImage;
            }
    
    
            public final int getCount() {
                return mApps.size();
            }
    
            public final Object getItem(int position) {
                return mApps.get(position);
            }
    
            public final long getItemId(int position) {
                return position;
            }
        }
    
    }
    

提交回复
热议问题