我正在尝试在安装应用后更改应用的图标和标签。
在清单中,我把这段代码:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyTheme" >
// 1st Activity declaration
<activity
android:name=".activities.SplashScreenActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/Theme.Sherlock.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
// I removed the next line to put it with the alias :
// <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
// Activity Aliases
<activity-alias
android:name=".Alias_0"
android:enabled="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:targetActivity=".activities.SplashScreenActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity-alias
android:name=".Alias_1"
android:enabled="false"
android:icon="@drawable/alias1"
android:label="@string/alias1"
android:targetActivity=".activities.SplashScreenActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
在PreferenceActivity中,我启用/禁用这样的别名:
packageManager.setComponentEnabledSetting(
new ComponentName("com.mypackage", "com.mypackage.Alias_0"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
packageManager.setComponentEnabledSetting(
new ComponentName("com.mypackage", "com.mypackage.Alias_1"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
始终只有一个激活的别名。
更改后,我可以在应用程序启动器上看到旧应用程序图标/标签已消失,在某些设备上,启动程序需要一些时间(可能会持续很长时间)才能显示已激活的应用程序。 在此期间,由于没有图标,因此无法启动应用程序。
有没有办法以编程方式刷新启动器?
另外,我试图在激活/取消激活别名后创建一个快捷方式。它运行正常,但如果我尝试移动快捷方式,一旦我将快捷方式释放到新位置,Android启动器就会崩溃。 这是我正在使用的代码:
Intent shortcutIntent = new Intent(getApplicationContext(), SplashScreenActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutTitle);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), shortcutDrawableId));
addIntent.putExtra("duplicate", false);
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(addIntent);
我错过了什么吗?
编辑:为了清楚起见,我不打算在安装之前更改应用的名称。我想在手机上安装应用程序后再这样做。
我希望用户在安装我的应用后有机会获得另一个图标/标签。如果他们没有激活该选项,他们应该有原始图标/标签。
我也不打算通过更新来更改应用程序的名称。
答案 0 :(得分:1)
问题中发布的代码显然是正确的方法。 Android 4.1和4.2存在问题。在此处查找更多详细信息:
答案 1 :(得分:0)
我想我可以帮助你。在清单标签下有这样的:
<application
android:allowBackup="true"
android:icon="@drawable/launcher_icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" />
您可以编辑这些并将其更改为您在启动器的drawable中保存的图标,也可以将它们更改为其他字符串。
答案 2 :(得分:-1)
要更改应用程序的名称,请右键单击包浏览器中的应用程序文件夹,查找“重构”并按重命名。
要更改应用程序的图标,您必须更改可绘制文件夹中的所有变体以及res文件夹中的“ic_launcher-web.png”。