如何使用包名称删除频道?

问题描述

我正在尝试使用android.media.tvContentResolver数据库删除所有频道,使用应用包名称,像这样

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。我只想删除该应用创建的所有频道。

  • 我想念什么?

Ref

解决方法

请求一次应该一次。您在utils类中使用了sync还是寻找了其他请求。或尝试更改程序包名称,有时Java / android保留的程序包名称会导致SecurityException。