gpt4 book ai didi

android - 程序查询返回安全异常

转载 作者:行者123 更新时间:2023-11-29 19:06:32 25 4
gpt4 key购买 nike

当我尝试通过 channel 或节目 ID 以外的任何方式查询节目数据库时,出现以下异常:

java.lang.SecurityException: Selection not allowed for content://android.media.tv/program
at android.os.Parcel.readException(Parcel.java:1683)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
at android.content.ContentResolver.query(ContentResolver.java:530)
at android.content.ContentResolver.query(ContentResolver.java:472)

请注意,我可以添加和删除程序,因此我认为 list 文件中的权限设置正确。

下面的示例代码尝试按节目名称查询,但抛出上述异常。

Uri uri = TvContract.Programs.CONTENT_URI;

Cursor cursor = null;
try {
String mSelectionClause = TvContract.Programs.COLUMN_TITLE + " = ?";
String[] mSelectionArgs = { "Test title" };
cursor = resolver.query(uri, Program.PROJECTION, mSelectionClause, mSelectionArgs, null);
if (cursor == null || cursor.getCount() == 0) {
Log.d(TAG, "No programs found for 'Test title'");
return programs;
}
Log.d(TAG, cursor.getCount() + " programs found for 'Test tilte'");
} catch (Exception e) {
Log.w(TAG, "Unable to get programs for 'Test title'", e);
} finally {
if (cursor != null) {
cursor.close();
}
}

不可以按任意列查询吗?

最佳答案

TvProvider 不开放供选择。您可以添加/更新/删除,但不能创建自定义查询。您将需要使用 TvContractCompat 来构建您的查询 URI 并评估结果。

context.getContentResolver()
.query(TvContractCompat.buildChannelUri(channelId), null, null, null, null);

或程序

context.getContentResolver()
.query(TvContractCompat.buildProgramsUriForChannel(channelId), null, null, null, null);

针对特定程序

context.getContentResolver()
.query(TvContractCompat.buildProgramUri(programId), null, null, null, null);

对于您的示例,您应该查询 channel 中的节目并搜索标题。

try (Cursor cursor = context.getContentResolver()
.query(
TvContractCompat.buildProgramsUriForChannel(channelId),
null, null, null, null)) {
if (cursor != null && cursor.moveToNext()) {
Program program = Program.fromCursor(cursor);
if( "Test Title".equals(program.getTitle()) {
// Do stuff...
}
}
}

引用: https://developer.android.com/training/tv/discovery/recommendations-channel.html#best_practices

关于android - 程序查询返回安全异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47011361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com