Ocultar icono de la aplicación

Estoy haciendo una aplicación de Android. Quiero ocultar el icono de la aplicación en el emulador y quiero iniciar mi aplicación pulsando algunos números, por ejemplo 456 #. ¿Hay alguna forma de hacer esto?

Para ocultar el icono de la aplicación del programa de lanzamiento mediante programación, puede hacerlo

PackageManager packageManager = context.getPackageManager(); ComponentName componentName = new ComponentName(context, LauncherActivity.class); packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

Para iniciar la aplicación pulsando el número primero agregue el permiso siguiente en el archivo mainfest

  <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 

Luego registre el receptor

 <receiver android:name=".LaunchAppViaDialReceiver"> <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> </intent-filter> </receiver> 

A continuación, cree una clase de receptor

  public class LaunchAppViaDialReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Bundle bundle = intent.getExtras(); if (null == bundle) return; String phoneNubmer = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); //here change the number to your desired number if (phoneNubmer.equals("12345")) { setResultData(null); Gaurdian.changeStealthMode(context, PackageManager.COMPONENT_ENABLED_STATE_ENABLED); Intent appIntent = new Intent(context, LauncherActivity.class); appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(appIntent); } } 

Si quieres ocultar el icono de la aplicación, es una buena idea mostrar el icono primero y dejar que el usuario sepa cómo iniciar la aplicación una vez que el icono desaparezca. Primero cree un alias de actividad en el manifiesto y mueva su filtro de intenciones allí. De esta manera puede desactivar el icono sin deshabilitar la actividad.

 <activity android:name=".MainActivity" android:label="@string/app_name" > </activity> <activity-alias android:name=".Launcher" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> 

Obtenga el nombre del componente del alias del lanzador usando el nombre del paquete:

 private static final ComponentName LAUNCHER_COMPONENT_NAME = new ComponentName( "your.package.name", "your.package.name.Launcher"); 

Puedes comprobar si ya está deshabilitado …

 private boolean isLauncherIconVisible() { int enabledSetting = getPackageManager() .getComponentEnabledSetting(LAUNCHER_COMPONENT_NAME); return enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; } 

… y deshabilitarlo cuando sea apropiado después de dar la información del usuario:

 private void hideLauncherIcon() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Important!"); builder.setMessage("To launch the app again, dial phone number 12345."); 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(); } 

Para iniciar desde el marcador crear un receptor de difusión:

 public class LaunchViaDialReceiver extends BroadcastReceiver { private static final String LAUNCHER_NUMBER = "12345"; @Override public void onReceive(Context context, Intent intent) { String phoneNubmer = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); if (LAUNCHER_NUMBER.equals(phoneNubmer)) { setResultData(null); Intent appIntent = new Intent(context, MainActivity.class); appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(appIntent); } } } 

Añadirlo al manifiesto:

 <receiver android:name=".LaunchViaDialReceiver" > <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> 

Y agrega el permiso al manifiesto:

 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 

La respuesta a la primera parte de su pregunta, pruebe este código:

 PackageManager pm = getApplicationContext().getPackageManager(); pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

Su aplicación no será visible, pero el usuario todavía puede encontrarla en la Configuración >> Aplicaciones >> Administrar aplicación

Esta respuesta también puede ser útil para usted.

Por favor, no olvide publicar su respuesta aquí, si ya ha logrado la funcionalidad (presionando un número y abriendo nuestra aplicación).

Tenga en cuenta que la solución:

 PackageManager pm = getApplicationContext().getPackageManager(); pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

Hará que la aplicación NO se pueda actualizar desde Google Play, ya que el sistema operativo no encontrará el paquete después de desactivar este componente y no podrá volver a instalarlo, a menos que la aplicación no esté desinstalada (lo cual no es un comportamiento fácil de usar)

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hideapplication(); } private void hideapplication() { // TODO Auto-generated method stub PackageManager pm = getApplicationContext().getPackageManager(); pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.