Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo puedo iniciar la pantalla de información de aplicaciones de Android mediante programación?

¿Es posible iniciar la pantalla "información de la aplicación" (es decir, MenuSettingsApplicationsManage Applications → seleccionar cualquier aplicación) desde otra aplicación?

  • Android: aplicación que carga la biblioteca en tiempo de ejecución en Lollipop pero no IceCreamSandwich
  • SetX, setTranslationX, setLeft, LayoutParam.leftMargin, Matrix .. ¿Cuál es la diferencia
  • Contestar una llamada telefónica entrante de mi aplicación
  • Servicio enlazado a BroadcastReceiver
  • Guiones de corredores de mono androide
  • Google Map V2 cómo configurar ZoomToSpan?
  • Establecer el color de fondo del elemento de menú en el botón de desplazamiento en Android
  • Lista blanca de claves de la barra de herramientas de Google Cloud Messaging direcciones IP con escala automática
  • 6 Solutions collect form web for “¿Cómo puedo iniciar la pantalla de información de aplicaciones de Android mediante programación?”

    En 2.2 y siguientes, no hay ninguna API pública a la que pueda acceder. Pero todavía puede iniciar la actividad InstalledAppDetails como lo hace ManageApplications . Ver aquí

      // utility method used to start sub activity private void startApplicationDetailsActivity() { // Create intent to start new activity Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(this, InstalledAppDetails.class); intent.putExtra(APP_PKG_NAME, mCurrentPkgName); // start new activity to display extended information startActivityForResult(intent, INSTALLED_APP_DETAILS); } 

    Conclusión : se puede iniciar la "aplicación de información" de la pantalla como este escribí:

     private static final String SCHEME = "package"; private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName"; private static final String APP_PKG_NAME_22 = "pkg"; private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings"; private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails"; public static void showInstalledAppDetails(Context context, String packageName) { Intent intent = new Intent(); final int apiLevel = Build.VERSION.SDK_INT; if (apiLevel >= 9) { // above 2.3 intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts(SCHEME, packageName, null); intent.setData(uri); } else { // below 2.3 final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22 : APP_PKG_NAME_21); intent.setAction(Intent.ACTION_VIEW); intent.setClassName(APP_DETAILS_PACKAGE_NAME, APP_DETAILS_CLASS_NAME); intent.putExtra(appPkgName, packageName); } context.startActivity(intent); } 

    Desde API Level 9 (Android 2.3) puede iniciar una Intent con android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS . Así:

     packageName = "your.package.name.here" try { //Open the specific App Info page: Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); startActivity(intent); } catch ( ActivityNotFoundException e ) { //e.printStackTrace(); //Open the generic Apps page: Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS); startActivity(intent); } 

    Vieja pregunta, respuesta mejorada:

     /** * <p>Intent to show an applications details page in (Settings) com.android.settings</p> * * @param context The context associated to the application * @param packageName The package name of the application * @return the intent to open the application info screen. */ public static Intent newAppDetailsIntent(Context context, String packageName) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setData(Uri.parse("package:" + packageName)); return intent; } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.FROYO) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra("pkg", packageName); return intent; } Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra("com.android.settings.ApplicationPkgName", packageName); return intent; } 

    En Android 2.3, puede usar startActivity() en un Intent ACTION_APPLICATION_DETAILS_SETTINGS , con un Uri adecuado, para que aparezca la pantalla "administrar" de la aplicación. Sin embargo, esto es nuevo para Android 2.3 – No soy consciente de una manera de hacer eso en versiones anteriores de Android.

     startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_SETTINGS)); 

    Le llevará a la configuración / lista de aplicaciones. Si quieres abrir una aplicación específica, creo que en 2.2 y abajo no hay manera, así que tendrías que ir a una manera (no necesariamente sugerida, porque inoficial):

     final Intent i = new Intent("android.intent.action.VIEW"); i.setComponent(new ComponentName("com.android.settings","com.android.settings.InstalledAppDetails")); i.putExtra(...); // need to figure out the correct extra, probably app package name startActivity(i); 

    Pero tenga en cuenta que esto no se recomienda porque no es una API / intención oficial (filtro) y, por lo tanto, podría cambiar en el futuro.

    Utilicé la solución Paolo para abrir la configuración de detalles de la aplicación en SDK 23+ cuando el usuario rechazó la solicitud de permiso en el pasado y elegir la opción "No preguntar de nuevo" en el diálogo del sistema de solicitud de permisos.

    Pero en este caso usé el método getPackageName() directamente.

     Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.