una que play permisos para movil instalar hay google example como aplicaciones aplicacion administrar administrador administrado administra android

que - ¿Cómo instalar aplicaciones en Android y no tener aplicaciones de sistema?



no hay aplicaciones para instalar ya que el administrador (4)

Quiero obtener todas las aplicaciones que aparecen en la pantalla del menú. Pero, ahora solo consigo que el usuario instale las aplicaciones o todas las aplicaciones (incluida la aplicación del sistema).

Mi código actual es:

final PackageManager pm = getActivity().getPackageManager(); List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_META_DATA); ArrayList<PackageInfo> aux = new ArrayList<PackageInfo>(); for (int i = 0; i < apps.size(); i++) { if (apps.get(i).versionName != null && ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 1)) { aux.add(apps.get(i)); }

Con este código, puedo hacer que el usuario instale las aplicaciones y, si comento la instrucción "si", obtendré las aplicaciones del sistema.

Por lo tanto, quiero que el usuario instale aplicaciones y aplicaciones como contactos, galería, etc.

ACTUALIZAR:

final PackageManager pm = getActivity().getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> apps = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA);


El siguiente código le dará todas las aplicaciones del sistema relacionadas con el sistema operativo. Esto no incluirá aplicaciones como YouTube, Gmail, etc.

try { ApplicationInfo ai = getPackageManager().getApplicationInfo(item.packageName, 0); if ((ai.flags & ApplicationInfo.FLAG_SYSTEM ) != 0) { if((ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP ) == 0) { appItem.setSystemApp(true); Mylog.v("System Apps " + appItem.getAppName()); } } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); }


Yo tenía el mismo requisito. En última instancia, he añadido otra condición para filtrar hacia abajo la lista de aplicaciones. Acabo de comprobar si la aplicación tiene "intención del lanzador".

Entonces, el código resultante se parece a ...

PackageManager pm = getPackageManager(); List<ApplicationInfo> apps = pm.getInstalledApplications(PackageManager.GET_GIDS); for (ApplicationInfo app : apps) { if(pm.getLaunchIntentForPackage(app.packageName) != null) { // apps with launcher intent if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1) { // updated system apps } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) { // system apps } else { // user installed apps } appsList.add(app); } }


final PackageManager pm = getActivity().getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> apps = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA);


final PackageManager pm = getPackageManager(); List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

Utilizando PackageInfo:

private boolean isSystemPackage(PackageInfo packageInfo) { return ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); }

Utilizando ResolveInfo:

private boolean isSystemPackage(ResolveInfo resolveInfo) { return ((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); }

Utilizando ApplicationInfo:

private boolean isSystemPackage(ApplicationInfo applicationInfo) { return ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); }

Esto filtra el paquete del sistema. Vea this pregunta. Créditos: Nelson Ramírez y Kenneth Evans.