为什么我无法在 Android 电视提供商数据库中看到所有频道项目?
Why do I not get all Channel items visible in Android TV provider database?
首先,这是/data/data/com.android.providers.tv/databases/tv.db
然后在我的代码中我应用了 来检索频道:
TvInputManager tv = (TvInputManager)getApplicationContext().getSystemService(Context.TV_INPUT_SERVICE);
List<TvInputInfo> list = tv.getTvInputList();
ContentResolver cr = getContentResolver();
Iterator<TvInputInfo> it = list.iterator();
while(it.hasNext()) {
TvInputInfo aux = it.next();
Uri uri = TvContract.buildChannelsUriForInput(aux.getId());
Cursor cur = cr.query(uri, projection, null, null ,null);
cur.moveToFirst();
do {
val channel = Channel.fromCursor(channelCursor)
Log.d("Log", "New channel ${channel.id} : ${channel.displayName} : ${channel.packageName}"}
} while (channelCursor.moveToNext() && channelCursor.isLast.not())
}
不幸的是,我只 TvInputInfo aux
得到 input_id
com.google.android.videos/.tv.usecase.tvinput.playback.TvInputService
因此我的光标 returns 只有 1 个频道 _id = 4
。
尽管如此,我既没有得到亚马逊的 input_id 的 _id=22
也没有得到 netflix 的 _id=25
,如上面的屏幕截图所示,我想得到上面的所有内容18 个频道。
如何查询所有个频道,以及那些input_id
为空的频道?
您受到 TvContract.buildChannelsUriForInput(aux.getId());
的限制,取决于 input_id。当你为 Uri 取 TvContractCompat.Channels.CONTENT_URI
时,你将得到:
Uri uri = TvContractCompat.Channels.CONTENT_URI;
Cursor cur = getContentResolver().query(uri, projection, null, null ,null);
cur.moveToFirst();
do {
val channel = Channel.fromCursor(channelCursor)
Log.d("Log", "New channel ${channel.id} : ${channel.displayName} : ${channel.packageName}"}
} while (channelCursor.moveToNext())
首先,这是/data/data/com.android.providers.tv/databases/tv.db
然后在我的代码中我应用了
TvInputManager tv = (TvInputManager)getApplicationContext().getSystemService(Context.TV_INPUT_SERVICE);
List<TvInputInfo> list = tv.getTvInputList();
ContentResolver cr = getContentResolver();
Iterator<TvInputInfo> it = list.iterator();
while(it.hasNext()) {
TvInputInfo aux = it.next();
Uri uri = TvContract.buildChannelsUriForInput(aux.getId());
Cursor cur = cr.query(uri, projection, null, null ,null);
cur.moveToFirst();
do {
val channel = Channel.fromCursor(channelCursor)
Log.d("Log", "New channel ${channel.id} : ${channel.displayName} : ${channel.packageName}"}
} while (channelCursor.moveToNext() && channelCursor.isLast.not())
}
不幸的是,我只 TvInputInfo aux
得到 input_id
com.google.android.videos/.tv.usecase.tvinput.playback.TvInputService
因此我的光标 returns 只有 1 个频道 _id = 4
。
尽管如此,我既没有得到亚马逊的 input_id 的 _id=22
也没有得到 netflix 的 _id=25
,如上面的屏幕截图所示,我想得到上面的所有内容18 个频道。
如何查询所有个频道,以及那些input_id
为空的频道?
您受到 TvContract.buildChannelsUriForInput(aux.getId());
的限制,取决于 input_id。当你为 Uri 取 TvContractCompat.Channels.CONTENT_URI
时,你将得到:
Uri uri = TvContractCompat.Channels.CONTENT_URI;
Cursor cur = getContentResolver().query(uri, projection, null, null ,null);
cur.moveToFirst();
do {
val channel = Channel.fromCursor(channelCursor)
Log.d("Log", "New channel ${channel.id} : ${channel.displayName} : ${channel.packageName}"}
} while (channelCursor.moveToNext())