Call requires API level 16 (current min is 14)

12,312

Solution 1

What does this mean?

It means that the setBackground(Drawable) method was added in API Level 16, and older devices do not have it. However, your app's minSdkVersion is 14. So, unless you take steps to avoid this line on API Level 14 and 15 devices, your app will crash on those devices.

Can I raise my API level?

You could set your minSdkVersion to 16.

Does it limit the amount of devices my app can be used on if the API level is higher?

Yes. If you say that your minSdkVersion is 16, then devices running a version of Android older than that cannot run your app.

At the time of this writing, about 90% of Android devices accessing the Play Store are on API Level 16 or higher (i.e., are running Android 4.1 or higher).

You can read more about the concept of API levels in the documentation. Note that this documentation is a bit old, in that it focuses on the minSdkVersion being defined in the manifest. In Android Studio projects, minSdkVersion is usually defined in your app module's build.gradle file.

Solution 2

Can I raise my API level?

You can set API to 16 it will limit device below 16 but it will perfectly work on devices API 16 and higher

Or else You can use API check and set

final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    layout.setBackgroundDrawable( getResources().getDrawable(R.drawable.ready) );
} else {
    layout.setBackground( getResources().getDrawable(R.drawable.ready));
}

Solution 3

Use a validation method that will be supported only in API LEVEL >= 16 (note the use of ContextCompat class:

  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
            linearLayout.setBackground(ContextCompat.getDrawable(this, drawableid));
        }
Share:
12,312
stubbydog
Author by

stubbydog

Updated on June 17, 2022

Comments

  • stubbydog
    stubbydog almost 2 years

    I have this line in my code:

    linearLayout.setBackground(drawable);
    

    setBackground() shows the following error:

    Call requires API level 16 (current min is 14)

    What does this mean?

    Can I raise my API level?

    What does a higher/lower API level mean?

    Does it limit the amount of devices my app can be used on if the API level is higher?