(zte-campbell)
With all those hapazard notes, it can't be a good Android experience. It requires hacks that the OEM put everywhere in the system for it to operate in a barely passable manner.
And uh, why did I get this? Because I hoped the bootloader would be unlockable and I could install Mobile NixOS. Sadly ZTE on many of their phones disables anything fancy with the bootloader. That's just not good.
I'm not sure it applies to other "feature phones" from ZTE, or any other vendors, but at least here you can install Android apps. But to do so you will need some way or another to install apps that is not the built-in apk installer. E.g. adb install
will work. So the steps are
- Enable developer mode
- adb install the desired app
Oh, but how do you launch it? There is no launcher! As far as I can tell there is no integration with any foreign apps in the built-in launcher. It's an hardcoded list of apps. Read Changing the launcher if you're curious, but it won't work well due to assumptions from the vendor.
So in the end only launching intents through adb
works. An enterprising individual could create a custom launcher app that hooks in the android accessibility layer (adb shell settings put secure enabled_accessibility_services packagname/servicename
) and listens to input events and hijack some to launch an alternative launcher menu. Probably also by spying if the main menu is shown in some form or other.
But that's way too much work for not that much benefit.
Apps suck without a touchscreen. And it's not an Android issue really. It's a development issue by app developers. They are tested only on touch input, so it's hidden from them that some actions are completely fenced-off from being accessible through the keyboard.
It's just like with other Android phones, but instead of tapping on the Build number under About phone, you use the OK button at the center of the navigation cluter.
The developer menu will be buggy to scroll through.
adb shell dumpsys package | grep Activity
The built-in launcher can be disabled with this command:
adb shell pm disable-user com.zte.slauncher
And re-enabled with this one
adb shell pm enable com.zte.slauncher
Installing a launcher is left as an exercise to the reader. Note that many launchers act weird if not entirely broken because of how the menu navigation is handled. Also note that the OTA updates may be cause of the weirdness I observed.
adb shell input tap 20 20
Check the default
adb shell wm density
A good setting IMO:
adb shell wm density 128
ADB will need to be active.
adb install org.fdroid.fdroid_*.apk
Allowing it to install packages (Android 10+) via ADB
Important here as the Z2335L does not allow changing the unknown sources setting.
adb shell appops set org.fdroid.fdroid REQUEST_INSTALL_PACKAGES allow
adb shell appops query-op REQUEST_INSTALL_PACKAGES allow
Since there is no way to launch the app from the OEM menu, launch it with this command:
adb shell am start -n org.fdroid.fdroid/.views.main.MainActivity
Use scrcpy
! With it you can see some of the abstractions start to unravel. E.g. drag the status bar at the top and... THERE'S A FULL ANDROID NOTIFICATION TRAY!
It seems that soft keys are handled either by the input subsystem, or apps themselves. Apps that don't handle the soft keys will get the last soft keys shown, and their actions. It's not only a cosmetic issue. Sometimes the key mapping is changed. Though most of the time it seems it will be KEYCODE_SOFT_LEFT
and KEYCODE_SOFT_RIGHT
.
Sometimes the accept or OK button, the center button, is totally unusable, caused by these mappings. A workaround is to open the volume menu, which will force OK as the main softkey action. Though once this is done, both side softkeys are now KEYCODE_UNKNOWN
instead of the respective mapping.
This is one of the main breaking points; without stable input in all apps, there is no way to make the experience work well.
Search "391180B1108Z2335LV1.0.0B11" in your favourite search engine. It looks totally legit. Though AFAICT there is no way to install this to the device.
I say this looks legit because it matches 100% with what I was able to observe.
This was super helpful. Thank you!