I cannot reproduce your issue, so I have decided to post the relevant code - maybe it will help you somehow. So, the app starts fine and no exception is thrown.
app/build.gradle
plugins {
id 'com.android.application'
id 'kotlin-android'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.example.sampletv"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'com.android.support:leanback-v17:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
implementation 'androidx.tvprovider:tvprovider:1.0.0'
}
AndroidManifest.xml
package="com.example.sampletv">
android:name="android.hardware.touchscreen"
android:required="false" />
android:name="android.software.leanback"
android:required="true" />
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.Sampletv">
android:name=".MainActivity"
android:banner="@drawable/app_icon_your_company"
android:icon="@drawable/app_icon_your_company"
android:label="@string/app_name"
android:logo="@drawable/app_icon_your_company"
android:screenOrientation="landscape">
MainActivity.kt
package com.example.sampletv
import android.app.Activity
import android.net.Uri
import android.os.Bundle
import androidx.tvprovider.media.tv.Channel
import androidx.tvprovider.media.tv.TvContractCompat
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val uri: Uri = TvContractCompat.Channels.CONTENT_URI
contentResolver.query(uri, null, null, null, null)?.let { cursor->
if(cursor.count > 0) {
cursor.moveToFirst()
do {
val channel = Channel.fromCursor(cursor)
} while (cursor.moveToNext() && cursor.isLast.not())
}
}
}
}