Android ocultar / mostrar el icono de la aplicación mediante programación

I había utilizado el código a continuación para ocultar icono de la aplicación mediante programación

try{ PackageManager p = getPackageManager(); p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); }catch (Exception e) { e.printStackTrace(); } 

Ahora quiero hacer el icono visible mediante programación

Ocultar el icono de la aplicación utilizando el código siguiente:

 PackageManager p = getPackageManager(); ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" /> p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

A continuación, se muestra cómo devolver el icono de la aplicación.

 PackageManager p = getPackageManager(); ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

Para ocultar el icono use esto:

 PackageManager p = getPackageManager(); ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

Y para mostrar el icono:

 PackageManager p = getPackageManager(); ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

IMPORTANTE: Es algo complicado si necesita hacer algo con la actividad principal en su aplicación cuando está oculta. Se enfrentará a una ActivityNotFoundException . Para que funcione, debe mostrar el icono antes de hacer cualquier cosa a su actividad principal y ocultarlo de nuevo después de que haya terminado.
Sencillos pasos: 1 llamada recibida aquí
2-unhide icono
Actividad principal de 3-launch
4-haz tus cosas en la actividad principal
5-ocultar icono de nuevo

Sólo use el siguiente código.

  PackageManager p = getPackageManager(); ComponentName componentName = new ComponentName("com.example.removeicon","com.example.removeicon.LauncherActivity"); p.setComponentEnabledSetting(componentName , PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

Tenga en cuenta que el icono puede no desaparecer hasta el siguiente reinicio.

Descargar código fuente desde aquí ( Ocultar y mostrar el icono de la aplicación en android mediante programación )

MainActivity.java:

 package com.deepshikha.hideappicon; import android.Manifest; import android.app.ProgressDialog; import android.content.ComponentName; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Handler; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button btn_hide; private static final ComponentName LAUNCHER_COMPONENT_NAME = new ComponentName( "com.deepshikha.hideappicon", "com.deepshikha.hideappicon.Launcher"); public static int REQUEST_PERMISSIONS = 1; boolean boolean_permission; ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); fn_permission(); listener(); } private void init() { btn_hide = (Button) findViewById(R.id.btn_hide); progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("Alert"); progressDialog.setMessage("Please wait"); if (isLauncherIconVisible()) { btn_hide.setText("Hide"); } else { btn_hide.setText("Unhide"); } } private void listener() { btn_hide.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_hide: progressDialog.show(); new Handler().postDelayed(new Runnable() { @Override public void run() { progressDialog.dismiss(); if (isLauncherIconVisible()) { btn_hide.setText("Hide"); } else { btn_hide.setText("Unhide"); } } }, 10000); if (boolean_permission) { if (isLauncherIconVisible()) { fn_hideicon(); } else { fn_unhide(); } } else { Toast.makeText(getApplicationContext(), "Please allow the permission", Toast.LENGTH_LONG).show(); } break; } } private boolean isLauncherIconVisible() { int enabledSetting = getPackageManager().getComponentEnabledSetting(LAUNCHER_COMPONENT_NAME); return enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; } private void fn_hideicon() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Important!"); builder.setMessage("To launch the app again, dial phone number 1234567890"); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { getPackageManager().setComponentEnabledSetting(LAUNCHER_COMPONENT_NAME, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } }); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.show(); } private void fn_unhide() { PackageManager p = getPackageManager(); ComponentName componentName = new ComponentName(this, com.deepshikha.hideappicon.MainActivity.class); p.setComponentEnabledSetting(LAUNCHER_COMPONENT_NAME, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); } private void fn_permission() { if ((ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.PROCESS_OUTGOING_CALLS) != PackageManager.PERMISSION_GRANTED) || (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.PROCESS_OUTGOING_CALLS) != PackageManager.PERMISSION_GRANTED)) { if ((ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, android.Manifest.permission.PROCESS_OUTGOING_CALLS))) { } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.PROCESS_OUTGOING_CALLS}, REQUEST_PERMISSIONS); } if ((ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.PROCESS_OUTGOING_CALLS))) { } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.PROCESS_OUTGOING_CALLS}, REQUEST_PERMISSIONS); } } else { boolean_permission = true; } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_PERMISSIONS) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { boolean_permission = true; } else { Toast.makeText(getApplicationContext(), "Please allow the permission", Toast.LENGTH_LONG).show(); } } } } 

LaunchAppReceiver.java:

 package com.deepshikha.hideappicon; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; /** * Created by deepshikha on 9/6/17. */ public class LaunchAppReceiver extends BroadcastReceiver { String LAUNCHER_NUMBER = "1234567890"; private static final ComponentName LAUNCHER_COMPONENT_NAME = new ComponentName( "com.deepshikha.hideappicon", "com.deepshikha.hideappicon.Launcher"); @Override public void onReceive(Context context, Intent intent) { String phoneNubmer = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); if (LAUNCHER_NUMBER.equals(phoneNubmer)) { setResultData(null); if (isLauncherIconVisible(context)) { } else { Intent appIntent = new Intent(context, MainActivity.class); appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(appIntent); } } } private boolean isLauncherIconVisible(Context context) { int enabledSetting = context.getPackageManager().getComponentEnabledSetting(LAUNCHER_COMPONENT_NAME); return enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; } } 

¡Gracias!

  • Cómo deshabilitar mediante programación aplicaciones sin root?
  • Cómo averiguar si una llamada de Skype está actualmente activa en Android
  • Obtener minSdkVersion y targetSdkVersion del archivo apk
  • Cambiar información de la aplicación de la aplicación del gestor de paquetes en android
  • Quitar actividad como iniciador predeterminado
  • ¿Es persistente PackageManager.getComponentEnabledSettings () entre arranques en frío?
  • Cómo comprobar si la instalación es de la tienda de aplicaciones de Samsung
  • Resolver "Administrador de paquetes ha muerto" RuntimeException
  • Android: Cómo obtener una lista de las actividades instaladas, tal y como aparecen en el lanzador, sin duplicados
  • Cambiar completamente el nombre del paquete, incluido el dominio de la empresa
  • Manera de obtener el nombre de etiqueta localizado de PackageManager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.