【问题标题】:Deleting by Uri with ContentResolver通过 Uri 使用 ContentResolver 删除
【发布时间】:2020-07-20 22:43:52
【问题描述】:

我正在尝试删除以下内容(香奈儿的节目):

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);

【问题讨论】:

  • 什么是TvContractCompat.buildPreviewProgramUri(ALlProgramIDs.get(i)
  • 这是ArrayList<Long>,带有 ID
  • 我们看不到。你是用一个 id 然后硬编码它。

标签: android uri android-tv android-contentresolver


【解决方案1】:
getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(programId), null, null);

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

PreviewChannelHelper(context).deletePreviewProgram(id);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多