问题
my code is,
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Bitmap bm = BitmapFactory.decodeResource(context.getResources(),R.drawable.app_icon);
ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("AppName", bm ,R.color.colorPrimaryDark);
setTaskDescription(taskDescription);
}
in colors.xml
<color name="colorPrimaryDark">#FF9800</color>
it gives error java.lang.RuntimeException: A TaskDescription's primary color should be opaque
EDIT 1:
manifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/app_icon3"
android:label="@string/app_name"
android:theme="@style/AppTheme">
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimaryDark">#242533</item>
<item name="colorPrimary">#242533</item>
<item name="colorAccent">@color/white</item>
</style>
logcat
E/AndroidRuntime: FATAL EXCEPTION: main
Process: co.treeline.kitetrack, PID: 18419
java.lang.RuntimeException: Unable to start activity ComponentInfo{co.treeline.kitetrack/co.treeline.kitetrack.SplashScreen}: java.lang.RuntimeException: A TaskDescription's primary color should be opaque
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.access$900(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.RuntimeException: A TaskDescription's primary color should be opaque
at android.app.ActivityManager$TaskDescription.<init>(ActivityManager.java:589)
at co.treeline.kitetrack.SplashScreen.changeMinimizedActionbarColor(SplashScreen.java:284)
at co.treeline.kitetrack.SplashScreen.onCreate(SplashScreen.java:73)
at android.app.Activity.performCreate(Activity.java:6259)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.access$900(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
what is the problem here?
回答1:
The reason is that TaskDescription("AppName", bm ,R.color.colorPrimaryDark) needs colour value as parameter and you're using resource id. It is not the same, you have to get your colour via method context.getResources().getColor(R.color.colorPrimaryDark).
Change :
ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("AppName", bm ,R.color.colorPrimaryDark);
to
ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("AppName", bm , ContextCompat.getColor(context, R.color.colorPrimaryDark));
来源:https://stackoverflow.com/questions/41298162/a-taskdescriptions-primary-color-should-be-opaque-android-6-0