transferir studio smart para jvc fotos datos contactos conectar celular apps app aplicacion android

studio - ¿Cómo puedo iniciar la pantalla de información de la aplicación Android programáticamente?



transferir datos de android a iphone (6)

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


Desde el Nivel 9 de la API (Android 2.3) puede iniciar una Intención 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); }


En 2.2 y siguientes, no hay API públicas a las que pueda acceder. Pero aún puede iniciar la actividad InstalledAppDetails tal como lo hace ManageApplications . ver here

// 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 : puede iniciar la pantalla de "información de la aplicación" como esta que 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); }


En Android 2.3, puede utilizar startActivity() en un android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS Intent , con un Uri apropiado, para que aparezca la pantalla "administrar" de su aplicación. Sin embargo, esto es nuevo en Android 2.3. No conozco una manera de hacerlo en versiones anteriores de Android.


Pregunta anterior, 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; }


Utilicé la solución de Paolo para abrir la Configuración de detalles de la aplicación en el SDK 23+ cuando el usuario rechazó la solicitud de permiso en el pasado y elige 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);


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

lo llevará a la lista de configuraciones / aplicaciones. Si quiere abrir una aplicación específica, creo que en 2.2 y debajo no hay forma, por lo que tendría que ir de una manera (no necesariamente sugerida, porque no oficial):

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 (filtro) oficial y, por lo tanto, podría cambiar en el futuro.