<?xml version="1.0" encoding="UTF-8"?>
<issues format="5" by="lint 4.2.0-alpha16" client="gradle" variant="debug" version="4.2.0-alpha16">

    <issue
        id="ObsoleteLintCustomCheck"
        message="Lint found an issue registry (`androidx.annotation.experimental.lint.ExperimentalIssueRegistry`) which did not specify the Lint API version it was compiled with.&#xA;&#xA;**This means that the lint checks are likely not compatible.**&#xA;&#xA;If you are the author of this lint check, make your lint `IssueRegistry` class contain&#xA;  override val api: Int = com.android.tools.lint.detector.api.CURRENT_API&#xA;or from Java,&#xA;  @Override public int getApi() { return com.android.tools.lint.detector.api.ApiKt.CURRENT_API; }&#xA;&#xA;If you are just using lint checks from a third party library you have no control over, you can disable these lint checks (if they misbehave) like this:&#xA;&#xA;    android {&#xA;        lintOptions {&#xA;            disable &quot;UnsafeExperimentalUsageError&quot;,&#xA;                    &quot;UnsafeExperimentalUsageWarning&quot;&#xA;        }&#xA;    }&#xA;">
        <location
            file="../../../../../.gradle/caches/transforms-2/files-2.1/597bdf06b2c6543399d6dc2389a6cda6/annotation-experimental-1.0.0/jars/lint.jar"/>
    </issue>

    <issue
        id="InlinedApi"
        message="Field requires API level 28 (current min is 19): `android.app.slice.Slice#EXTRA_TOGGLE_STATE`"
        errorLine1="                boolean newState = i.getBooleanExtra(EXTRA_TOGGLE_STATE, wm.isWifiEnabled());"
        errorLine2="                                                     ~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SliceBroadcastReceiver.java"
            line="59"
            column="54"/>
    </issue>

    <issue
        id="InlinedApi"
        message="Field requires API level 28 (current min is 19): `android.app.slice.Slice#EXTRA_RANGE_VALUE`"
        errorLine1="                int range = i.getExtras().getInt(EXTRA_RANGE_VALUE, 0);"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SliceBroadcastReceiver.java"
            line="76"
            column="50"/>
    </issue>

    <issue
        id="InlinedApi"
        message="Field requires API level 28 (current min is 19): `android.app.slice.Slice#EXTRA_RANGE_VALUE`"
        errorLine1="                long dateMillis = i.getExtras().getLong(EXTRA_RANGE_VALUE, 0);"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SliceBroadcastReceiver.java"
            line="88"
            column="57"/>
    </issue>

    <issue
        id="InlinedApi"
        message="Field requires API level 28 (current min is 19): `android.app.slice.Slice#EXTRA_RANGE_VALUE`"
        errorLine1="                long timeMillis = i.getExtras().getLong(EXTRA_RANGE_VALUE, 0);"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SliceBroadcastReceiver.java"
            line="97"
            column="57"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), sliceUri, INFINITY);"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="283"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), sliceUri, INFINITY);"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="327"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="`CellBuilder` should have a piece of content added to it"
        errorLine1="                        .addCell(new CellBuilder().setSliceAction("
        errorLine2="                                 ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="370"
            column="34"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="543"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        ListBuilder b = new ListBuilder(getContext(), sliceUri, INFINITY);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="564"
            column="25"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        ListBuilder b = new ListBuilder(getContext(), sliceUri, INFINITY);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="578"
            column="25"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        ListBuilder b = new ListBuilder(getContext(), sliceUri, INFINITY);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="624"
            column="25"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        return new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="671"
            column="16"/>
    </issue>

    <issue
        id="Slices"
        message="`RowBuilder` cannot have a mixture of icons and slice actions added to the end items"
        errorLine1="        return new ListBuilder(getContext(), sliceUri, INFINITY).addRow(new RowBuilder()"
        errorLine2="                                                                        ^">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="724"
            column="73"/>
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="724"
            column="73"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), sliceUri, INFINITY);"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="734"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="806"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        return new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="834"
            column="16"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        return new ListBuilder(getContext(), sliceUri, TimeUnit.SECONDS.toMillis(10))"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="875"
            column="16"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="962"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        return new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="1171"
            column="16"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), uri, INFINITY);"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="1199"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), uri, INFINITY);"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="1261"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        ListBuilder lb = new ListBuilder(getContext(), uri, INFINITY);"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="1296"
            column="26"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        return new ListBuilder(getContext(), uri, INFINITY)"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="1384"
            column="16"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have a primary action set on one of its rows"
        errorLine1="        Slice s = new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="1474"
            column="19"/>
    </issue>

    <issue
        id="Slices"
        message="A slice should have at least one row added to it"
        errorLine1="        return new ListBuilder(getContext(), sliceUri, INFINITY)"
        errorLine2="               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="1508"
            column="16"/>
    </issue>

    <issue
        id="UnusedAttribute"
        message="Attribute `autoMirrored` is only used in API level 19 and higher (current min is 14)"
        errorLine1="        android:autoMirrored=&quot;true&quot;>"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/drawable/ic_speak.xml"
            line="6"
            column="9"/>
    </issue>

    <issue
        id="WifiManagerPotentialLeak"
        message="The WIFI_SERVICE must be looked up on the Application context or memory will leak on devices &lt; Android N. Try changing `context` to `context.getApplicationContext()`"
        errorLine1="                WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);"
        errorLine2="                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SliceBroadcastReceiver.java"
            line="58"
            column="48"/>
    </issue>

    <issue
        id="VectorRaster"
        message="This attribute is not supported in images generated from this vector icon for API &lt; 21; check generated icon to make sure it looks acceptable"
        errorLine1="        android:autoMirrored=&quot;true&quot;>"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/res/drawable/ic_speak.xml"
            line="6"
            column="9"/>
    </issue>

    <issue
        id="ExportedReceiver"
        message="Exported receiver does not require permission"
        errorLine1="        &lt;receiver"
        errorLine2="         ~~~~~~~~">
        <location
            file="src/main/AndroidManifest.xml"
            line="22"
            column="10"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cake.png` in densityless folder">
        <location
            file="src/main/res/drawable/cake.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cat.jpeg` in densityless folder">
        <location
            file="src/main/res/drawable/cat.jpeg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cat_1.png` in densityless folder">
        <location
            file="src/main/res/drawable/cat_1.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cat_2.png` in densityless folder">
        <location
            file="src/main/res/drawable/cat_2.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cat_3.png` in densityless folder">
        <location
            file="src/main/res/drawable/cat_3.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cat_4.png` in densityless folder">
        <location
            file="src/main/res/drawable/cat_4.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cat_5.png` in densityless folder">
        <location
            file="src/main/res/drawable/cat_5.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cat_6.png` in densityless folder">
        <location
            file="src/main/res/drawable/cat_6.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/cheese.png` in densityless folder">
        <location
            file="src/main/res/drawable/cheese.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/landscape.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/landscape.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/mady.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/mady.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/message.png` in densityless folder">
        <location
            file="src/main/res/drawable/message.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/pizza.png` in densityless folder">
        <location
            file="src/main/res/drawable/pizza.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/pizza1.jpeg` in densityless folder">
        <location
            file="src/main/res/drawable/pizza1.jpeg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/pizza2.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/pizza2.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/pizza3.jpeg` in densityless folder">
        <location
            file="src/main/res/drawable/pizza3.jpeg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/pizza4.jpeg` in densityless folder">
        <location
            file="src/main/res/drawable/pizza4.jpeg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/portrait.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/portrait.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/reservation.png` in densityless folder">
        <location
            file="src/main/res/drawable/reservation.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/slices_1.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/slices_1.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/slices_2.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/slices_2.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/slices_3.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/slices_3.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/slices_4.jpg` in densityless folder">
        <location
            file="src/main/res/drawable/slices_4.jpg"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/weather_1.png` in densityless folder">
        <location
            file="src/main/res/drawable/weather_1.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/weather_2.png` in densityless folder">
        <location
            file="src/main/res/drawable/weather_2.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/weather_3.png` in densityless folder">
        <location
            file="src/main/res/drawable/weather_3.png"/>
    </issue>

    <issue
        id="IconLocation"
        message="Found bitmap drawable `res/drawable/weather_4.png` in densityless folder">
        <location
            file="src/main/res/drawable/weather_4.png"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public static Uri getUri(String path, Context context) {"
        errorLine2="                  ~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="155"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public static Uri getUri(String path, Context context) {"
        errorLine2="                             ~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="155"
            column="30"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public static Uri getUri(String path, Context context) {"
        errorLine2="                                          ~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="155"
            column="43"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public Slice onBindSlice(@NonNull Uri sliceUri) {"
        errorLine2="           ~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="175"
            column="12"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public static ArrayList&lt;String> sGroceryList = new ArrayList&lt;>();"
        errorLine2="                  ~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SampleSliceProvider.java"
            line="788"
            column="19"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public void onReceive(final Context context, Intent i) {"
        errorLine2="                                ~~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SliceBroadcastReceiver.java"
            line="47"
            column="33"/>
    </issue>

    <issue
        id="UnknownNullness"
        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
        errorLine1="    public void onReceive(final Context context, Intent i) {"
        errorLine2="                                                 ~~~~~~">
        <location
            file="src/main/java/androidx/slice/test/SliceBroadcastReceiver.java"
            line="47"
            column="50"/>
    </issue>

</issues>
