【问题标题】:How to change the icon and label of an app once it is installed?安装后如何更改应用程序的图标和标签?
【发布时间】:2013-08-02 23:26:21
【问题描述】:

我正在尝试在我的应用安装后更改其图标和标签。

在清单中,我输入了这段代码:

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

我错过了什么吗?

编辑:为了清楚起见,我不想在安装之前更改我的应用程序的名称。我想在手机上安装应用程序后执行此操作。

我想让用户有机会在安装我的应用后拥有另一个图标/标签。如果他们没有激活该选项,他们应该有原始图标/标签。

我也不希望通过更新更改应用的名称。

【问题讨论】:

  • 祝你好运。因为我面临着同样的..
  • 运行时不可能。但是您可以提供不同的快捷方式,它们可以具有您想要的任何图标和标签。不过,这不会更改您在应用程序菜单中的图标/标签。为此,如果您已经知道想要什么图标/标签,请创建 Activity-Aliases 并在开始时禁用它们并在运行时单独启用它们。

标签: android android-launcher application-icon


【解决方案1】:

问题中发布的代码显然是正确的方法。 Android 4.1 和 4.2 存在问题。在此处查找更多详细信息:

https://code.google.com/p/android/issues/detail?id=54546

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我已经将这些信息添加到应用程序标签中。正如我所写,我想更改已安装并在 Android 启动器中可见的应用的标签/图标。
    • 好的。您可以尝试重新安装应用程序,然后名称和启动器将得到更新。
    • 没有。一旦用户安装了我的应用程序,我想让他们有机会拥有另一个图标/标签。如果他们没有激活该选项,他们应该有原始图标/标签。
    【解决方案3】:

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

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

    【讨论】:

    • 我不想在我的手机上安装之前更改我的应用程序的名称,我想对我已经安装的应用程序这样做
    • 您的意思是将应用程序更新到较新的版本?如果是这样,那么您必须更改 xml 中的版本代码。
    • 没有。我想让用户有机会在安装我的应用后拥有另一个图标/标签
    • 如果您想要不同的图标,您可以将参数添加到您的可绘制文件夹。我不相信用户能够更改应用程序的名称和图标以在启动器上以不同方式显示。
    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2016-09-12
    • 2011-07-12
    相关资源
    最近更新 更多