2015-02-10 192 views
4

在我的应用程序中,我想根据收到的通知更改应用程序的图标。即如果接收到2个通知,则其中具有“2”的应用程序图标将显示在该设备的主屏幕中。应用程序在调用setComponentEnabledSetting以使用活动别名后关闭

为此,我使用了活动别名。我加入以下为活动别名意图过滤器:

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

并作出活动别名活跃我用下面的代码:

这是为了使该活动别名:

ComponentName componentName = new ComponentName("PACKAGE_NAME_HERE", 
        lastEnabled); 
      pm.setComponentEnabledSetting(componentName, 
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
        PackageManager.DONT_KILL_APP); 
      Utility.setLastEnabled(lastEnabled,context); 

这将禁用以前启用的活动别名

componentName = new ComponentName(
      "PACKAGE_NAME_HERE", prevLastEnabled); 
    pm.setComponentEnabledSetting(componentName, 
      PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
      PackageManager.DONT_KILL_APP); 

但是尽快应用程序ico n改变,我的应用程序关闭,没有任何例外。我已经使用不杀应用程序在这里,它仍然关闭应用程序。任何人都可以请建议我,如果我做错了什么。谢谢。

回答

1

您的活动正在关闭,可能是因为您已启用/禁用了您的目标活动。请注意,应用程序(应用程序进程)没有被杀害。反正这是我做的,停止从收盘的活动:

一般要做到以下几点:

  1. 使用只是活动的别名图标
  2. 取下类别“发射”目标活动
  3. 只有启用/禁用活动的别名

您的AndroidManifest.xml应该是这个样子:

<activity android:name=".MainActivity" ... > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    </intent-filter> 
</activity> 

<activity-alias android:name=".No-Icon-Badge" 
       android:targetActivity=".MainActivity" 
       android:enabled="true" 
       ... > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity-alias> 

<activity-alias android:name=".Icon-Badge-1" 
       android:targetActivity=".MainActivity" 
       android:enabled="false" 
       ... > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity-alias> 

<activity-alias android:name=".Icon-Badge-2" 
       android:targetActivity=".MainActivity" 
       android:enabled="false" 
       ... > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity-alias> 

... 

所以你的MainActivity被启用(保持这种方式),但没有LAUNCHER类别,所以它不会显示出来。此外,第一个活动别名已启用(这是您的默认设置),其他所有活动均被禁用。

祝你好运!

+0

这工作,谢谢。 – AvatarQing 2017-09-25 10:08:59

相关问题