首页 > 解决方案 > 如何使用包名删除频道?

问题描述

我正在尝试使用这样的应用程序包名称从数据库android.media.tv删除所有频道ContentResolver

applicationContext.contentResolver.delete(
    TvContractCompat.Channels.CONTENT_URI,
    "${TvContractCompat.Channels.COLUMN_PACKAGE_NAME} = ?",
    arrayOf(currentAppPackageName)
)

但我越来越

java.util.concurrent.ExecutionException: java.lang.SecurityException: Selection not allowed for content://android.media.tv/channel
    at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516)
    at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
    at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:298)
    at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)
 Caused by: java.lang.SecurityException: Selection not allowed for content://android.media.tv/channel
    at android.os.Parcel.createException(Parcel.java:1950)
    at android.os.Parcel.readException(Parcel.java:1918)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
    at android.content.ContentProviderProxy.delete(ContentProviderNative.java:547)
    at android.content.ContentResolver.delete(ContentResolver.java:1684)

我知道我们可以通过 删除频道channelId,但就我而言,我没有频道 ID。我只是想删除应用程序创建的所有频道。

参考

标签: androidandroid-tv

解决方案


请求应该一次一个。您是否在 utils 类中使用了同步或查找任何其他请求。或者尝试更改包名,有时 Java/android 保留的包名会导致 SecurityException。


推荐阅读