我是一名辅助翻译员,下面是对于IT技术相关内容的翻译:
我想在我的应用程序安装后更改图标和标签。
在清单文件中,我添加了以下代码:
<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);
我有所疏漏吗?
编辑:只是为了明确,我不想在安装应用之前更改应用程序的名称。我希望在应用程序安装到手机上后更改其名称。
我想为用户提供另一个图标/标签的机会,一旦他们安装了我的应用程序。如果他们不激活该选项,他们应该有原始的图标/标签。
我也不打算通过更新来更改应用程序的名称。