避免在Android 8.0的电视频道中创建重复频道
我正在使用Android 8.0及以上版本的电视频道 我可以通过下面的代码在it电视频道上显示我的应用程序频道避免在Android 8.0的电视频道中创建重复频道,android,android-tv,Android,Android Tv,我正在使用Android 8.0及以上版本的电视频道 我可以通过下面的代码在it电视频道上显示我的应用程序频道 private void createChannel(Context c) { // NOTE : THESE INFO MUST MATCH WITH DATA IN MANIFEST.XML ComponentName cn = new ComponentName(c, MainActivity.class.getName()); String channe
private void createChannel(Context c) {
// NOTE : THESE INFO MUST MATCH WITH DATA IN MANIFEST.XML
ComponentName cn = new ComponentName(c, MainActivity.class.getName());
String channelInputId = TvContractCompat.buildInputId(cn);
// Design Channel Data on Launcher in here
Channel channel = new Channel.Builder()
.setDisplayName("Video Hot")
.setType(TvContractCompat.Channels.TYPE_PREVIEW)
.setInputId(channelInputId)
.setAppLinkIntent(new Intent(c, MainActivity.class))
.build();
Uri channelUri = c.getContentResolver().insert(
TvContractCompat.Channels.CONTENT_URI, channel.toContentValues());
if (channelUri != null && !channelUri.equals(Uri.EMPTY)) {
long channelId = ContentUris.parseId(channelUri);
Bitmap bitmap = BitmapFactory.decodeResource(c.getResources(), R.mipmap.ic_channel_logo);
ChannelLogoUtils.storeChannelLogo(c, channelId, bitmap);
// Request to show on Default Channel
TvContractCompat.requestChannelBrowsable(c, channelId);
NotificationManager notificationManager = (NotificationManager)
c.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel mNcChannelMedia = new NotificationChannel(
channelId + "", c.getString(R.string.app_name), NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(mNcChannelMedia);
}
}
但我不知道哪种方法可以检查现有的通道,以避免重复问题,如下图所示
(清除数据应用设置后,再次打开应用,重复)
知道的人,
请帮帮我
谢谢,请关注
我现在就可以找到答案
@TargetApi(Build.VERSION_CODES.O)
private Subscription isExistedChannel(String channelName) {
Subscription subscription;
Cursor cursor =
c.getContentResolver()
.query(
TvContractCompat.Channels.CONTENT_URI,
new String[] {
TvContractCompat.Channels._ID,
TvContract.Channels.COLUMN_DISPLAY_NAME
},
null,
null,
null);
if (cursor != null && cursor.moveToFirst()) {
do {
Channel channel = Channel.fromCursor(cursor);
if (channelName.equals(channel.getDisplayName())) {
Log.d(
LogcatConstants.LIFE_CYCLE,
"Channel already exists. Returning channel "
+ channel.getId()
+ " from TV Provider.");
subscription = new Subscription(channel.getId());
return subscription;
}
} while (cursor.moveToNext());
}
return null;
}
private class Subscription {
private long channelId;
Subscription(long channelId) {
this.channelId = channelId;
}
long getChannelId() {
return channelId;
}
}
跟随
我现在就可以找到答案
@TargetApi(Build.VERSION_CODES.O)
private Subscription isExistedChannel(String channelName) {
Subscription subscription;
Cursor cursor =
c.getContentResolver()
.query(
TvContractCompat.Channels.CONTENT_URI,
new String[] {
TvContractCompat.Channels._ID,
TvContract.Channels.COLUMN_DISPLAY_NAME
},
null,
null,
null);
if (cursor != null && cursor.moveToFirst()) {
do {
Channel channel = Channel.fromCursor(cursor);
if (channelName.equals(channel.getDisplayName())) {
Log.d(
LogcatConstants.LIFE_CYCLE,
"Channel already exists. Returning channel "
+ channel.getId()
+ " from TV Provider.");
subscription = new Subscription(channel.getId());
return subscription;
}
} while (cursor.moveToNext());
}
return null;
}
private class Subscription {
private long channelId;
Subscription(long channelId) {
this.channelId = channelId;
}
long getChannelId() {
return channelId;
}
}