Android скрывает / скрывает значок приложения программно

Я использовал ниже код для скрытия иконки приложения программно

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

Теперь я хочу сделать значок видимым программным

Solutions Collecting From Web of "Android скрывает / скрывает значок приложения программно"

Скрыть значок приложения, используя следующий код:

 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); 

Вот как вернуть значок приложения.

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

Чтобы скрыть значок, используйте это:

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

И для отображения значка:

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

ВАЖНО: Как-то сложно, если вам нужно что-то сделать с основной деятельностью в приложении, когда оно скрыто. Вы столкнетесь с ActivityNotFoundException . Чтобы он работал, вы должны отображать значок, прежде чем делать что-либо, в свою основную деятельность и спрятать его снова после того, как вы закончите.
Простые шаги: 1-звонок, полученный здесь
Иконка 2-unhide
3-запуск основной деятельности
4-делать свои вещи на основной деятельности
5-скрыть значок снова

Просто используйте следующий код.

  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); 

Обратите внимание, что значок может не исчезнуть до следующей перезагрузки.

Загрузите исходный код отсюда ( скрыть и отобразить значок приложения в программном обеспечении Android )

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; } } 

Благодаря!