首页 > 解决方案 > 通过 Uri 使用 ContentResolver 删除

问题描述

我正在尝试删除内容(香奈儿的程序),例如:

content://android.media.tv/preview_program/317

使用此代码:

    getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(ALlProgramIDs.get(i)), null, null);
    // ALlProgramIDs.get(i) = 317; long type

或此代码:

getContentResolver().delete(Uri.parse(ALsProgramIDs.get(i)), null, null);
// ALsProgramIDs.get(i) = content://android.media.tv/preview_program/317

什么都不会发生。程序不删除。

但是这段代码:

getContentResolver().delete(Uri.parse(ALsProgramIDs.get(i).substring(0, ALsProgramIDs.get(i).length() - 3)), null, null);
// LsProgramIDs.get(i).substring(0, ALsProgramIDs.get(i).length() - 3 = content://android.media.tv/preview_program/

工作正常 - 此 Uri(或存储)中的所有内容都被删除。

删除某些 ID 有什么问题?

似乎在这里完成: https ://developer.android.com/reference/androidx/tvprovider/media/tv/PreviewProgram

删除预览程序时的使用示例:

getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(existingProgram.getId()), null, null);

标签: androiduriandroid-tvandroid-contentresolver

解决方案


getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(programId), null, null);

应该可以工作,因此您可能需要连接调试器并单步执行以验证您正在传递要删除的 ID 以及构建的 URI 是否正确。使您的代码更具可读性的另一种方法是使用 PreviewChannelHelper 的deletePreviewProgram方法。

PreviewChannelHelper(context).deletePreviewProgram(id);

推荐阅读