Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
roquoonewbie
Level 7

Uninstalling a Hidden Channel

I just installed a channel that is defined as hidden (via a property in the manifest). For reference, here is the channel: https://owner.roku.com/add/blackness

My question is, once a hidden channel is installed on a Roku unit, how does one uninstall it? It does not appear on the home screen, so it can't be selected there to uninstall. But it does appear in the screensaver list, and in the list of hidden channels (which can be viewed using this sequence):

[Home:3x] [Up:2x] [Left] [Right] [Left] [Right] [Left]
0 Kudos
20 Replies
EnTerr
Level 8

Re: Uninstalling a Hidden Channel

Delete from screen-savers menu with Options ("*").

If it's just hidden and not SS though... i think that's tough predicament, like the "zombie" case
0 Kudos
renojim
Level 8

Re: Uninstalling a Hidden Channel

Blackness is a screensaver, not a hidden channel.

-JT
0 Kudos
EnTerr
Level 8

Re: Uninstalling a Hidden Channel

"renojim" wrote:
Blackness is a screensaver, not a hidden channel.

Didn't it also set the `hidden` flag in the manifest though? As to not be shown in the lineup. I am very unclear on that, the documentation is lacking. Can you explain?
0 Kudos
renojim
Level 8

Re: Uninstalling a Hidden Channel

Nope; no "hidden" flag in the manifest:
title=Blackness
subtitle=Black screensaver
screensaver_title=Blackness
screensaver_private=0
major_version=1
minor_version=0
build_version=1

I don't know where the OP got the idea that it was a hidden channel. I've never seen a channel flagged as hidden anywhere.

Screensavers never show up anywhere but under "Screensavers" as far as I know.

-JT
0 Kudos
roquoonewbie
Level 7

Re: Uninstalling a Hidden Channel

JT...my apologies. I wrongly assumed the channel had a hidden flag in the manifest because it does not appear on the homescreen (and that is what the hidden flag is for). May I ask how you managed to make it "hidden" without setting this flag? Is it just because the code lacks a RunUserInterface and Main function?

On a related note, would you be able to share what the "app id" is for this channel? I would like to be able to launch it via an external control call so that I can have a simple button on my phone which puts my TV in this "off" mode. But I can't seem to find the app id because the app is not listed when I hit the page at http://192.168.0.159:8060/query/apps.
0 Kudos
renojim
Level 8

Re: Uninstalling a Hidden Channel

No apology necessary.

Just stumbled upon this. If there's a "query apps", there must be a "query screensavers". :mrgreen:
Try http://192.168.0.159:8060/query/screensavers

The app id is 3696.

I think it's the combination of the "screensaver" entries in the manifest and the lack of a RunUserInterface (or Main) that differentiate between an app and a screensaver, but I'm not positive. I have plenty of channels that have private screensavers, so they have the both the screensaver entries and a RunUserInterface/Main and they don't show up in the "query screensavers". There's plenty of combinations of manifest entries and RunXxx (RunUserInterface/RunScreensaver) routines in the source code that I've never tried.

I don't think I've ever tried to launch a screensaver directly. Seems like it should work. That would probably come in handy when developing one (although I suppose in that case you'd just be launching the "dev" id).

-JT
0 Kudos
EnTerr
Level 8

Re: Uninstalling a Hidden Channel

"renojim" wrote:
Just stumbled upon this. If there's a "query apps", there must be a "query screensavers". :mrgreen:
Try http://192.168.0.159:8060/query/screensavers

wow.

I think it's the combination of the "screensaver" entries in the manifest and the lack of a RunUserInterface (or Main) that differentiate between an app and a screensaver, but I'm not positive. I have plenty of channels that have private screensavers, so they have the both the screensaver entries and a RunUserInterface/Main and they don't show up in the "query screensavers". There's plenty of combinations of manifest entries and RunXxx (RunUserInterface/RunScreensaver) routines in the source code that I've never tried.

I wish i knew the answer to that too (maybe it takes `screensaver_private` into account instead of RunUserInterface?) but considering the tEtanic effort it took to even get a doco page on screensavers, i'll keep my fingers uncrossed.

Btw, in my /query/screensavers i notice <screensaver id="1861"/>, no name listed. It also shows as an empty line in Settings / Screensaver list. What could it its issue, maybe lacking `screensaver_title` manifestation? That's CLOC (v2.2 2014-12-03) i believe.
0 Kudos
roquoonewbie
Level 7

Re: Uninstalling a Hidden Channel

Brilliant find JT. How you even thought to try that url is amazing.

So I tried launching your blackness screensaver via the External CP. Looks like it doesn't work, because there is no Main() function. I think it would only work if you had something like this in the code:


Sub Main()
RunScreenSaver()
End Sub


However, if you did that, the channel would then appear on the home screen, unless you set the hidden flag in the manifest file.

Anyway, I just threw my own channel together to test all this. This is how I set the screen to black. Is that the same method you used?


s=CreateObject("roScreen")
bm=CreateObject("roBitmap", {width:1280, height: 720, alphaenable: false} )
bm.Clear(&h000000FF)
s.DrawObject(0,0, bm)


I also noticed the following screensaver on my unit (which is a Hisense TV):

<screensaver id="screensaver_backlight" selected="true">Power Saver</screensaver>

Trying to launch that app id via the External CP results in the same thing as when I try to run yours. So I guess it must have no Main() function either. That is a bummer, because that screensaver actually makes the backlight truly go dark, which is ultimately what I think we all want to accomplish.
0 Kudos
RokuMarkn
Level 7

Re: Uninstalling a Hidden Channel

"renojim" wrote:

I think it's the combination of the "screensaver" entries in the manifest and the lack of a RunUserInterface (or Main) that differentiate between an app and a screensaver, but I'm not positive.


I thought the screensaver documentation was pretty clear on this (at least it was intended to be). Please let me know what is unclear about this description and I'll fix it.


A screensaver is just a channel which has a function named RunScreenSaver. It may or may not also have a RunUserInterface (or Main) function like normal channels. If it does not, it is a "pure" screensaver and appears only in the list of screensavers and not on the Roku Home screen. If it has a RunUserInterface (or Main) function in addition to RunScreenSaver, then it will appear both in the list of screensavers and on the Home screen.


I'm pretty sure you can't launch a screensaver via ECP. ECP launch calls the app's Main function. You could, I suppose, write a normal channel that blanks the screen when it is run, and that would be launchable via ECP.

--Mark
0 Kudos