安装后如何更改应用程序的图标和标签?

4

我是一名辅助翻译员,下面是对于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);

我有所疏漏吗?
编辑:只是为了明确,我不想在安装应用之前更改应用程序的名称。我希望在应用程序安装到手机上后更改其名称。
我想为用户提供另一个图标/标签的机会,一旦他们安装了我的应用程序。如果他们不激活该选项,他们应该有原始的图标/标签。
我也不打算通过更新来更改应用程序的名称。

有没有在这个问题上有什么进展?因为我也遇到了同样的情况。 - Rohit Sharma
这在运行时不可能。但是,您可以提供不同的快捷方式,可以具有任何您想要的图标和标签。然而,这不会改变应用程序菜单中的图标/标签。如果您已经知道想要什么图标/标签,请创建Activity-Aliases,并在开始时禁用它们,然后在运行时分别启用它们。 - JacksOnF1re
3个回答

1

0

我想我可以帮助你。在清单标签下有这个:

<application
    android:allowBackup="true"
    android:icon="@drawable/launcher_icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" />

您可以编辑这些内容,将其更改为您在启动器的可绘制文件中保存的图标,并且还可以将它们的名称更改为不同的字符串。


我已经将这些信息添加到应用程序标签中。正如我所写的,我想要更改已安装并在Android启动器中可见的应用程序的标签/图标。 - Matthieu Coisne
好的。您可以尝试重新安装该应用程序,然后名称和启动器将会更新。 - superuser
不。我想给用户提供安装我的应用后获得另一个图标/标签的机会。如果他们没有激活该选项,他们应该拥有原始的图标/标签。 - Matthieu Coisne

-1

要更改应用程序的名称,请在包资源管理器中右键单击应用程序文件夹,查找“重构”并按重命名。

要更改应用程序的图标,您必须更改drawable文件夹中所有变体以及res文件夹中的“ic_launcher-web.png”。


我不想在将应用程序安装到手机之前更改其名称,我想要更改已经安装的应用程序的名称。 - Matthieu Coisne
你的意思是更新应用程序到新版本吗?如果是的话,那么你需要在你的xml中更改版本代码。 - IDSA
不,我想给用户提供另一个图标/标签的机会,一旦他们安装了我的应用程序。 - Matthieu Coisne
如果您想要不同的图标,可以向您的可绘制文件夹添加参数。我不认为用户能够更改应用程序的名称和图标以在启动器上显示不同的外观。 - IDSA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接