如何在不打开应用程序的情况下动态更改应用程序图标和应用程序名称?

问题描述 投票:0回答:1

Google Play 管理中心有一项名为“自定义商品列表”的新功能,允许使用不同的应用图标和名称。我想在用户安装应用程序时动态更改应用程序的启动器图标和名称以匹配这些自定义列表,而不需要打开应用程序。

我尝试使用 ,但它只会在应用程序打开一次并重新启动应用程序后更改图标。我怎样才能在不需要打开应用程序的情况下实现这一目标?

androidmanifest.xml 

<activity-alias
    android:name=".MainActivityAlias1"
    android:enabled="true"
    android:icon="@drawable/icon1"
    android:label="@string/app_name1"
    android:targetActivity=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity-alias>

<activity-alias
    android:name=".MainActivityAlias2"
    android:enabled="false"
    android:icon="@drawable/icon2"
    android:label="@string/app_name2"
    android:targetActivity=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity-alias>

我使用以下代码在图标之间切换:

PackageManager pm = getPackageManager();
ComponentName alias1 = new ComponentName(this, "com.yourpackage.MainActivityAlias1");
ComponentName alias2 = new ComponentName(this, "com.yourpackage.MainActivityAlias2");

pm.setComponentEnabledSetting(alias1,
    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
    PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(alias2,
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
    PackageManager.DONT_KILL_APP);

此方法需要打开并重新启动应用程序才能生效。有没有一种方法可以在安装时动态更改应用程序的图标和名称,而无需打开应用程序?

java android icons google-play-console launcher
1个回答
0
投票

如果您想动态更改应用程序的图标而不要求用户打开应用程序,仅上面的代码是不够的。您需要使用一些推送通知库,例如 Firebase Cloud Messaging (FCM)。其中,当您从后端发送通知时,应用程序会收到它(无论该应用程序当前打开还是以前打开过),并根据该通知,您可以触发上述代码。

© www.soinside.com 2019 - 2024. All rights reserved.