I am currently working on a clicker game and need to save and restore the Strings and ints between when i shut down the app and when i restore it again, instead of losing all progress. Any suggestions on how to accomplish this? @mmdeveloper10
Hello,
To store some strings and ints while closing your app:
inside onDestroy() method
(if you haven't implemented it yet, it is like onCreate() you just write: )
Code:
@Override
protected void onDestroy() {
super.onDestroy();
//Put the below code here
}
Code:
SharedPreferences prefss = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor ed = prefss.edit();
ed.putString("mystring", mystring);
ed.putInt("myint", myint);
ed.commit(); //or ed.apply(); if you want to write them and wait for the write to be completed
Now to read them:
inside onCreate() (after super):
Code:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
mystring = prefs.getString("mystring", defaultStringValueHere); //defaultStringValueHere is a String (whatever you like), for the default value if the preference "mystring" is not found
myint = prefs.getInt("myint", defaultIntValueHere);
where mystring is the String that you want to store
and myint is the int that you want to store.
You can store as many as you like strings and ints (But the more you store, the more time to write and read them all your app will take)
If you still need help feel free to ask
Not sure how to explain the problem so I have attached my whole main method in pictures. I don't think it is finding any saved preferences on onCreate() because if i change the default int value it only changes to that instead of what the value was before exiting the app. Any idea what could be the cause of this?
mmdeveloper10 said:
Hello,
To store some strings and ints while closing your app:
inside onDestroy() method
(if you haven't implemented it yet, it is like onCreate() you just write: )
Code:
@Override
protected void onDestroy() {
super.onDestroy();
//Put the below code here
}
Code:
SharedPreferences prefss = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor ed = prefss.edit();
ed.putString("mystring", mystring);
ed.putInt("myint", myint);
ed.commit(); //or ed.apply(); if you want to write them and wait for the write to be completed
Now to read them:
inside onCreate() (after super):
Code:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
mystring = prefs.getString("mystring", defaultStringValueHere); //defaultStringValueHere is a String (whatever you like), for the default value if the preference "mystring" is not found
myint = prefs.getInt("myint", defaultIntValueHere);
where mystring is the String that you want to store
and myint is the int that you want to store.
You can store as many as you like strings and ints (But the more you store, the more time to write and read them all your app will take)
If you still need help feel free to ask
Click to expand...
Click to collapse
Hello,
Your strings a, b, c, e, f, g, h, i, j, k are empty ( Am I right? ).
So it tried to find a preference with an empty keyname, and write a preference with an empty keyname, it failed.
You need to have a, b, c, e, f, g, h, i, j, k hold a String value (different for each variable)
e.g.
Code:
String a = "a";
String b = "b";
...
Hope it helps
Ok, I tried changing them all to real Strings like you said and still no progress. Anything else that could be the problem?
mmdeveloper10 said:
Hello,
Your strings a, b, c, e, f, g, h, i, j, k are empty ( Am I right? ).
So it tried to find a preference with an empty keyname, and write a preference with an empty keyname, it failed.
You need to have a, b, c, e, f, g, h, i, j, k hold a String value (different for each variable)
e.g.
Code:
String a = "a";
String b = "b";
...
Hope it helps
Click to expand...
Click to collapse
Sorry but the code seems good to me. For me it is working.
Are you setting anywhere else in your code these variables?
Try moving the int w,z,... above the onCreate method.
In what phone are you testing?
Which Android Version?
Is it a custom ROM?
Can you share the logcat to see if it reports anything?
I am testing on an htc one m8 running Android 5.0.1 with no roms and I don't think the variables are used anywhere else I'll send the logcat when I get home
Sent from my HTC6525LVW using XDA Free mobile app
OK I fixed the issue, it turns out that I was closing the app by going into multitasking vs pressing the back key and now it is working fine thanks a lot
Sent from my HTC6525LVW using XDA Free mobile app
Ok
dillenge said:
OK I fixed the issue, it turns out that I was closing the app by going into multitasking vs pressing the back key and now it is working fine thanks a lot
Sent from my HTC6525LVW using XDA Free mobile app
Click to expand...
Click to collapse
Hello again,
If you want to save your app's state also by going into multitasking (pausing the app), then place the code in the onPause and onResume, instead of onDestroy and onCreate, respectively, as shown below
Code:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefss = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor ed = prefss.edit();
ed.putString("mystring", mystring);
ed.putInt("myint", myint);
ed.commit(); //or ed.apply(); if you want to write them and wait for the write to be completed
}
Code:
@Override
protected void onResume() {
super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
mystring = prefs.getString("mystring", defaultStringValueHere); //defaultStringValueHere is a String (whatever you like), for the default value if the preference "mystring" is not found
myint = prefs.getInt("myint", defaultIntValueHere);
//Restore game state here instead of onCreate (onResume is called after onCreate, so you need to call the related methods for your game to restore the state here)
}
ok, here's my situation -- my bedroom door is a powered pocket door, that the motor speed controller, relay board, & open/close button pushes are all handled by an arduino uno. the problem with the uno was/is, after going thru a cycle or two, it would randomly & mysteriously reset, usually with the door open (thus not closing the door, & the uno thinking the door was closed). anyway, long story just a little bit longer, my solution was/is to use a raspberry pi 3 b, connected via usb. now, when the uno receives a button push, it sends an "O" thru the usb to the pi. upon receiving the "O" from the uno, the pi responds with an "o" to the uno, waits for a period, then sends a "c" to the uno, waits a couple of seconds, then resets the uno by closing & reopening the serial port on the usb. in this configuration, everything has ran perfectly & smoothly for months now..... then i just had to add remote control. first i tried directly adding an ir remote to the pi using lirc, & though i could program in my remote just fine, i could never get the code to work properly. then i just thought, "add another arduino!" i have half a dozen laying around, so i added one. the new arduino has only one function (with 3 buttons - left, right, & button push -- which is essentially the same as the wired button push in its operation). i added the 2nd arduino by connecting it to another usb port, & modified my python code to accommodate the extra button pushes. thing is, the extra python code has added serious lag to operation -- now, whether you push a button on the remote, or the wired button, it can take anywhere from 2 to 5 seconds for the system to respond, whereas without the remote, it was virtually instantaneous. any help as to why, or how i could simplify the code would be greatly appreciated.
Code:
import os
import serial
import time
port1 = serial.Serial("/dev/ttyUSB1", baudrate=115200, timeout=2.0) #door controller arduino
port2 = serial.Serial("/dev/ttyUSB0", baudrate=115200, timeout=2.0) #IR remote arduino
if (port1.isOpen() == False):
port1.open()
if (port2.isOpen() == False):
port2.open()
while True:
a=0
def countdwn(y):
while y >= 1:
y -=1
if (port1.isOpen() == False):
port1.open()
rcv=port1.read(1) #this sequence is started by pushing a button on the wall to open the door. the arduino
if rcv != "" : # sends an "O" thru the usb to the raspberry pi & then waits for reply
if rcv != "\n":
if rcv != "\r":
if rcv != "s":
print rcv
if rcv == "O": # recieve open command from arduino that controls door
port1.write("o") # send open command to same arduino
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav') #play star trek holodeck door sound
time.sleep(2)
port1.close()#this line & the following line are added to reset the door controller arduino
port1.open()
time.sleep(2) #delay to walk thru door - actually takes about 3.5 seconds - if shortened,
# the arduino will be in the middle of the reset when the close command comes
port1.write("c") # send door close command to door controlling arduino
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close() #same as before -- to reset arduino
port1.open()
time.sleep(1)
#beginning of IR section follows
if (port1.isOpen() == False):
port1.open()
if (port2.isOpen() == False):
port2.open()
rcv2=port2.read(1)
if rcv2 != "" :
if rcv2 != "\n":
if rcv2 != "\r":
print rcv2
if rcv2 == "P": #essentially the same routine as the above button push sequence
port1.write("o")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
time.sleep(2)
port1.write("c")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
time.sleep(1)
y = 30
if rcv2 == "R": #simple open & leave door open by pushing the right arrow key on IR remote
port1.write("o")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
#time.sleep(2)
if rcv2 == "L": #same as above but close door
port1.write("c")
port1.write("\n")
os.system('aplay -q /home/pi/holodoor2.wav')
time.sleep(2)
port1.close()
port1.open()
countdwn(30)
port1.close()
port2.close()
time.sleep(1)
y = 30
WIP: "De-bloating" the Chromecast with Google TV. Let's get rid of those ads!
Those who like the Chromecast with Google TV UI or wouldn't move a finger to change it can stop reading this thread and move onto something else. No need to leave any comment, xda-developers wasn't created for people who don't like a challenge
If you don't like the UI because the massive ads it brings, then you are welcome to keep reading and help if you can!
METHOD A (EASY) - GET RID OF THE ADS ON THE MAIN SCREEN WITH AN ALTERNATIVE LAUNCHER
Install ATV Launcher or Wolf Launcher and disable the default launcher via adb. If you find a nice wallpaper that's a good option.
METHOD B (HARD) - USE THE APPS ONLY MODE WITH GOOGLE ASSISTANT AND NO ADS
Go to Settings > Accounts & Sign-in > Select your ac**** > Enable "Apps only mode".
Now you removed 90% of the ads but it seems like Google doesn't want us to use the Apps only mode, so they decided to put some hurdles in place disabling google assistant and play store access . We can fix it partially, so keep reading
Get a shortcut to the Google Play Store
Sideload and install this app (created with this site) and now you'll be able to access Google Play Store opening the app even on Apps Only Mode (see here how it looks)
How to use Google Assistant even on Apps Only mode - WIP
Go to Settings > All Apps > "See All apps" > "Show System apps" > Google > click on "Uninstall Updates" & "Disable". Now sideload and install this version
Now you can use Google Assistant to open a YouTube video or ask questions such as "what's the weather today?", but you can't give a voice command to open an app... It will go through a loop trying to setup google assistant.
Get rid of the 3 shows/movies ads that you still get in screen even when Apps Only mode is enabled - WIP
I tried disabling some apps that came pre-installed but I didn't manage to get rid of those last ads. I guess it's integrated within the launcher so we might need to mod it (if possible), live with it or just go back to Option 1 and use a different launcher.
Any help would be appreciated
METHOD C (HARD) - SWITCH TO THE ORIGINAL ANDROID TV LAUNCHER
I disabled the Google TV Launcher com.google.android.apps.tv.launcherx via adb. Then I sideloaded the Android TV Home and Lenback Launcher apks and tried to launch the main activity of those apps but it didn't work. Some activities could be launched but not the main one.
Any help would be highly appreciated as that's what I really wanted to do.
titooo7 said:
METHOD C (HARD) - SWITCH TO THE ORIGINAL ANDROID TV LAUNCHER
I disabled the Google TV Launcher com.google.android.apps.tv.launcherx via adb. Then I sideloaded the Android TV Home and Lenback Launcher apks and tried to launch the main activity of those apps but it didn't work. Some activities could be launched but not the main one.
Any help would be highly appreciated as that's what I really wanted to do.
Click to expand...
Click to collapse
This would be the ideal solution.
The funny thing I notice about this one, however, is that it actually appears to already be installed.
On play store, there are two versions of launcher. The "original":
https://play.google.com/store/apps/details?id=com.google.android.tvlauncher
And "too much advertising":
https://play.google.com/store/apps/details?id=com.google.android.apps.tv.launcherx
But what is interesting about them, is that the original one is apparently already installed on ALL of my Sabrina dongles, as well as on all of my other Android TV devices. The "too much advertising" reports as being installed on the Sabrina dongles, but as incompatible with all of the others.
It seems odd that the original launcher would fail to load while 3rd party launchers would work. I wonder if the packages are somehow being blacklisted?
96carboard said:
But what is interesting about them, is that the original one is apparently already installed on ALL of my Sabrina dongles, as well as on all of my other Android TV devices. The "too much advertising" reports as being installed on the Sabrina dongles, but as incompatible with all of the others.
It seems odd that the original launcher would fail to load while 3rd party launchers would work. I wonder if the packages are somehow being blacklisted?
Click to expand...
Click to collapse
I might be wrong, but I'd swear the original launcher wasn't preinstalled.
In any case if you sideload a shortcut maker then you can launch several activities from the original launcher, but not the main one.
I'm wondering if that could be because I'm missing some other apks that the original launcher need... but it's been a long time since I tried to do "dev" stuff in Android to remember how to diagnose the problem correctly.
titooo7 said:
I might be wrong, but I'd swear the original launcher wasn't preinstalled.
In any case if you sideload a shortcut maker then you can launch several activities from the original launcher, but not the main one.
Click to expand...
Click to collapse
To be a little more precise, I haven't actually checked on the devices themselves, but rather play store *claims* that they're installed.
I'm wondering if that could be because I'm missing some other apks that the original launcher need... but it's been a long time since I tried to do "dev" stuff in Android to remember how to diagnose the problem correctly.
Click to expand...
Click to collapse
If you're missing something it depends on, I'd expect some kind of related crash to be pretty obvious in the logcat.
What's the output of this?
pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
96carboard said:
If you're missing something it depends on, I'd expect some kind of related crash to be pretty obvious in the logcat.
What's the output of this?
pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
Click to expand...
Click to collapse
Just for your information I sideloadet the following 3 apks as those are installed on my Shield TV (which I don't have access to at the moment, btw) and I thought it mgiht be needed:
com.google.android.tvlauncher 2.2.2-328601804
com.google.android.leanbacklauncher 90.11.5-100-444-948
com.google.android.tvrecommendations 2.2.1-32444148
Unfortunately I couldn't find the apk for the following two, (I wonder if that's why I can't get the original launcher to work):
com.google.android.leanbacklauncher.recommendations 90.1.2.-100-4013131
Anyway, after that I ran the adb command you mentioned in two different ways:
With launcherx (CC GTV launcher) disabled: (pm disable com.google.android.apps.tv.launcherx)
Code:
pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
4 activities found:
Activity #0:
priority=1 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tungsten.setupwraith.RecoveryActivity
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=false exported=true directBootAware=false
taskAffinity=com.google.android.tungsten.setupwraith targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=1 flags=0x220 privateFlags=0x0 theme=0x7f1201e6
screenOrientation=-1 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
processName=com.google.android.tungsten.setupwraith
taskAffinity=com.google.android.tungsten.setupwraith
uid=10035 flags=0x38c83e45 privateFlags=0x24081108 theme=0x7f1201fb
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/product/priv-app/SetupWraithPrebuiltSabrina/SetupWraithPrebuiltSabrina.apk
seinfo=default:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tungsten.setupwraith
deviceProtectedDataDir=/data/user_de/0/com.google.android.tungsten.setupwraith
credentialProtectedDataDir=/data/user/0/com.google.android.tungsten.setupwraith
enabled=true minSdkVersion=28 targetSdkVersion=28 versionCode=2018111433 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #1:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.leanbacklauncher.MainActivity
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0013 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true directBootAware=false
taskAffinity=com.google.android.leanbacklauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x234 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0xf3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.leanbacklauncher.LauncherApplication
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0014 nonLocalizedLabel=null icon=0x7f020095 banner=0x0
className=com.google.android.leanbacklauncher.LauncherApplication
processName=com.google.android.leanbacklauncher
taskAffinity=com.google.android.leanbacklauncher
uid=10096 flags=0x38c8be44 privateFlags=0x24001000 theme=0x7f0c00d7
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.leanbacklauncher-hX6rlapmfhRj8H_uIDOWAg==/base.apk
seinfo=default:targetSdkVersion=24
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.leanbacklauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.leanbacklauncher
credentialProtectedDataDir=/data/user/0/com.google.android.leanbacklauncher
enabled=true minSdkVersion=21 targetSdkVersion=24 versionCode=1011102100 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #2:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tvlauncher.MainActivity
packageName=com.google.android.tvlauncher
enabled=true exported=true directBootAware=false
taskAffinity=.TvLauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x230 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.tvlauncher.application.TvLauncherApplication
packageName=com.google.android.tvlauncher
labelRes=0x7f120029 nonLocalizedLabel=null icon=0x7f0f0000 banner=0x7f08012d
className=com.google.android.tvlauncher.application.TvLauncherApplication
processName=com.google.android.tvlauncher
taskAffinity=com.google.android.tvlauncher
uid=10097 flags=0x38c83e44 privateFlags=0xc001000 theme=0x7f130007
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.tvlauncher-f03AUa5fOy1TItsfaki7Iw==/base.apk
seinfo=default:targetSdkVersion=29
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tvlauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.tvlauncher
credentialProtectedDataDir=/data/user/0/com.google.android.tvlauncher
enabled=true minSdkVersion=26 targetSdkVersion=29 versionCode=1010900817 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=true
Activity #3:
priority=-1000 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.android.tv.settings.system.FallbackHome
packageName=com.android.tv.settings
enabled=true exported=true directBootAware=true
taskAffinity=com.android.tv.settings targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=0 flags=0x220 privateFlags=0x0 theme=0x7f1100c0
screenOrientation=-1 configChanges=0x40002ff7 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.android.tv.settings
labelRes=0x7f100366 nonLocalizedLabel=null icon=0x7f080201 banner=0x7f0800e0
processName=com.android.tv.settings
taskAffinity=com.android.tv.settings
uid=1000 flags=0x28c8be45 privateFlags=0xc501068 theme=0x7f1101d2
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/system/priv-app/TvSettingsGoogle/TvSettingsGoogle.apk
resourceDirs=[/vendor/overlay/ChromecastTvSettingsGoogleOverlay.apk]
seinfo=platform:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user_de/0/com.android.tv.settings
deviceProtectedDataDir=/data/user_de/0/com.android.tv.settings
credentialProtectedDataDir=/data/user/0/com.android.tv.settings
enabled=true minSdkVersion=29 targetSdkVersion=29 versionCode=1 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=true
allowsPlaybackCapture=true
With launcherx enabled:
Code:
sabrina:/ $ pm query-activities -a android.intent.action.MAIN -c android.intent.category.HOME
5 activities found:
Activity #0:
priority=2 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.apps.tv.launcherx.home.HomeActivity
packageName=com.google.android.apps.tv.launcherx
labelRes=0x7f13025a nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true directBootAware=false
taskAffinity=com.google.android.apps.tv.launcherx targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x230 privateFlags=0x0 theme=0x7f1401cc
screenOrientation=-1 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.apps.tv.launcherx.LauncherX_Application
packageName=com.google.android.apps.tv.launcherx
labelRes=0x7f1302c0 nonLocalizedLabel=null icon=0x7f0f0001 banner=0x7f0801b0
className=com.google.android.apps.tv.launcherx.LauncherX_Application
processName=com.google.android.apps.tv.launcherx
taskAffinity=com.google.android.apps.tv.launcherx
uid=10037 flags=0x38c83ec5 privateFlags=0xc081018 theme=0x7f14000e
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.apps.tv.launcherx-eKBpKZxlpw3mSx4rrG8L3w==/base.apk
seinfo=default:privapp:targetSdkVersion=29
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.apps.tv.launcherx
deviceProtectedDataDir=/data/user_de/0/com.google.android.apps.tv.launcherx
credentialProtectedDataDir=/data/user/0/com.google.android.apps.tv.launcherx
enabled=true minSdkVersion=28 targetSdkVersion=29 versionCode=5244 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
networkSecurityConfigRes=0x7f170003
category=7
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=true
Activity #1:
priority=1 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tungsten.setupwraith.RecoveryActivity
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=false exported=true directBootAware=false
taskAffinity=com.google.android.tungsten.setupwraith targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=1 flags=0x220 privateFlags=0x0 theme=0x7f1201e6
screenOrientation=-1 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.google.android.tungsten.setupwraith
labelRes=0x7f110043 nonLocalizedLabel=null icon=0x0 banner=0x0
processName=com.google.android.tungsten.setupwraith
taskAffinity=com.google.android.tungsten.setupwraith
uid=10035 flags=0x38c83e45 privateFlags=0x24081108 theme=0x7f1201fb
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/product/priv-app/SetupWraithPrebuiltSabrina/SetupWraithPrebuiltSabrina.apk
seinfo=default:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tungsten.setupwraith
deviceProtectedDataDir=/data/user_de/0/com.google.android.tungsten.setupwraith
credentialProtectedDataDir=/data/user/0/com.google.android.tungsten.setupwraith
enabled=true minSdkVersion=28 targetSdkVersion=28 versionCode=2018111433 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #2:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.leanbacklauncher.MainActivity
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0013 nonLocalizedLabel=null icon=0x0 banner=0x0
enabled=true exported=true directBootAware=false
taskAffinity=com.google.android.leanbacklauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x234 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0xf3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.leanbacklauncher.LauncherApplication
packageName=com.google.android.leanbacklauncher
labelRes=0x7f0a0014 nonLocalizedLabel=null icon=0x7f020095 banner=0x0
className=com.google.android.leanbacklauncher.LauncherApplication
processName=com.google.android.leanbacklauncher
taskAffinity=com.google.android.leanbacklauncher
uid=10096 flags=0x38c8be44 privateFlags=0x24001000 theme=0x7f0c00d7
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.leanbacklauncher-hX6rlapmfhRj8H_uIDOWAg==/base.apk
seinfo=default:targetSdkVersion=24
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.leanbacklauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.leanbacklauncher
credentialProtectedDataDir=/data/user/0/com.google.android.leanbacklauncher
enabled=true minSdkVersion=21 targetSdkVersion=24 versionCode=1011102100 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=false
Activity #3:
priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.google.android.tvlauncher.MainActivity
packageName=com.google.android.tvlauncher
enabled=true exported=true directBootAware=false
taskAffinity=.TvLauncher targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=2 flags=0x230 privateFlags=0x0 theme=0x0
screenOrientation=0 configChanges=0x3 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
name=com.google.android.tvlauncher.application.TvLauncherApplication
packageName=com.google.android.tvlauncher
labelRes=0x7f120029 nonLocalizedLabel=null icon=0x7f0f0000 banner=0x7f08012d
className=com.google.android.tvlauncher.application.TvLauncherApplication
processName=com.google.android.tvlauncher
taskAffinity=com.google.android.tvlauncher
uid=10097 flags=0x38c83e44 privateFlags=0xc001000 theme=0x7f130007
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/data/app/com.google.android.tvlauncher-f03AUa5fOy1TItsfaki7Iw==/base.apk
seinfo=default:targetSdkVersion=29
seinfoUser=:complete
dataDir=/data/user/0/com.google.android.tvlauncher
deviceProtectedDataDir=/data/user_de/0/com.google.android.tvlauncher
credentialProtectedDataDir=/data/user/0/com.google.android.tvlauncher
enabled=true minSdkVersion=26 targetSdkVersion=29 versionCode=1010900817 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=2
usesNonSdkApi=false
allowsPlaybackCapture=true
Activity #4:
priority=-1000 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=true
ActivityInfo:
name=com.android.tv.settings.system.FallbackHome
packageName=com.android.tv.settings
enabled=true exported=true directBootAware=true
taskAffinity=com.android.tv.settings targetActivity=null persistableMode=PERSIST_ROOT_ONLY
launchMode=0 flags=0x220 privateFlags=0x0 theme=0x7f1100c0
screenOrientation=-1 configChanges=0x40002ff7 softInputMode=0x0
lockTaskLaunchMode=LOCK_TASK_LAUNCH_MODE_DEFAULT
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
ApplicationInfo:
packageName=com.android.tv.settings
labelRes=0x7f100366 nonLocalizedLabel=null icon=0x7f080201 banner=0x7f0800e0
processName=com.android.tv.settings
taskAffinity=com.android.tv.settings
uid=1000 flags=0x28c8be45 privateFlags=0xc501068 theme=0x7f1101d2
requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
sourceDir=/system/priv-app/TvSettingsGoogle/TvSettingsGoogle.apk
resourceDirs=[/vendor/overlay/ChromecastTvSettingsGoogleOverlay.apk]
seinfo=platform:privapp:targetSdkVersion=28
seinfoUser=:complete
dataDir=/data/user_de/0/com.android.tv.settings
deviceProtectedDataDir=/data/user_de/0/com.android.tv.settings
credentialProtectedDataDir=/data/user/0/com.android.tv.settings
enabled=true minSdkVersion=29 targetSdkVersion=29 versionCode=1 targetSandboxVersion=1
supportsRtl=true
fullBackupContent=true
HiddenApiEnforcementPolicy=0
usesNonSdkApi=true
allowsPlaybackCapture=true
@titooo7 I'm only getting to messing with this now. (unplugged my Shield as it was the only way to actually start using the CC GTV)
Did you manage to get the vanilla AOSP ATV launcher working?
Has anyone got to the bottom of this ? Ability to lunch the original android tv luncher would be really nice.
I tried myself by installing android tv launcher, android tv services as well as leanback launcher using play store (no need for side loading)...
then tried lunching it by
Code:
am start -n "com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity" -a android.intent.action.MAIN -c android.intent.category.HOME
It seems to be lunching but it seems to gets killed instantly.
Logcat.
Code:
11-01 02:07:56.898 3840 4772 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:07:56.951 3840 3869 I ActivityManager: Start proc 22253:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:07:57.171 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.171 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.171 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.172 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-leash#0
11-01 02:07:57.185 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}})/@0xcaf715a - animation-bounds#0
11-01 02:07:57.233 22253 22300 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22253
11-01 02:07:57.248 3840 3856 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:07:57.314 3840 4772 I ActivityManager: Process com.google.android.tvlauncher (pid 22253) has died: vis TOP
11-01 02:07:57.315 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.317 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.318 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: ae75549 Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.320 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.321 3552 4208 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.327 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.335 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.335 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:07:57.335 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{aaac495 token=Token{9f8fc4c ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t175}}}#0
11-01 02:07:57.749 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{638f47f u0 com.google.android.tvlauncher/.MainActivity t-1 f}
11-01 02:09:39.384 3840 3856 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:09:39.429 3840 3869 I ActivityManager: Start proc 22323:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:09:39.673 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.673 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.673 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.675 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.675 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-leash#0
11-01 02:09:39.687 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}})/@0x9d7a9e9 - animation-bounds#0
11-01 02:09:39.706 22323 22370 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22323
11-01 02:09:39.723 3840 4772 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:09:39.769 3840 7719 I ActivityManager: Process com.google.android.tvlauncher (pid 22323) has died: vis TOP
11-01 02:09:39.772 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.774 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.774 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.776 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.776 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.777 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.782 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{c3f9cc3 token=Token{9628072 ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t176}}}#0
11-01 02:09:39.787 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: 1c63bed Splash Screen com.google.android.tvlauncher#0
11-01 02:09:40.224 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{a9ef97d u0 com.google.android.tvlauncher/.MainActivity t-1 f}
11-01 02:17:43.561 3840 28544 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:19:00.929 3840 28544 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:19:20.315 3840 3869 I ActivityManager: Start proc 22503:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:19:20.613 22503 22550 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22503
11-01 02:19:20.637 3840 28544 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:19:20.714 3840 4099 I ActivityManager: Process com.google.android.tvlauncher (pid 22503) has died: vis+99 TOP
11-01 02:19:20.719 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:20.721 3552 4339 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:20.735 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:20.735 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{1813e0b token=Token{85c39da ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t178}}}#0
11-01 02:19:21.140 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{c7f9785 u0 com.google.android.tvlauncher/.MainActivity t-1 f}
11-01 02:20:15.881 3840 4099 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.tvlauncher/.MainActivity} from uid 2000
11-01 02:20:16.007 3840 3869 I ActivityManager: Start proc 22873:com.google.android.tvlauncher/u0a87 for activity {com.google.android.tvlauncher/com.google.android.tvlauncher.MainActivity}
11-01 02:20:16.263 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.263 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.266 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.266 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-leash#0
11-01 02:20:16.274 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Surface(name=AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}})/@0x51f7386 - animation-bounds#0
11-01 02:20:16.318 22873 22927 E AndroidRuntime: Process: com.google.android.tvlauncher, PID: 22873
11-01 02:20:16.337 3840 9090 W ActivityTaskManager: Force finishing activity com.google.android.tvlauncher/.MainActivity
11-01 02:20:16.393 3840 3856 I ActivityManager: Process com.google.android.tvlauncher (pid 22873) has died: vis+99 TOP
11-01 02:20:16.395 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.397 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.397 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.399 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.400 3552 3831 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.406 3552 3588 D SurfaceFlinger: onHandleDestroyed, markLayerPendingRemovalLocked: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, layerRemoved, make not visible: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: AppWindowToken{bd0b9ac token=Token{58dcb5f ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t180}}}#0
11-01 02:20:16.407 3552 3552 D SurfaceFlinger: mLayersPendingRemoval, release: cb48eb0 Splash Screen com.google.android.tvlauncher#0
11-01 02:20:16.838 3840 3861 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{c017fe u0 com.google.android.tvlauncher/.MainActivity t-1 f}
PS. To open play store go to apps, click on random app category > then go to settings > apps > recent > google play store > open.
It will open google play store UI where you can see all apps released by google, then you can install android tv launcher, leanback and android tv services.
@yaro014 I'd get rid of my two shields if I could get this sorted
METHOD A (EASY) - GET RID OF THE ADS ON THE MAIN SCREEN WITH AN ALTERNATIVE LAUNCHER
Install ATV Launcher or Wolf Launcher and disable the default launcher via adb. If you find a nice wallpaper that's a good option.
This is what I did:
1. Install Wolf launcher
2. Open Wolf launcher (opens fine)
3. Use ADB to disable stock - pm disable-user --user 0 com.google.android.apps.tv.launcherx
However, as soon as I do 3), the next time I press home, I am not able to navigate around Wolf anymore.
Did I miss a step?
Thank you.
OK, so far in order to use an alternative launcher without problems this is what I had to do:
(1) Install alternative launcher -
Wolf launcher etc
(2) disable stock launcher -
Code:
adb shell
pm disable-user --user 0 com.google.android.apps.tv.launcherx
pm disable-user --user 0 com.google.android.tungsten.setupwraith
(3) Press home button and select the alternative launcher as home app
However, I have tried various versions of the original Leanback Launcher to no avail.
Does anyone have the definitive list of framework/dependancies that Leanback launcher needs?
Thanks
H
Leanback launcher complains a lot about permissions.
Android TV home launcher complains about core services not being installed, however when installed it's being removed on reboot.
There might be some trickery enabled within the system to prevent loading Android TV launcher etc.
seapoint said:
OK, so far in order to use an alternative launcher without problems this is what I had to do:
(1) Install alternative launcher -
Wolf launcher etc
(2) disable stock launcher -
Code:
adb shell
pm disable-user --user 0 com.google.android.apps.tv.launcherx
pm disable-user --user 0 com.google.android.tungsten.setupwraith
(3) Press home button and select the alternative launcher as home app
However, I have tried various versions of the original Leanback Launcher to no avail.
Does anyone have the definitive list of framework/dependancies that Leanback launcher needs?
Thanks
H
Click to expand...
Click to collapse
i follow your step to set atv launcher as my home app, but the physical youtube button on remote didn't work anymore since that, i just wonder disabling com.google.android.tungsten.setupwraith maybe affect that? do u have the same issue?
Here's a challenge. Create a editor for the cloud based google Watchlist to add additional "ways to watch"for individual tv shows. Like mx player. That would be so sweet.
titooo7 said:
Get rid of the 3 shows/movies ads that you still get in screen even when Apps Only mode is enabled - WIP
I tried disabling some apps that came pre-installed but I didn't manage to get rid of those last ads. I guess it's integrated within the launcher so we might need to mod it (if possible), live with it or just go back to Option 1 and use a different launcher.
Any help would be appreciated
Click to expand...
Click to collapse
Here's an idea...
I've seen some screenshots from users in countries where the Chromecast with Google TV is not sold yet. It appears that they don't have the "For you" tab, and instead are having an "Home" tab which looks a bit sleeker. See: My new chromecast 2020 does not have the FOR YOU tab as normally seen in many review videos - Chromecast Community (google.com) . (Though it might not be the same for everyone, as Chromecast with Google TV: "For you", "Movies", "Shows" not showing up - Chromecast Community does have a giant suggestion bar despite having an "Home" tab.)
I've also completely disabled Internet access to my CCwGTV at my router-level. Of course, it's not that useful. But I can observe that once the launcher is loaded, I do have an "Home" tab instead of a "For you" tab. Until I re-enable Internet access...
Could it be possible to block Internet access to the launcher only? And/or trick it to think it's running on a device located in an unsupported country? While leaving all other applications correctly establish the current location -- i.e. still want Netflix to know that I'm at home and offers me what's available here, and not somewhere around Antarctica.
Alexandre-P said:
Could it be possible to block Internet access to the launcher only?
Click to expand...
Click to collapse
A domain specific block may work. Not sure what software you have running on your router, but if openwrt, it wouldn't be too much of a challenge to filter domains based on the device making the request, and even if its making the DNS request direct to 8.8.8.8, you can redirect that at the router back to 192.168.1.1
I had a little bit of progress on my Chromecast, I used TechDoctor UK's launcher manager to be able to choose a new launcher. I side loaded the old Leanback Launcher but for Amazon Fire. I can get it to load right the first time but then when I go back it gets stuck..
Could we take the official Leanback or Android TV home and just change the name so it appears as a different app?
titooo7 said:
WIP: "De-bloating" the Chromecast with Google TV. Let's get rid of those ads!
Those who like the Chromecast with Google TV UI or wouldn't move a finger to change it can stop reading this thread and move onto something else. No need to leave any comment, xda-developers wasn't created for people who don't like a challenge
If you don't like the UI because the massive ads it brings, then you are welcome to keep reading and help if you can!
METHOD A (EASY) - GET RID OF THE ADS ON THE MAIN SCREEN WITH AN ALTERNATIVE LAUNCHER
Install ATV Launcher or Wolf Launcher and disable the default launcher via adb. If you find a nice wallpaper that's a good option.
METHOD B (HARD) - USE THE APPS ONLY MODE WITH GOOGLE ASSISTANT AND NO ADS
Go to Settings > Accounts & Sign-in > Select your ac**** > Enable "Apps only mode".
Now you removed 90% of the ads but it seems like Google doesn't want us to use the Apps only mode, so they decided to put some hurdles in place disabling google assistant and play store access . We can fix it partially, so keep reading
Get a shortcut to the Google Play Store
Sideload and install this app (created with this site) and now you'll be able to access Google Play Store opening the app even on Apps Only Mode (see here how it looks)
How to use Google Assistant even on Apps Only mode - WIP
Go to Settings > All Apps > "See All apps" > "Show System apps" > Google > click on "Uninstall Updates" & "Disable". Now sideload and install this version
Now you can use Google Assistant to open a YouTube video or ask questions such as "what's the weather today?", but you can't give a voice command to open an app... It will go through a loop trying to setup google assistant.
Get rid of the 3 shows/movies ads that you still get in screen even when Apps Only mode is enabled - WIP
I tried disabling some apps that came pre-installed but I didn't manage to get rid of those last ads. I guess it's integrated within the launcher so we might need to mod it (if possible), live with it or just go back to Option 1 and use a different launcher.
Any help would be appreciated
METHOD C (HARD) - SWITCH TO THE ORIGINAL ANDROID TV LAUNCHER
I disabled the Google TV Launcher com.google.android.apps.tv.launcherx via adb. Then I sideloaded the Android TV Home and Lenback Launcher apks and tried to launch the main activity of those apps but it didn't work. Some activities could be launched but not the main one.
Any help would be highly appreciated as that's what I really wanted to do.
Click to expand...
Click to collapse
Do you have a list of apps that can be uninstalled via adb? It would be very useful. Thank you.
So it turns out that the easiest solution to this problem is to buy an ADT-3, which is what CCGTV really should have been. Unlocked and actually up to date (Android 12).
96carboard said:
So it turns out that the easiest solution to this problem is to buy an ADP-3, which is what CCGTV really should have been. Unlocked and actually up to date (Android 12).
Click to expand...
Click to collapse
what's an ADP-3?
pddc said:
what's an ADP-3?
Click to expand...
Click to collapse
ADT-3, apologies.
Just picked one of these up, thanks to your head start, I've got the homescreen looking like this:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I have it running in "Apps Only mode" regular mode looks almost the same, but with a non-functioning Google Assistance icon at the top.
Here is what I did:
Set-up the device as normal, and ran all updates.
Uninstalled all apps I didn't want, and sideloaded the apps I wanted.
Created ATV icon apps for Play Store and Movies as suggested above.
Blocked " androidtvlauncherxfe-pa.googleapis.com " using a pi-hole.
Cleared data for the Google TV app.
Restarted the device, and set to apps-only mode.
Ads are blocked the same way as on the NVIDIA SHIELD. Took me a few times of resetting to pin down the ip address to block. The big error message isn't ideal, I would be fine with the "generic" ads like the SHIELD, but it's better than the alternative.
As far as I am able to tell, everything works as without issue, including casting, except Google Assistant which is fine by me.
Only other downsides: there is sometimes a noticeable delay returning to the homescreen (on boot, returning from settings, rarely when switching apps), and you cannot open the "quick-menu" on the home screen to move apps. The only way to rearrange apps would be to uninstall.
Might not be the most elegant solution, but nothing deal breaking IMHO. Certainly good enough for my uses.