¿Cómo puedo obtener los iconos de las aplicaciones en una lista?
Estoy tratando de hacer una lista con chechboxes para las aplicaciones instaladas en el teléfono Android. Puse los iconos en un ArrayList como sigue
packs = new ArrayList<String>(); // a list of all the packages names = new ArrayList<String>(); // a list of all the apps names icons = new ArrayList<Drawable>(); // a list of all apps names List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packageInfo : packages) { if ((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM) !=1){ // 'if' is to remove all system applications packs.add((String) packageInfo.packageName); names.add((String) packageManager.getApplicationLabel(packageInfo)); icons.add((Drawable) packageManager.getApplicationIcon(packageInfo));
Entonces para ponerlo en el listview, yo uso esto.
- Cómo hacer la animación de marco suave en Android?
- Cómo obtener una imagen recortada de ImageView
- Cómo colocar una imagen en la parte superior de otra imagen en android
- Texto de Android alrededor de error de imagen
- Picasso "Cambiar tamaño y centerCrop" o ImageView "centerCrop"?
icon = (ImageView) row.findViewById(R.id.appIcon); icon.setImageDrawable(icons.get(position));
Sin embargo, la fuerza se cierra y El problema está en icon.setImageDrawable (icons.get (position)); ¿Cómo puedo resolverlo?
- Imagen de estiramiento en la imagen para ajustar la pantalla en xml
- Android ScrollView agrega un relleno adicional en la parte superior e inferior de la vista de imagen infantil
- Cómo cambiar el tamaño del marcador de imagen de ImageView con picasso
- Cómo llamar a los colores de los recursos de forma dinámica en Android?
- GridView con zoom
- Cómo configurar el oyente de onclick para ver imágenes animadas
- El efecto Ripple no va por encima de ImageView
- Cargar imagen en ImageView de la URL almacenada en JSONString en Android
Por favor, echa un vistazo a mi solución para obtener la lista de icono de la aplicación
En esta obtención de la lista de ResolveInfo
de toda la aplicación
Esta es la forma de obtener la lista de icono de aplicación en android, espero que este ejemplo sea útil para usted.
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<ResolveInfo> mApps = getPackageManager().queryIntentActivities(mainIntent, 0); ListView listView = getListView(); listView.setAdapter(new AppsAdapter(this,mApps)); } public class AppsAdapter extends BaseAdapter { private LayoutInflater inflater; private List<ResolveInfo> mApps; public AppsAdapter(Context context, List<ResolveInfo> 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; } } }
- No puedo añadir firebase a la aplicación de Android
- ClassNotFoundException: No encontró la clase "android.support.design.widget.AppBarLayout"