37

I have implemented material design into my app and it runs perfectly fine on < Android 5 but when I try to run on Android 5.0 and above I get the following in my logcat.

     FATAL EXCEPTION main
 Process com.test.test, PID 3195
 java.lang.RuntimeException Unable to start activity ComponentInfo{com.test.test/com.test.test.MainActivity} java.lang.RuntimeException A TaskDescription's primary color should be opaque
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java2298)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java2360)
    at android.app.ActivityThread.access$800(ActivityThread.java144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java1278)
    at android.os.Handler.dispatchMessage(Handler.java102)
    at android.os.Looper.loop(Looper.java135)
    at android.app.ActivityThread.main(ActivityThread.java5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java899)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java694)
 Caused by java.lang.RuntimeException A TaskDescription's primary color should be opaque
    at android.app.ActivityManager$TaskDescription.<init>(ActivityManager.java536)
    at android.app.Activity.onApplyThemeResource(Activity.java3677)
    at android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java140)
    at android.view.ContextThemeWrapper.setTheme(ContextThemeWrapper.java85)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java2244)
    ... 10 more

And here is my styles:

    <resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.


    -->


    <!-- All customizations that are NOT specific to a particular API-level can go here. -->

    <style name="AppTheme" parent="@style/Theme.AppCompat.NoActionBar">

        <!-- All customizations that are NOT specific to a particular API-level can go here. -->

        <item name="colorPrimaryDark">#4DFF9800</item>
        <item name="colorPrimary">#4D607D8B</item>
    </style>

</resources>

If anyone could give me some guidance that would be great thanks.

Jack
  • 2,043
  • 7
  • 40
  • 69

3 Answers3

100

You can not use alfa in primary color. The primary color has to be opaque.

Change:

<item name="colorPrimaryDark">#4DFF9800</item>
<item name="colorPrimary">#4D607D8B</item>

To

<item name="colorPrimaryDark">#FF9800</item>
<item name="colorPrimary">#607D8B</item>

for api 21 in res/values-v21/style.xml file

Konrad Krakowiak
  • 12,285
  • 11
  • 58
  • 45
  • myself not working this solution . i tested android 6.0 – Sathish Kumar J Dec 23 '16 at 08:49
  • @SathishKumarJ Could you create gist with your code? – Konrad Krakowiak Dec 23 '16 at 09:25
  • check my question here https://stackoverflow.com/questions/41298162/a-taskdescriptions-primary-color-should-be-opaque-android-6-0 – Sathish Kumar J Dec 23 '16 at 09:27
  • please clarify in which cases it has to be opaque cause I can use transparent color for colorPrimary on Marshmallow 6.0.1 without any problem.. I don't have a Lollipop device so can't test it – user25 Apr 29 '18 at 09:05
  • It is no problem with Android 6, it is no problem with Android 4.4, but this exception is thrown with Android 5.1!!! Isn't there a good solution that does not require to degrade the color of my app? – Mike76 Jul 11 '19 at 19:21
3

Simple solution to the issue is to remove the opaque applied to the primary color in colors.xml

When opaque is applied to primary color the color code look like this "#aca688ff", where it has to be ex: "#F50057" (6 letters alphanumeric code without opaque).

Hope the above solution helps you to fix the issue.

2

@Konrad Krakowiak is right.
You can see the source code of android.app.ActivityManager#TaskDescription.

/**
    * Creates the TaskDescription to the specified values.
    *
    * @param label A label and description of the current state of this task.
    * @param icon An icon that represents the current state of this task.
    * @param colorPrimary A color to override the theme's primary color. This color must be opaque.
    */
    public TaskDescription(String label, Bitmap icon, int colorPrimary) {
      if ((colorPrimary != 0) && (Color.alpha(colorPrimary) != 255)) {
        throw new RuntimeException("A TaskDescription's primary color should be opaque");
      }

      mLabel = label;
      mIcon = icon;
      mColorPrimary = colorPrimary;
    }
Jimson
  • 211
  • 1
  • 2
  • 10