Что ж, другой обходной путь - создание ярлыка для главного экрана, который запускает ту же активность, что и панель запуска.При этом ваш значок запуска в ящике будет актуальным, но на главном экране у вас будет другой значок.Вы также можете изучить идею создания ярлыка для других приложений, если вам известна информация о пакете.
Ref:
Для получения информации о пакете здесь приведены doc .
PackageManager pkgMgr = getPackageManager();
Ниже приведен фрагмент кода (для иллюстрации):
// Setting the intent class ActivityClassToLaunch you need to try PackageManager
Intent i = new Intent(activity, ActivityClass.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
Intent result = new Intent();
result.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i);
result.putExtra(Intent.EXTRA_SHORTCUT_NAME, activity.getString(R.string.app_name));
ShortcutIconResource iconResource = null;
iconResource = ShortcutIconResource.fromContext(activity, R.drawable.new_app_icon);
result.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
result.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
activity.sendBroadcast(result);
Если вы просто хотите, чтобы пользователь изменил значок приложения, почему бы вам не загрузитьзначок с SD-карты.И значок, который вы отправляете с вашим пакетом, будет там, если пользователь не указал значок.
Вот фрагмент кода, который может вам помочь.
onCreate(...)
setContentView(...);
setFeatureDrawable(Window.FEATURE_LEFT_ICON,
<your_drawable>);
....
}
Если это не сработает, попробуйте позвонить setFeatureDrawable
до setContentView