android - 通过 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);
解决方案
getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(programId), null, null);
应该可以工作,因此您可能需要连接调试器并单步执行以验证您正在传递要删除的 ID 以及构建的 URI 是否正确。使您的代码更具可读性的另一种方法是使用 PreviewChannelHelper 的deletePreviewProgram方法。
PreviewChannelHelper(context).deletePreviewProgram(id);
推荐阅读
- java - Jersey 客户端错误 - 无法解析无效的 Content-Type 标头(需要解决方法)
- javascript - 如何更改状态挂钩中的多个键值?
- android - 使用 ListView 内部的 Align 左/右对齐 Widget
- javascript - 即使使用 css-loader,css 文件中也会出现未知字错误
- python - 我的代码没有通过“while 循环”
- sql - 在 Athena 中加入 2 个具有不同列但公共键(id)列的镶木地板文件
- python - Heroku PostgreSQL SQLAlchemy 语法错误
- node.js - Knex 更改表不添加列
- java - 在 android 5 中更改配置后,Android 从默认文件(布局、字符串)加载值
- ios - 如何在 SwiftUI 中删除列表行的最小垂直填充或最小高度?