text:
How to decrypt a phone in bootloop mode
I have an encrypted android running LineageOS 15. When it said that there was an OTA update, I choose to download and install this new update. In the first moment it seemed to be alright but when the phone restarted itself the recovery (TWRP) appeared again... and again...
It is in a bootloop mode and there is nothing I can do without loss my data and I can't do nothing to copy my date due to the full disk encryption.
The encryption was made, I think, with the fingerprint and even if it was done with a password I cannot decrypt the entire disk (with the command adb shell twrp decrypt) because my TWRP version doesn't support the decryption.

As you TWRP installed you can simply download and install an older version of LineageOS and check if it solves the bootloop.

I think the bootloop was caused by the full disc encryption... since my twrp version (for huawei p8 lite 2017) doesn't support decryption, neither with the last version it can't read the system and data partitions

I had same problem and I'll write tips how i fixed this situation.
You can fix it by just dirty-flash any rom.
Flash any rom by using external storage or by adb sideload(Advanced -> ADB Sideload -> Run "adb sideload ROM-FILENAME.zip")
You will see lock screen after reboot.After login,you can decrypt data in TWRP.
If you see some error/crash after android bootup due to dirty-flash,install magisk and create backup by Migrate and restore it after clear data.

This can get complicated easily. Dirty flashing was alright before encryption became a common thing. Since encryption became common dirty flashing can easily result in a failed boot (past experience with a Redmi and a OnePlus device). So we have a situation where a successful boot is already failing, and dirty flash solved nothing. The easiest thing to do is to somehow get a encryption-supported recovery to boot, decrypt data, extract it into PC, and reset data partition.

I fixed my encrypted Redmi Note8(MIUI) by this method.TWRP(and other recoveries too) couldn't decrypt data and no backup.Then I dirty-flashed Custom ROM(Treble GSI) and boot it up.After first login,I succesed to restore my data again.

Searching a lot over the web I saw this question and by reading the entire post, and in particularly this answer https://android.stackexchange.com/a/176124/77853 I brought back my phone to life and without losing anything !
What I had to do was (as suggested in the answer) repair the /data partition plus the /system partition !

(FDE) full disk encryption does not encrypt any other partitions than userdata partition. (TWRP >  Wipe > Advance Wipe > Data > Repair File System) cannot fix anything on encrypted partition and is strongly not recommend for userdata (except you are fine with data loss) - in fact it only can work on /system because system partition is not encrypted at all

Hey you could have downloaded the lower version of twrp. My phone also went into bootloop when i flashed twrp version 3 but when i flashed version 2 it worked perfectly. But anyway since you have found the solution ,to anyone who reads this answer you must first flash lower versions of twrp.

I tried with the last one and it didn't work.... How could it work with a older one ? The issue was that the entire disk was encrypted, system and data partions as well... And, in my opinion, installing the new versione of Lineage wasn't possible because it can't read the files, unless you decrypt the phone (from android's settings) before flash the update...


text:
Debug APK with Android Studio without breakpoints
I'm trying to reverse engineer a newspaper app.
I've decompiled it with apktool v2.4.1 apktool d APK_NAMEadded to android:debuggable=true in AndroidManifest.xml and changed one boolean method's return value to always true.
Then I recompile it apktool b APK_FOLDER -o APK_NAME I don't know if it signs it and if the signing issue causes the problem.
Then I go to Android Studio -> debug or profile an apk and USB debug it with my mobile device connected. After the app runs un my mobile i using it's UI when I go to the section I changed and press to read an article it suddenly loops and jams. I don't know what causes that loop so I don't know where to put the breakpoint(s)
What I need is to see the running code while the app runs or better to see the stack trace while the loop occurs. is that possible?
I'm running the whole thing under Kubuntu Linux 20.04 x64
Thank you

Android Studio is not designed to work on APKs you don't have the Java source code of.
When it comes to debugging apps without sources I recommend to check out the tool Frida. It allows to manipulate apps at run-time.
Using frida-trace you may be able to identify what methods are called when the app "loops and jams".
For advanced manipulation you can also checkout the tool "Objection" which bases on Frida.
On a non-rooted device you may have to include the frida-gadget (a special native library) into the app to be able to connect to the app:
https://fadeevab.com/frida-gadget-injection-on-android-no-root-2-methods/
Alternatively Objection provides an "APK patcher" that does this injection for you: https://github.com/sensepost/objection/wiki/Patching-Android-Applications

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
my mobile data is not working after i reseted my sumsung galaxy note 3
I wanted to format and reset my Samsung galaxy note 3 and I did a factory reset but after that my phone is having a hard time to identify the network provider(took a very long time to sign into the network automatically) and the mobile data is not working. I tried making it on airplane mode and then restarting it multiple times but it is still the same. please let me know if you have any suggestions and thanks in advance.

Usually after booting up the first time you should get a configuration SMS from your provider. This SMS can be delayed, just wait for about an hour leaving the phone connected to the mobile network. Or check the web page of your mobile network provider on the APN settings you have to configure. Then you could do this manually.

Reset network setting again. Manually enter APN setting. For that
Go to setting / connection  / mobile network / Access point name. Manually enter apn details.
Turn off data saver. Go to setting / connection / data usage / data saver.
Make sure you have good network signal. Other wise reinsert sim.
Update mobile software.
Make sure data roaming is off. setting /connections  mobile network / data roaming.
Temporary remove from network and again reconnect to network.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How do I verify that the USB debugging key fingerprint is correct?
When I try to enable USB debugging on my Android device, I am prompted with this message:

The computer's RSA key fingerprint is:
FE:35:23:34:...

I see the public key in ~/.android/adbkey.pub
How can I verify that this RSA key fingerprint is correct on the computer's commandline?
Can I use adb?

You are using an USB connection. How likely is an interception attack on an USB cable?

@Robert Although the chances are slim, they are not zero. Given that Android developers chose to deliberately show a key fingerprint, it seems only logical to verify it before accepting, no?  Are you saying verification is impossible?

Per this answer:
awk '{print $1}' < ~/.android/adbkey.pub | base64 --decode | md5sum


text:
Screen Lock Service as a Device Administrator
Background:

I was looking at the device administrators of my phone in the settings and saw a device administrator called "screen lock service". It's description is "Activating this administrator will allow the app Google play services to perform the following operations: set password rules".

A previously unsettled question is found here.
I searched the net for the apk file of the application but could not find one. So as per suggestions, I ran
adb shell dumpsys package  resolvers | sed -n /android.app.action.DEVICE_ADMIN_ENABLED/,/:/p

The output for the above code was:
  android.app.action.DEVICE_ADMIN_ENABLED:
    438a74 com.motorola.demo/.admin.DemoModeAdminReceiver
    2acd3de com.google.android.gms/.auth.managed.admin.DeviceAdminReceiver
    36b5d24 ch.deletescape.lawnchair.ci/ch.deletescape.lawnchair.gestures.handlers.SleepMethodDeviceAdmin$SleepDeviceAdmin
    42aae3e com.google.android.gms/.tapandpay.admin.TpDeviceAdminReceiver
    8efd08d com.google.android.gms/.kids.account.receiver.ProfileOwnerReceiver
    9b4f242 com.google.android.gms/.mdm.receivers.MdmDeviceAdminReceiver
    a9980b6 com.oasisfeng.greenify/.DeviceAdmin
    b5771b7 com.google.android.gm/com.android.email.SecurityPolicy$PolicyAdmin
  com.motorola.internal.intent.action.INETCONDITION_REPORT:

The data for the code is quite unsettling for the fact that none seem to correspond to screen lock service.

For reference, I am using Moto G5 Plus (not rooted, stock build with no customizations)
Also note that, I own another same device which is rooted and runs Pixel-Experience (Android 10 latest build) and unfortunately it does not have the Screen Lock Service.
An insight/breakdown for this application is helpful.

The data for the code is quite unsettling for the fact that none seem to correspond to screen lock service.

I can see why it confused you, believing that there would be an app or a service running with the same name on the system which you would have been able to identify quite easily, but could not.
The device administrator "Screen Lock Service" is a device administration service offered by Google Play Services (com.google.android.gms) app.
This is how I approached the problem:

I searched for a device with this problem. I managed to get my hands on a Xiaomi Redmi Note 5 running Android 9 having this administrator service enabled.

I went ahead with disabling Screen Lock Service administrator. Side by side, I had logcat running to grep any entry beginning with "admin".

Through logcat I got the following output on disabling the said administrator.
Device admin ComponentInfo{com.google.android.gms/com.google.android.gms.auth.managed.admin.DeviceAdminReceiver} removed from user 0

com.google.android.gms/com.google.android.gms.auth.managed.admin.DeviceAdminReceiver is one among the many device administrators mentioned in the output of the command adb shell dumpsys package  resolvers | sed -n /android.app.action.DEVICE_ADMIN_ENABLED/,/:/p and is also mentioned in your output.

I decided to verify further by pulling the apk of Google Play Services and decompiling it. In the decompiled AndroidManifest.xml file, the relevant entry for this device administrator was this:
<receiver android:description="@string/auth_device_admin_receiver_description" android:enabled="false" android:exported="true" android:icon="@drawable/product_logo_security_shield_color_24" android:label="@string/auth_device_admin_receiver_label" android:name="com.google.android.gms.auth.managed.admin.DeviceAdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN" android:process="@string/common_persistent_process" chimera:autoEnabled="false">
         <meta-data android:name="android.app.device_admin" android:resource="@xml/auth_password_complexity_device_admin"/>
         <intent-filter>
             <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
             <action android:name="android.app.action.DEVICE_ADMIN_DISABLED"/>
         </intent-filter>

I used the information in step 6 to get three things:

the label of the device administrator in res/values/string.xml:
<string name="auth_device_admin_receiver_label">Screen lock service</string>

the description of the device administrator in res/values/string.xml:
<string name="auth_device_admin_receiver_description">"<b>Allow apps to determine the quality of the device's screen lock</b>"</string>

the icon for the device administrator in res/drawable-xhdpi/product_logo_security_shield_color_24.png:

As for disabling it. While you can disable it, a reboot re-enables it automatically without user intervention. It appears to me that com.google.android.gms.persistent process is responsible for this. Not only is that process mentioned in the Manifest, but also during logcat it was the one after which auto-enabling of Screen Lock Service took place. Relevant logcat of post boot process:
 [ 10-01 19:59:17.126  3058: 7809 W/.gms.persisten ]
 Long monitor contention with owner lowpool[10] (7811) at void java.lang.ref.FinalizerReference.add(java.lang.Object)(FinalizerReference.java:56) waiters=0 in java.util.Map bggj.a() for 980ms

[ 10-01 19:59:17.163  3441: 7374 I/Auth     ]
[AuthManaged, PasswordComplexityHelperImpl] Updating password complexity components state.

[ 10-01 19:59:17.163  3441: 7374 I/Auth     ]
[AuthManaged, PasswordComplexityHelperImpl] Enabling com.google.android.gms.auth.managed.ui.SetNewPasswordActivity

[ 10-01 19:59:17.164  3441: 7374 I/Auth     ]
[AuthManaged, PasswordComplexityHelperImpl] Enabling com.google.android.gms.auth.managed.admin.DeviceAdminReceiver

Summary

Screen Lock Service is a device administrator feature of Google Play Services app

If you disable it, Google Play Services app would re-enable it without seeking your authentication.

Its purpose is not documented on Google Support / Answers as of now.

(+1) Good answer and conclusions. Further questions to answer: You mentioned that you pulled the apk of Google Play services. Is the apk from the same device, or is it pulled from an online resource such as apkmirror etc. ? If it is pulled from an online resource, it seems that the service should be provided on all devices....but it isn't the case (Any reasons/speculations why?). And finally, is the Redmi Note 5 from Asia-Pacific region (A question which may inspect whether the service is region specific)

1.) Didn't get a +1 yet. Haha. 2) APK from the same device. 3) Yes, from Indian region.  4) I don't know why only some devices have this problem. More so, it is prevalent more in Moto devices, per basic search results from web.

you'll probably be able to see my +1 on SEDE after a week, but by then i may be able to upvote :P I will most probably award the bounty here (so that makes +10)... can we break down the service (lock screen service) further? or maybe just tell how I can see the break down of that specific service? (what the answer provided is that the admin enabled application/service is implemented by Google Inc, but i want to dissect the service itself

Any updates on this?

Sorry. No updates on it.

I think this is now documented officially at https://developers.google.com/android/reference/com/google/android/gms/auth/managed/password/PasswordComplexityServiceClient


text:
Create link to custom URI-scheme on home-screen (eg. zoomus://zoom.us/...) to start app
Is there a way to create an app-icon-link to a non HTTP-url and place it on the home screen?
I'm trying to add an icon to auto-join a zoom-meeting.
https://marketplace.zoom.us/docs/guides/guides/client-url-schemes
The idea are to pass parameters like meeting id and password to the app Zoom, that uses the URI: zoomus://
Eg. zoomus://zoom.us/join?confno=123456789&pwd=xxxx
I have done similar on iOS / iPadOS using the Shortcut app.
UPDATE: Maybe it can be done with Google Action Blocks (https://play.google.com/store/apps/details?id=com.google.android.apps.accessibility.maui.actionblocks)
Or this:
https://play.google.com/store/apps/details?id=com.kebab.UrlShortcut
Thanks for advice!

Does this answer your question? Creating a custom launch action on the menu

No, it seems to work well with files and browser url's (http and https).

But not for custom URL's...

I think Tasker (or other automation apps) which is mentioned in the duplicate link might work, though I haven't tested it. On the other hand, could you mention what you have tried from the duplicate link?

The App URL Shortcut (https://play.google.com/store/apps/details?id=com.kebab.UrlShortcut) works excellent!


text:
Google Play Services deleted, how to repair without Play Store?
I somehow destroyed Google Play Services while clearing cache and search history because the Play Store kept hanging up indefinitely when trying to download apps. My Google account then kept pinging the phone for Play Services updates; to remedy the loop, I had to remove my Google account.
Now I can't access Play Store to attempt repair of Play Services because it requires I sign in. I try that, the phone starts the process of adding a Google account. Can't add my Google account because Play Services is gone. Catch 22.
I downloaded from Play Store a couple of "Fix Play Services" apps on a friend's phone, extracted the APK, and Bluetoothed to my Xperia. Fix Play Services says Play Services is not installed.
When posting this question, this post came up:
Install Google Play Services without Google Play Store. This appears to be a very similar issue, a bigger problem to recover than I thought. I've never rooted a phone.
It's a Sony Xperia Z3v (D6708). Android Version 5.1.1. It is a Verizon phone, I have data and web access.
Is Play Services recoverable/reinstallable via internet? Without Play Store access?

I once had a similar problem but in my case, it's because I tampered with the system. Have you tried downloading Play Services from an external site? If the Play Services you downloaded don't work correctly (in my case, it gave me the "force stopped" error), you need to install a new firmware which will fix all bugs.
Link to Play Services package (APK) on APK Mirror: https://www.apkmirror.com/apk/google-inc/google-play-services.
Use the flash stock firmware method if the above fails.

Link to stock firmware: https://androidfilehost.com/?fid=95784891001602913
How to flash firmware full guide: https://flash-guide.com/download-flash-official-stock-rom-sony-xperia-z3v-d6708/

Hope this will help.

Thank you for taking the time to so thoroughly answer, I appreciate you.  I'll try that tomorrow morning. Was hoping Play Services Base apk would be available somewhere.  Thank you

Download ApkPure. Install it. Open it. Search google play services install it. Done!


text:
Keeping Gboard open while multitasking
I'm using an Android 10 Samsung device that supports multitasking using pop-up windows. I'm trying to type on the main window with a YouTube window in the foreground. The keyboard keeps closing whenever I use the YouTube pop-up. Is there any way to keep it open?

Well there is a way.. but even if you have your keyboard always open, you'll have to press on the text box of the other app after using youtube to bring it in focus.
If you still want to have it opened always then you can use "Automate" app..
Just set a gesture(quick tiles or button combination) to trigger the "always on keyboard" and set the action..
Comment if you have any doubt..

Thanks. Is there any way without a third-party app, though?

With gboard? I don't think so.. There are other keyboards which offer this feature but then you'll lack the cool functions of gboard..

Which keyboard offer that functionality?

Do you have a link to that automate app?

@Slion I don't remember which keyboards I was talking about (hacker's keyboard maybe, not sure). It's been 3 yrs. Anyway, here's the Automate app: https://play.google.com/store/apps/details?id=com.llamalab.automate

Thanks, though I can't find that always on keyboard action.

@Slion use ADB shell command action, adb shell input keyevent 108 read more here. There's a lot to play around in that app. Also, check this for Hacker's keyboard thing. If it was helpful, an upvote would be great.


text:
PIN screen and PIN have changed on Huawei P8 Lite with Android 7
When I accessed my phone yesterday, the PIN screen had changed (presumably through an automatic software update). I put in my pin and it didn't recognize it.  I have not changed my pin. Luckily, I have fingerprint control set up so I can use my phone.  My worry is that sometimes the fingerprint recognition doesn't work. If this happens, I have lost my phone!
I have searched for info on the PIN changing by itself but Android/Huawei are not admitting to this happening. It is suspicious that the PIN screen has changed at the same time as the PIN changed. Does anyone have any information on this please?

If you have activated "Google Find My Device" as device administrator on the device you can remotely change your PIN using the Google Find My Device web site.

Hi Robert.  I guess I didn't set find my device up on the phone as I have tried to find it and it can't be found.  I'll give it another go but I am not holding out any hope.

PIN does not change automatically. And to remove pin, you need old pin.
You are able to access phone. So first take backup of the phone and restore phone. This will remove pin from phone. After that you can set pin. If you are not able to access phone then you may loss data.
Some application and software can recover lost pin.

The phone recently started asking me for a Password.  It did not accept my Pin.  I used my fingerprint to access the phone.  I have in the meantime been speaking to Huawei support who think the software may have become corrupted.  I did not set a password as I use a Pin.  I HAVE NOT FORGOTTEN MY PIN - I am just not being given the chance to enter it.  Sadly, as it has now been three days, the phone requires a password or pin and won't !et me access it using fingerprints.  If no-one has any ideas then it looks like a factory reset.  Just please don't keep telling me that I have forgotten my pin

Google find my device did not find it.

Find my device can remotely unlock device.

Hi Alix, I have tried to "find" it but it can't be found so I can't unlock it .  But thanks for the suggestion.  What I really need is a way of making it give me back the pin entry screen instead of this password entry one.  Unless anyone knows if there is a default password.  I've tried the usual like 0000 and 1111 and even "password" in desperation!

If you forgot pin then PUK can unlock phone. Have you inserted sim inside mobile or not. If sim is not inserted than pin will not be asked.

Tried the PUK code but it didn't unlock the phone.


text:
cannot access phone directories using adb shell after upgrading to android 11
I recently upgraded to android 11. Ever since I did that I cannot adb shell into any of the directories inside the /mnt directory:
adb shell
taimen:/ $ cd mnt
taimen:/mnt $ ls
androidwritable  appfuse  asec  expand  installer  media_rw  obb  pass_through  product  runtime  sdcard  secure  user  vendor
taimen:/mnt $ cd sdcard
/system/bin/sh: cd: /mnt/sdcard: Permission denied

What do I do to regain my access?

On Android 11 sdcard path seem to have changed. The path /mnt/sdcard still exists but via adb you don't the permissions to access this path.
But there are alternatives. On the an emulator running Android 11 I can see for example path /sdcard. This path however is a soft link to /storage/self/primary which again is a soft-link to /storage/emulated/0.
Hence you have the following alternatives:

/sdcard
/storage/self/primary
/storage/emulated/0


text:
Is it a requirement for an Android Go image to use f2fs format for data partition?
I am currently performing performance testing using PCMark on a 2GB Ram Android Tablet but changing its OS (Android 10 vs 10 go). I have noted a considerable increase in storage performance (around 40%) and around 5% increase in CPU and Graphics processing performance.
I have been trying to find other differences between the two systems and found that the Android 10go image uses f2fs for data partition whilst Android 10´s one uses EXT4. This would explain the increase in storage performance...
Is using a f2fs format a requirement for an Android 10 go image?
My main goal is to confirm if it makes sense to make the switch.

You can use f2fs with almost any recent ROM. Recent kernel builds are also built with f2fs support.

Thanks, but is this a must for getting improved performance on Android Go?

Sorry I haven't seen such requirement documented anywhere. Also, as per my limited knowledge, F2FS was basically designed to be flash friendly (to reduce wear), not performance friendly. So under certain conditions EXT4 (or other filesystems) may perform better than F2FS.


text:
How can I change pdf page color on Android?
I downloaded a few ebooks in pdf and I want to change the white pages to a color easier on my eyes. Adobe Acrobat's accessibility options seem to be missing on Android and I don't like inverted/night mode. Which apps let you change page color when reading pdf on your phone?


text:
Dynamic binding of ports of a process. How to change to fixed port?
There's an app on my phone which binds dynamically to local ports over 31000(since my local port range is 31000 to somewhere around 60000). I want the application to bind on port 25 (smtp) because the port is not monitored or controlled by the network. I have searched the internet for methods to do this and  I have come across the iptables method in which it said I must do port redirection but that's for servers.
Any help would be greatly appreciated.

The information you provided isn't enough to answer the question. Except that you are trying to bind to a port under 1024 which requires root privileges. But apps cannot run as root user. At maximum, on rooted devices, apps can run native processes with root privileges. Or you may write a special Java VM and execute it from commandline with root. Port forwarding/redirection is rather simple solution.

Yes my phome is rooted. Port redirection would work if i was running a server on my device but in my case the program does the selection and binding of ports. By Java VM do you mean Java virtual machine? How does that really work? I once thought that maybe tunnelling traffic from that app through an internal proxy server running on port 25 would work. Is the ingoing port of the proxy server the same as the outgoing of it to the remote server? Or is there another way i can mask the source port of the socket?


text:
How do I recover deleted text messages and attachments on Samsung Galaxy Note10+?
While attempting to delete an SMS ad on Samsung Galaxy Note10+, I did not notice that every message in my log was checked and I deleted my entire text history.
How do I recover deleted text messages and picture attachments on it?

Without root permissions (to extract the SMS database), hardly possible. For some background, see this Q&A – a little aged, but basically still valid.


text:
Disabling Chrome tab groups in Chrome v85
My phone (Samsung S7 running Android 8.0.0) recently updated to Chrome version 85, and with it came tab groups.
I am sure this is a welcome thing for many, but I rarely have more than 8 tabs open at any time. Thus the ability to group tabs makes little sense for me.
Unfortunately, I can't seem to avoid it. When holding on a link, "Open in new tab" has become "Open in new tab in group", and there is no option to open it just as a separate tab.
This makes my regular tab cleaning a lot more cumbersome, as now I suddenly have two or three groups where I want to remove one or two tabs each, rather than just four tabs I want to close.
Is there a way to remove tab grouping, or at least a way to hide it away so that I don't have to bother with it during casual internet browsing? At the very least, I can't find anything even remotely relevant in the settings, and a rudimentary internet search has only provided news of the feature, not any details on removing it.

Paste chrome://flags/#enable-tab-groups in address bar and Tab groups options, choose default and re-launch Chrome by tapping the option at bottom. Tested on Chrome version 85.0.4183.127 (if that doesn't work for you try disable option).
( If you type Chrome://flags, you will get a scary warning, ignore that, changing flag properties is harmless-you can always reset flags, if you wish)

Nice! Didn't work on the first relaunch, but the second attempt was a success! I wonder why more (or even most) of these flags aren't available through the usual settings menu. Seems like exactly the kind of things a settings menu is for. Instead they have hidden them away somewhere one won't find it unless one already knows where it is.

They are experimental features, no guarantees. Don't be surprised if this workaround fails in subsequent versions. You need to keep playing with flags and search internet for solutions

Well, at least I know where to start looking next time.

Had to use 'disable' and relaunch twice to successfully disable tab groups.

With the help of beeshyams' answer, I ended up disabling 4 sections to get mine back to "normal."

Tab Grid Layout
Tab Groups
Tab Groups Continuation
Tab Groups UI Improvements


text:
Is it possible to use virtual camera on android phone?
Well i know it's possible via Emulators or vm , but my question is about  an actual android phone
is it possible to do something like manycam on windows ?
i've been searching internet for almost two days and can't find any useful information even either if it's possible or not

This question seems similar to: How to stream an image into camera source trough ADB?

The question is not clear.. I am assuming that you want to use your 1st phone's camera in 2nd phone(correct me if I'm wrong). For this you can use 1st phone as ip camera and with the 2nd phone you can recieve the footage sent by the 1st camera

@Aayush no buddy , i want to use a video as a camera input

the screenshots and description here looks convincing..  https://play.google.com/store/apps/details?id=com.visicommedia.manycam&hl=en   It seems to be a little complex to use

I only could do that on android emulator running on Windows system


text:
Tecno Camon 15 pro stuck in bootloop
My Tecno Camon 15 Pro is stuck in bootloop after I was trying to patch boot.img file.
Phone Specs:
My phone's processor is MediaTek Helio P35 (MT6765) & it was running Android 10 build CD8-H655BCD-Q-GL-200708V314. Full phone specs here if it helps. Bootloader of the phone is already unlocked.
What did I do?
I downloaded ROOT.zip  for my phone from HalabTech and extracted boot img. I patched it and flashed it onto my phone.
What phone's condition is?
It rebooted and since then it just getting rebooted again and again. It vibrates, shows Tecno logo for a few seconds and turns off. I cannot turn it off neither can I boot into recovery or fastboot. Its totally stuck and I get different errors from SP Flash Tool but not once which are as follows while trying to flash a ROM file I grabbed somewhere on the internet:

It does not have any other issues and I know it was the boot.img flashing which did this. So what should I do? Any help is highly appreciated!

I had the same problem on my Tecno Spark 3 a few months back. Unfortunately, despite the 100s of tutorials on how to flash a custom rom on Tecno phones, it's just not possible. What I remember doing is to flash the original files to the phone using the after_sales_service.exe tool. It still shows the bootloader unlocked message but at least the phone worked.

Try flashing using this tool: https://www.getdroidtips.com/download-tecno-flash-tool/

run a scan(on sp flash tool) and see if emmc is functional


text:
ADB Wifi loses connection when device's screen turns off - Realme 7 - Android 10
I work on Android Studio while using actual device for ADB using ADB over tcp/ip through command prompt (no additional software). But, this new device gets offline the moment screen turns off. I've tried turning off everything related to Battery Optimization or Wifi. Although, there's no such specific setting to let the Wifi awake after device sleeps like my old phone Huawei.
I'd also posted this over the official forum of Realme about a week ago but no one has replied so far. Link - Wifi gets turned off after screen lock - ADB issues.
So, Device's status in ADB devices goes to offline the very moment screen locks and then I've to do the process of ADB Wifi all over again and I don't want to use cable all the time because it affects battery through that 0.5/0.9 mA slow charging through motherboard. It is already slow enough that battery gets discharged even after continuous charging. I use ADB Wifi for more than 14 hours per day hence I need a stable solution.
So, my question is how to keep the device's Wifi on even after screen lock? I know it's device specific because of the custom changes to the ROM but I really need something.

adb disconnection might be related to a lock screen (adb disabled for security reasons). Alternatively is your device rooted? If yes you can disable charging on most devices so you could connect your device via USB without charging.

I have a windows batch file that just calls adb and touches the top left pixel of the screen once every 2 seconds. Leave that running in another command prompt window and your device will never sleep. One could do this with wakelocks and proper code and all that, but this method works (as long as there's not an active UI element at position 1,1, which there isn't usually. One could send a mouse-motion or something I guess but this works and is v.simple.
@echo off
:start
adb shell input tap 1 1
powershell -nop -c "& {sleep 2}"
echo | set /p="."
goto :start

I run the device farm in our company based on ADB wifi and I had similar problem.
I ended up with creating an app to keep wake-lock all the time to prevent device sleep (it has to have foreground service, otherwise it gets killed too, and it has to have turned off battery optimization for the same reason).
Now I am online nearly all the time.

Have you published your app or its source code?

Sorry, I cannot do this, as it was made during my work hours and hence it's property of the company I am employed in. But the app is pretty simple and shouldn't be hard for android developer to make his own.

It's a bug in the rom in some kinds of android devices, apparently.
This fixed it for me:
Link: https://github.com/Genymobile/scrcpy/issues/1382
Here's what you have to do:
Go to Usb preferences in developer options, and change it from "data transfer" or anything else to "no data transfer". Tell me if this fixed it for you! Sending this here for any onlooker.


text:
Samsung phones bootloader unlock
I have a samsung tablet gt-n8000 and I want to flash a custom rom . Should I first unlock the bootloader?  if yes , how to do that ? fastboot commands does not work anyway on my tablet so I can not use fastboot oem unlock.

From my experience Samsung devices usually don't work this way and they are not flashed via fastboot but via odin. Unlocking and user data erase happens after flashing the ROM on first boot. Search for a tutorial exactly for your device and ignore ever other tutorial!

Thanks Robert . But I found nothing about bootloader unlock for my device . There are  some tutorials about flashing custom roms for my device but nothing about bootloader unlock

As I said usually you just flash the ROM and on next boot you are getting the option to unlock the device.

Under developer option, Enable OEM unlock.
First find custom rom as per your mobile model. Connect mobile to computer having developer kit. Root the mobile and flash rom.

My android version is 4.1.2 and it has no OEM Unlock option . meanwhile , fastboot commands does not work . It does not recognize my device .

Install proper usb driver as per mobile. Enable usb debugging.


text:
Bundled Microsoft apps keep getting updated even though they are disabled
My phone came with several non-uninstallable "factory apps". Three of these are Word, Excel, PowerPoint. Even though I have disabled these, and uninstalled any updates to save space, the updates keep getting re-installed.
How can I find out why this happens and how can I prevent this? The updates take more than 500 MB of space, which I don't want to waste on something I don't use.

More details:

This is a Samsung S7 running Android 8.0.
I disabled updates for these specific apps in Google Play (I had to temporarily re-enable them to be able to do this). I disabled all auto-updates in the Samsung Galaxy Store. There are no other app stores on this phone.
The apps stay disabled, yet updates are still installed for them, taking up storage.
These are the only factory apps that get forcibly updated. Other factory apps that I disabled don't get updated.

Not sure if it helps, but you could try to uninstall them via ADB using adb shell "pm uninstall --user 0 <packageName> (yes, that works for pre-installed apps without root – it basically removes them for the specified user only). As the package manager would no longer list them for your user then, play store should not see them either and thus no longer update them.

@Izzy Do I understand that in order to try this, I must install Android developer tools, which should contain ADB, connect the phone to the computer, then do this? I'm getting really desperate about this ...

Not necessarily the entire developer tools, see: Is there a minimal installation of ADB? Basically, depending on your OS, you'd need just 3-10 files of the bundle, which you can eg find here.


text:
Modify shared_prefs XML file from adb shell
My Tolino Vision 4 HD e-book reader has no vi, vim.tiny or any other text editor executable, so to edit files I have to "adb pull" it to my PC, modify it there and "adb push" it back.
This takes too long for quick tinkering. "adb push" also sets new user+group to the file (root:root) instead of the original permissions.
Is there an in-built cli tool to modify application shared_prefs XML files while inside adb shell? (Add a new property and value, modify existing property's value, delete property)

I already patched adb to allow root access, so permissions are not a problem. I'm just asking for a convenience tool.

Sorry but if you expect an answer you should at least name the ebook reader you are talking about. Are you sure it runs on Android? Can you install Android app to it? Have you root access on the device? Please edit your questions and add those deatils.

By "in-built cli tool", did you mean from the Android device itself? Some custom ROMs provide an in-built Terminal app, but to access other app's internal data (including shared preferences), the device needs to be rooted due to the nature of Android's app sandboxing.


text:
How do I print using my phone?
I own a Redmi Note 5 Pro. Before the last update (a few months ago). I could print using my phone after connecting it to my printer with a cable. After the recent upgrade, I'm unable to do so, because I get a message that says that I can only wirelessly print now. Here's the screenshot.

Is there a way for me to be able to print using my phone connecting it with a printer still or is this change from a setting that allowed me to connect a wire with the printer and print permanently gone? If there's a way to get the printer to still work with my phone, that'd be great for my studies.
P. S. My printer doesn't support wireless printing. It is an EPSON L3100 printer. I've tried apps such as Epson iPrinting and NokoPrint (it's just a highly rated app). Neither of these worked.
Here's a screenshot of the details of my phone


text:
Forgotten parental controls password for Fire HD10
We have forgotton the parental control password for our Amazon Fire HD10.  I entered the incorrect parental controls password more than 5 times but was never given any other options to try to reset.  So I went with the option to deregister the device from our Amazon account.  this was successful however the next step was to re sync the device but to do this I need wifi to be on and to turn on I'm still being asked for the parental control password.  I have also tried to reset to factory default settings on the device but that also seems to require the parental controls password. I don't know what to do next, any suggestions?

Hard reset your Fire HD10

Power off
Press vol up and power key at the same time for around 5-6 seconds
Reset it..

Follow this video if you're stuck somewhere.. https://www.youtube.com/watch?v=ayvWAyftosw
Comment if you're still stuck


text:
Understanding why an app-supported link opens in the browser first
This is primarily an attempt at understanding what's going on (and whose fault the shitty UX is ). I don't think there's anything I can do to fix it and that's fine, I'm okay with that.
The situation
I have a subscription to the New York Times. I have their app installed, and I'm subscribed to their email newsletter. When I open one of these emails, they contain a link to the article at the end, which looks like https://nl.nytimes.com/f/newsletter/[id]. This obviously contains an article reference, as well as probably some tracking code for my subscription.
When I click that link in Gmail...
What I would love to happen is:
Android's app selector dialog pops up and asks me whether I'd like to open this in the NYT app, or one of my browsers.
The app is fine, but sometimes I might want to have it in the browser instead for various reasons.
What I would expect to happen is:
That it just jumps directly to the NYT app.
Not my prefered solution, but I think my use case is bit unusual and just going to the app is probably what most users would expect after installing the app.
What actually happens:
Android's app selector dialog pops up and asks me to select one of my browsers (but not the NYT app!). After selecting one, the browser pops up for a split second, then makes way for the NYT app.
What... the hell!?
That makes no sense, is a bad experience and provides no benefits!
Whose fault is this? Does the app not register the correct URL intent? If so, any theories as to why they didn't?
Or is this a flaw in Android's intent system and the app did the best it could?
Or do the browsers do anything they're not supposed to? (I have Chrome and Flynx installed, btw. With intentionally none of them selected as a 'default' -- I want to get the selector modal each time.)

Check the NYT's app info from the Settings, then navigate to "Open by default", and then "Supported links". That's the list of URLs that can be opened directly by the app.

@AndrewT. Was a bit harder to find on my Android version (MIUI), but I managed and it indeed only registers www.nytimes.com.

I guess the NYT app registers itself as URL handler for https://nytimes.com URLs, but not for https://nl.nytimes.com. This is why only the browsers can be selected.
Then nl.nytimes.com page redirects to the main nytimes.com page, and the NYT app can take over.

And all this probably happens in the name of tracking, so that the NYT newsletter people see what content people like most.

You're right, it registers itself for www.nytimes.com, but not nl.nytimes.com.

Interesting idea, that they might just do this for tracking. You would think that the tracking could also occur through the app, but you're probably right that the newsletter and the app departments operate separately, and might not wanna talk to each other...


text:
Copy and paste string to Excel (android app)
auto detect character class or formula class, I tried to copy and paste text to Googlesheet (android app) and excel (android app), googleapp (image on the right) will auto detect as character class, but excel (image on the left) in formula class shows an error.

[][]

If you are not typing a formula, then you should not use = as the first character in Excel. If you are typing a formula, then make sure that you have typed it correctly. As stated here:

The #NAME? error signifies that something needs to be corrected in the syntax, so when you see the error in your formula, resolve it. Do not use any error-handling functions such as IFERROR to mask the error

To solve your issue, type a single quote ' before =, or replace the equal sign with a single quote. Excel will recognizes that you are not typing a formula and will show the value you entered.


text:
Is it possible to run Android on a Raspberry Pi?
With smartphones and the Raspberry Pi both being ARM devices, is it possible to run Android on a Raspberry Pi?

Yeah ofc.. Check this out... Google Android on your Raspberry Pi with emteria OS

Yes.
If you happen to have a Raspberry Pi 4 4GB or 8GB, you can try out an unofficial build of LineageOS 17.1 for Raspberry Pi 4. One of my favorite YouTubers Leepspvideo made a tutorial on installing Android 10 LineageOS on a Raspberry Pi.

There are at least two routes for running Android on Raspberry Pi. You need a Pi 3 or later for both of them:
Non-commercial
KonstKANG provides a variety of images, but the RPi-specific drivers included are limited to non-commercial use, presumably by the author. Raspberry Tips has an article on the installation process, as does BeeBom.
Rasperry Pi 3

LineageOS Android 7.1 to Android 10.

Raspberry Pi 4 (and 400)

AOSP Android 12L to 14
LineageOS for Android 9 to 13 and Android TV 9 to 13.

Raspberry Pi 5

AOSP Android 14

Other hardware
KonstKANG also provides TWRP images, and a variety of Android-related images for older devices.
Commercial
Emteria provides commercial support for Android for kiosk and IoT applications, but has a free starter account that does not time out, clearly as a sales and goodwill generator. They provide a user guide for installing AOSP Android with their drivers (up to Android 14) using the Raspberry Pi Imager application. Little Bird Electronics also has a guide.
The limit on the free account is that it is limited to three devices. Emteria also don't provide all versions of Android: currently, they seem to offer versions 7, 11, 13 and 14.
Other hardware
Emteria also support various other SBCs, plus Intel NUCs via Intel Celadon. The latter is a route to running Android on x86 and x86-64 hardware, should you want to.


text:
Reliability of Type C vs. micro-USB vs. SD card
I don't use cloud services. I just manually backup my phone using a rotation of a few SD cards I own, and when I have access to a family computer, I transfer what's in those cards to the computer, in order to "double" backup.
(Not the best approach but works fine for me.)
A few years ago (pre-type-C being the norm), I tried to depart from SD cards (just for convenience, so that I wouldn't have to remove and insert them to/from my SIM tray all the time) and gave some flash drives and external HD's (via an OTG micro-USB cable) a chance, as they're more "plug and play".
Me being careful in general with my equipment and their cables, and always mindful about properly ejecting flash/hard drives, it's safe to say I've almost never experienced corrupted files on a computer.
But that wasn't the case on my phone. I tried both flash and hard drives (even with an externally powered OTG cable) and I'd encounter some corrupted files after moving them back and forth.
So I just figured micro-USB might be unreliable for this purpose and I went back to using SD cards.
Has type C been any different? Other than transfer speed (which is not my biggest concern) is it more reliable than micro-USB?
In terms of reliability alone where does it rank between micro-USB and SD cards? Am I better off with my SD cards as it is, or type C is reliable enough, for me to quit SD cards and start using it instead?
Like I said, type C's transfer speed is less important than reliability, but it's tempting nonetheless.

USB-C has multiple advantages, however speed is usually not one of it. Unless you buy a high-end smartphone the USB-C port usually operates with USB 2.0 speed. But that is device specific, hence check it out what USB transfer speed is supported by your device.
However from my USB-C has from my perspective the following advantages:

Easier handling (easier to plug-in, reversability)
Because of the easier plug-in the chance to break the USB-port soldering is lower - broken USB-ports because of inserted too often too much force is a common problem
I am not 100% sure but I would assume that the durability of an USB-C port is higher than micro-USB when it comes to plug cycles
For USB-C- USB sticks you don't need an adapter (however considering 2. an adapter cable also has advantages compared to a large USB-C stick - the smaller the stick/plug the lower the force that can be applied orthogonally to the USB-plug (because of the leverage).

On the other had you have to consider that micro-SD card slots are usually not designed for may insert/eject cycles. Therefore I would be carefully when regularly use if for inserting an card for backup purposes. An Micro-USB or USB-C port is usually designed for way more plug cycles.
Production quality of Micro-USB plugs and connectors
I don't know if this is a problem of cheap devices only but it seems to me like the quality for Micro-USB plugs and connectors is often terrible. At the moment I have devices and cables that are all "Micro-USB" but some Micro USB connectors are so tight that not all of my cables fit (e.g. a Nokia 2.2 phone) and on other devices the standard Micro USB cables are so loose that the plug pops out if I move the device a few centimetre (not that we are talking about brand new devices, not old device that has been plugged/unplugged hundred of times, an example: TP-Link TL-WR902AC AC750 mini router). Therefore I even got to a point where I categorize my Micro USB devices and cables into three sub-categories: thin, normal and wide.
Another problem of Micro-USB pugs is that not every plug fits regarding it's length.

That was very informative. Have you encountered file corruption with type C?

@AndysCafe1879 The USB connector only has an impact on the file integrity if it fits so badly that you have a loose connection or if the USB connector is defect because of the broken soldering and therefore causes a loose connection. See also the last paragraph about the quality of Micro USB I have added.

I mean, I don't see how the quality of the ports/cables is the real issue with me encountering file corruption. Back then I had a Samsung S6 (with genuine peripherals) and now an S9. I'd expect the built quality is as good as it gets with these flagships. The flash/hard drives were also working flawlessly on my computer. Are you sure file corruption is attributed to hardware (i.e., USB ports/peripherals) and not to software (poor programming for transfers on Android)?

File system mount and unmount are standard functions of Linux. Samsung heavily modifies Android but I would assume that those Linux parts remain unmodified. Therefore software problems are nothing I would expect.

Can you elaborate further on "On the other had you have to consider that micro-SD card slots are usually not designed for may insert/eject cycles."? ___ I haven't heard that before. What's the issue with SD cards and their longevity? Do I damage them every time I insert/remove them? I'd expect they're durable, the oldest one I use is several years old.

@AndysCafe1879 In general every plug, every card and every connector is getting "damaged" by inserting/remove operations. How often a card or plug can be used depends on the thickness of the connector conductive material (see e.g. https://photo.stackexchange.com/a/77278/94508). When it comes to micro-sd card readers the reader type (how you insert the card) makes a big difference. On some models the chance to accidentally damage something when inserting a card is present.

I see. I researched for ways to move from wires altogether and found that wireless external HD's exist (I wasn't aware). Do you have any experience with them? [ e.g., https://www.amazon.com/dp/B01MTQVD28/ ] I looked up online a little bit and their reliability is questionable (when compared to their wired equivalents) but I'm suspecting it's GOT to be more reliable than my OTG/micro-USB experience (from a few years back). Otherwise, only option I see, is to just stick to SD cards and just remember to often check their connectors and how damaged they are at a given time.


text:
ADB immersive mode and wm overscan commands no longer work on Android 11
I upgraded to Android 11 without knowing that it broke compatibility with existing immersive mode and window manger overscan adb commands. Are there new alternatives to these commands in adb now? I was specifically using:
adb shell wm overscan 0,0,0,-136 (reset: 0,0,0,0)
adb shell settings put global policy_control immersive.status=*
For reference I'm running GrapheneOS on build number RP1A.200720.009.2020.09.25.00 on a Pixel 3 with Android 11 on Kernel version 4.9.223.

There was recently a self-deleted question stating the same issue about Android 11 and ADB on immersive.status, though there's no comment nor answer.

@AndrewT. Yeah I saw that when attempting to research a solution. I was not the poster of that question though, I decided to post partly to "replace" that deleted question.


text:
Break SQLcipher by modifying libsqlcipher.so?
I was trying to extract data from an Android app which uses SQLcipher. SQLcipher is an extension of SQLite that encrypts database files with 256-bit AES.
Most of the application code is compressed and protected with some sort of anti-reverse-engineering stuff, so no source code and no debuggers. However, the SQLcipher binary lies in lib/libsqlcipher.so. I'm curious if I can extract the encryption key simply by swapping libsqlcipher.so(e.g. modify sqlite3_key function so that it logs the encryption key to file). The plan is to compile my own version of libsqlcipher.so, repack APK, and run it on a device.
Will this method work as expected? It sounds too easy to be true:)

So you are trying to find out the static password/key embedded and hidden in the app that is used to protect the database? If the replacing the library works, depends on the anti-reversing measures. If those measures are implemented well each library hash is checked before it is loaded. Therefore there might be only a very small time window between checking and loading of the library.

To add to what Robert said - I assume libsqlcipher.so lives in the .apk file, doesn't it? If the app authors are really that concerned over security, even trying to replace the .so and reassemble the .apk will make some signature check fail, as the signature will be changed to a custom one.

I ended up using Frida to hook sqlite3_key dynamically and got the encryption key. Simple enough.

Brief steps I took:

Setup Frida to connect to your Android device
On the Python end, attach to target app and load JavaScript.

import frida

# Attach to target app
session = frida.get_usb_device().attach("cn.com.company_name.app_name")

# Load Javascript from a separate file.
with open("script.js", "r") as file:
  script = session.create_script(file.read())
  script.load()

# Print any messages that Javascript send back
script.on("message", print)

On the Javascript end, hook into sqlite3_key and read encryption key from memory:

// Locate the SQLCipher library
var sqlcipher = Process.findModuleByName("libsqlcipher.so");

// Locate the `sqlite3_key` function call
var func = sqlcipher.findExportByName("sqlite3_key");

// Hook into it
Interceptor.attach(func, {
    onEnter: function (args) {
        // The encryption key is the second argument to `sqlite3_key`
        var key_ptr = args[1];

        // read 32 bytes worth of data(256-bit key)
        var key = key_ptr.readByteArray(32);

        // And send it back to Python
        send("Got key", key);
    }
});

Hi, it seems you accidentally created a duplicate account. Please refer to the help center to merge your accounts and regain ownership of the question and reply to the comments on your post. For this moment, I'll edit the post and add this information. Thanks for your understanding.


text:
Listen to YouTube
I want to listen to audio only from any YouTube recording, just like an audio-book, with my mobile phone's screen off. Is this possible?
So far I tested only:

YouTube original app,
playing YT stream in mobile Chrome.

All for nothing. A second after I turn-off my screen, audio is cut off and playback stops.
Is this possible at all? I.e. by changing some YouTube app's configuration or tapping some magic button in Chrome while browsing YouTube website? Or the only option is to look for some 3rd party app in Soft Rec?

Try testing NewPipe. As you are asking for a software recommendation, the mods will more than likely close your question. Better re-phrase it.

I had used YouTube Vanced app a year ago for this and it met the requirement you now have. It could continue to play audio while the device screen is locked (and screen off of course). You may have to tweak its settings for this.

Thanks for your suggestions for both apps to be checked and for re-phrasing the question in order to avoid closing it.

This seems to be impossible in neither original YouTube app nor in Google Chrome.
You can consider another app, like YouTube Vanced or NewPipe (search the Internet for more details since this is not a software recommendations site; I am not affiliated with any of mentioned apps). Or you can consider another browser, namely Firefox.
The solution given at Software Recommendations for iOS works just fine for Android as well:

Navigate to youtube.com (in Firefox)
Find and play your video
Hit the three-dot menu button
Tap the Request desktop site
When the page reloads, play the video again

You're done. Slide down the notification center to find video controlling buttons there:

Replicating the same steps in mobile Chrome turned out to be ineffective.
There's one important note here. Depending on how you're watching given video:

Using suggested Firefox Mobile or trying some other browser.
Watching in mobile mode or requesting desktop site.
Turning off screen immediately or waiting until it gets turned of by itself etc.

your wideo (or actually audio from YouTube) will:

play forever,
stop immediately,
stop after 5-8 minutes.

And you will be able to enjoy interrupted experience for long time or you will be forced to turn on and off screen after each 5-8 minutes (like in my case).
Because, no matter what I did, I failed to achieve interrupted, few hours long experience, I was forced to use additional solution (provided here) and install Fake Standby app.
Using Firefox Mobile + Fake Standby was an ultimate solution to this problem. However, keep in mind that in current version (November 2020) Fake Standby is causing some weird interference to Google Calendar.
This answer is based on this answer at Software Recommendations and my own blog post.


text:
Is there a way to hover in the mobile (Android) version of Microsoft Word?
I have a .docx document with images that are animated when you hover over them. It works fine on my computer, but when I copied the file over to my phone, I cannot work out what to do to make them start.
Is it possible? And if so, what is the most simple way to do so?

I assume with hovering you mean "move the mouse cursor over the image". The main problem is that on mobile devices you have touch but not a mouse cursor. This might be a problem. The other potential problem is that the mobile versions of Office don't support all features of the desktop versions. I don't know which one of the two mentioned problems (or both) causes the missing animation.


text:
Is there any way to check if 4G/LTE is broken in LineageOS (FP2)?
Situation

I have a Fairphone 2. I recently installed Lineage OS 17.1

I have a UK phone provider.

I am in Germany for the next few weeks.

I am not able to connect to German networks with 4G (that worked in the past and with the same contract when I was there the last time, before I installed Lineage OS)

Instead it falls back to 3G and only stays connected for 5 minutes or so, then kicks me out. So mobile data practically does not work.

In the UK, mobile data did work. I am not sure if it also fell back to 3G or if it did continue to use 4G after I installed Lineage. I cannot simply go back to the UK and check.

I bought a local German prepaid SIM. It does connect to 3G, but not to 4G. It also regularly loses connection on 3G, especially when I'm indoors, but it stays connected most of the time, though only to 3G

I know very little about how to debug Android-like OSes. To me it feels like being told to cross a busy road blindfolded: Everything is needlessly complicated, you can't see what's going on, and anything you do will probably end in failure.

I would be happy if I somehow had mobile internet, preferrably reliably and preferrably with 4G. But failing that, 3G is also fine until they phase it out next year, if it works reliably (which it doesn't).

I have switched the preferred network to 4G in the settings.

I tried switching to 3G; it doesn't change anything.

I tried rebooting the phone (the only trick I know for Android-like OSes where I cannot see what's going on); that doesn't change anything either.

Question
Since 4G never worked with neither SIM card since I tried to understand what's going on (i.e. since I am in Germany and discovered that mobile data did not work any more), my only working hypothesis is that 4G is broken in my setup. How can I test if this is actually the case?
Alternative possibilities include:

German providers don't like UK contracts any more and refuse to provide roaming services (because of Brexit and everything)
German providers do not like Lineage OS (or the other way around)
German providers do not like FP2 (or the other way around)
I am not smart enough to work with the kind of software Google has cooked up (Android like OSes) to figure out how to make it work with German networks
I somehow randomly always have terrible phone connection (although this does not affect the people around me)
My FP2 is somehow broken (and magically broke exactly when I crossed into Germany)
Any number of other increasingly unlikely possibilities...

Update (6 weeks later)
Additional Facts

I observed that I do occasionally - very rarely - get 4G/LTE. So from the technical side it should work.
I tried 2 different German prepaid cards (Vodafone, O2) over the past weeks, both contracts should have enabled 4G/LTE. Almost always, I only get EDGE/3G (or a light version of 3G? It feels like in the 1990s.).
I asked the salespersons in the Vodafone/O27Telekom shops. When they did not try to sell me random stuff, they were trying to be helpful. However, none of them had an explanation or could solve the problem.
I updated my Lineage occasionally. No change.
I cannot simply flash stock Android again. I only have this one phone and I am relying on the parts of it that do actually work and cannot afford to break it.
According to this source, German providers use LTE Bands 1 (2100MHz), 3 (1800MHz) for Cities, 7 (2600MHz) for cities, 20 (800MHz) especially for the countryside. Occasionally Bands 8 (900MHz) and 28 (700MHz) are also used, but this is limited to certain providers or regions. FP2 can only do Bands 3, 7, 20 according to acejavelin's comment.

This eliminates some of the possible explanations above. The ones that remain are:

German providers do not like FP2
German providers do not like Lineage
My Phone is broken
My installation is broken
German providers downgrade non-privileged contracts (foreign and prepaid) to 3G/EDGE, rendering them essentially unusable.
FP2 only supports LTE Bands 3 (1800 MHz), 7 (2600 MHz), 20 (800 MHz) (acejavelin's suggestion), German providers may be using another Band since recently?

Regarding the question this thread was about (is there a way to figure out if 4G/LTE is broken)

I assume the lack of answers means: No, there is not. If anything does not work, the cause has to be inferred from creatively designing experiments to rule out possible explanations one by one. E.g. installing stock Android and checking if 4G/LTE works there (acejavelin's suggestion).

I think you are WAY over thinking it... Flash back to stock and see if you get LTE/4G, otherwise, remember the FP2 only supports LTE Bands 3 (1800 MHz), 7 (2600 MHz), 20 (800 MHz), check what your provider is using in that area.

I would assume that from an MNO perspective Brexit is something positive for roaming because now they can again charge the standard abroad roaming prices instead of the fixed very cheap roaming prices as defined by the EU commission.

I'm not sure if your issue was the same as me but I found your post because I had a similar issue. My 4G/LTE not working on my new FairePhone3 running LineageOS. I fixed my issue, here is the solution in case someone has the same problem.
My phone would show the 4G/LTE as working but zero bytes transfered and no apps could access the internet. I double-checked the APN and everything seemed fine.
I activated dev options and USB debug. From a computer I ran the following command (the phone being linked by USB) :
adb logcat -b radio

In the logs I saw some of the following things :
[...]
PDN_IPV4_CALL_DISALLOWED
[...]
01-30 19:37:40.196  1970  1970 D RetryManager: [default] Reached maximum retry count 10.
01-30 19:37:40.196  1970  1970 D GsmCdmaPhone: [0] getDataConnectionState apnType=default ret=DISCONNECTED
[...]
01-30 19:37:40.198  1970  2203 D DC-C-1  : updateLinkBandwidths: LTE
01-30 19:37:40.199  1970  1970 D DCT-C-0 : isEmergency: result=false
01-30 19:37:40.199  1970  2203 D DC-C-1  : DcInactiveState: clearing settings
01-30 19:37:40.199  1970  2203 D DC-C-1  : clearSettings
01-30 19:37:40.205  1970  1970 D DC-C-1  : updateLinkBandwidths: LTE
01-30 19:37:40.205  1970  1970 D DCT-C-0 : onDataSetupCompleteError: Stop retrying APNs. delay=-1, requestType=NORMAL
[...]

So the logs confirmed I wasn't crazy, obviously there was an APN problem. The IPV4_CALL_DISALLOWED stood out to me. In my APN setting I found a APN protocol option that was set to IPv4, I changed that to IPv4/IPv6 and now my 4G/LTE works again !


text:
How to disable mobile data, in a way that's hard to re-activate, while still allowing mobile calls, for a child's phone?
I want to disable mobile data in the phone settings for my child in a way that makes it hard to re-activate it. Just turning off the "mobile data" setting is far too tempting for them to undo.
What I've tried:

Under Settings > Connections > Mobile Networks > Network Mode, I updated the setting to "2G only", which disabled mobile data but also disabled mobile calling. So that doesn't work.
Under Settings > Connections > Mobile Networks > Access Point Names > Data, I tried changing the "APN" value and also (separately) tried changing the "Mobile virtual network operator value", but mobile data still worked with either of those options changed.

Is there a different setting that will disable mobile data while still allowing mobile calls?
Am using Android 10 on a Samsung phone in New Zealand.

Hello. Is using a firewall app (and therefore denying internet access to all apps) not an option on the table?

Changing the APN as also my first idea. Unfortunately some MNO don't use them any more and just accept any APN value.

@Firelord Yes, that could be an option I think, though I do want to allow Wifi access. Are you aware of any firewall apps that can do that?

Search for any "no root firewall" type firewall in Play store. Firewall apps usually allow internet access per network configuration -- an app can be blocked on mobile data but allowed on wifi, ethernet, etc. An opensource alternative is called NetGuard.


text:
Can't register virtual US number with whatsapp business
I used to use a virtual US number for registering and using WhatsApp Business (for people i don't trust and don't want to give my personal number) But now whenever I try to register a new virtual number, it says it's an invalid number for USA. I have tried 2ndLine, text+ and few more apps.. Can anyone explain what's happening and provide a solution if possible..
Thanks in advance

I use a Google voice number for WhatsApp business without any problems and i know others that do the same

Yep.. Whatsapp business recently changed a few things.. But as far as ive tested it.. some virtual numbers still work from 2nd line and textnow(both are from same company ig). I mean 1 in 50 would work. Just give it a try!

yeah.. i did the same thing! and it worked

Yes most virtual numbers have such restrictions, however you have a higher success rate if you use voice for verification instead of SMS, you cant even setup voicemail recording to retrieve the call playback.
If this fails get other similar virtual number provider like TalkU, you get credits by watching some ads, but the advantage is that you get to keep the number for the duration you're subscribing with credits (which you get from watching ads=free)

Thanks but that didn't work. I got a virtual number form https://receive-sms-online.info and it worked!


text:
Find out a list of all previously installed packages
I'd like to know if it's possible to find out what packages were installed on an Android device using ADB, for when the simple "My Apps" library in Google Play doesn't list everything I'm looking for.
If possible, a generic answer would be appreciated for future reference. In this specific case I'm looking to figure out which asset flip mobile game (out of thousands of similar clones) was accidentally deleted on an Android 8.1 phone.

If installed from Play Store see: How to export a list as Text of all Play Store Apps that I have ever installed

Use pm. pm command is a package manager which allows you to list, install, uninstal and disable your device packages.
adb shell pm list packages

should do the job.

Hello. OP wants to know about a package that is no longer installed in the system. PM commands don't give that information.

Then I have no idea is that even possible. System app apks are stored somewhere in /system even when you uninstall them from system, same with stock apps.  When you uninstall third party app by pm you can use -k switch and all data and cache of app won't be deleted. But as I said Android doesn't have any kind of "app history".


text:
How do I create a new route table on rooted Android?
On Linux I can type something like echo 202 my_table >> /etc/iproute2/rt_tables and voila, I can use my_table in commands like ip route add 1.1.1.1 dev eth0 table my_table.
But my rooted Android phone doesn't have /etc/iproute2. And even if I create this directory (mkdir -p /etc/iproute2/), then echo 202 my_table >> /etc/iproute2/rt_tables and run ip route add 1.1.1.1 dev eth0 table my_table I get :
Error: argument "my_table" is wrong: "table" value is invalid

How to create and delete route tables on Android?

It's /data/misc/net/rt_tables on Android. But Android's limited ip command doesn't read rt_tables at all. You need to build iproute2 package. Be noted that routing on Android is far complex than normal Linux distros.

@IrfanLatif Can you point to some documentation on routing on Android works?

As was pointed out in the comments, Android doesn't use /etc/iproute2/rt_tables.
You can, instead of a name, use a new table ID number.  E.g.,
ip route add 1.1.1.1 dev eth0 table 10


text:
Pixel phone privacy. How to exempt data sharing with google
Does anybody knows if a pixel phone is able to profile, based on the user's data although a VPN is always active on the phone.
I am also not using any Google apps. I am wondering if the profiling is done on the mobile platform, then sent to Google's profiling analysis servers.

Android devices don't do profiling, that is done on Google server side. Even if you don't use any Google services they can automatically connect to Google in background (e.g. PlayStore, app scanning, ...) and the Google services can be used by other apps e.g. via PlayServices or directly e.g. displaying a Google map.

You will need to install another ROM that does not have Google Play services such as LineageOS or GrapheneOS.

I am also not using any Google apps.

It does not matter which Google apps you explicitly use or not, this process is a core part of stock Android.

VPN is always active on the phone

This cannot be guaranteed unless the phone is rooted as some connections might be made before the VPN is setup.


text:
Is it possible to automatically transform a phone number before calling it?
So I want some kind of solution to take a phone number from my call list, contacts or anywhere else, then transform it in a specific way and then add some digits and symbols in front of the number and a symbol after the number, and then forward the newly created number to the dialer.
For example, I have a phone number in my call list "+37066611111", if I share it as a number in my dialer app (DW contacts and dialer), I get this kind of text:
Contact name:
+37066611111

I want some kind of tool to get this text, drop this part:
Contact name:
+370

Then add additional symbols and digits to the remaining number "66611111", so that the result would look like this:
866622222,789#9#0866611111#

Then pass this newly created number back to the dialer. Is it possible?
I'm using a bootleggers ROM (Android 9 pie) installed on a Motorola Moto E 2015 phone.

Not all requirements of the question are met in this answer, but this is as close as I got so far, and I'm quite happy with it.
So, this requires to copy the telephone number without the contact name, like this:
+370 666 11111

Next, I used tasker to create a task which reads the number from the clipboard, loses the "+370" and spaces and then adds the additional digits and symbols.
I used the "Variable set" action to set a new variable to %CLIP (this way the copied number in a clipboard is saved to a separate variable, so we can manipulate it further).
Name:
%nr
TO:
%CLIP

Then I used "Variable  Search Replace" action on the new variable to get rid of "+370". Took me some time to find out how to get rid of the "+" symbol, because tasker doesn't search for "+" in this action, so I used "\D" in the search parameter, which finds any symbols that are not digits, so it worked for me.
Variable:
%nr
Search:
\D370
Replace Matches: checked
Replace with:
08

Then another "Variable  Search Replace" with a space in the search parameter to get rid of the spaces. (the "replace matches" must be checked to delete the found text from the variable)
Variable:
%nr
Search:

Replace Matches: checked
Replace with:

Then a "Variable set" action to create a new variable with the additional digits and symbols
Name:
%nrr
TO:
866622222,789#9#%nr#

And lastly - the "System > Set Clipboard" action to copy the transformed number back to clipboard, so I can use it anywhere I like.
Text:
%nrr

Then I created a button in the quick settings to launch this task, so all I have to do is copy the tel. no. which I want to transform, use the quick settings button for the task and paste the new number to my dialer app. Originally I wanted Tasker to forward the new number for the dialer to call, but if I use the "Call" action in tasker, everything after the comma in the new number is not forwarded to the dialer. So pasting the number is good enough for me.
I understand that not many people may want this functionality, but if I help even one, I'm happy. I'm willing to edit the answer so it would be easier to understand, but please tell me how to improve it in that case.


text:
Google Calendar always loads all data each time app is opened
I have a "branded" tablet with an OS derived from Android 9 (Pie). To skip the brand-related stuff like registration, I skipped the setup wizard. The device is not rooted. Debugging (via adb) is enabled, and I could customize the launcher and other settings. Everything works - all apps, all buttons - it's almost perfect. Only the Google Calendar starts with no dates and slowly downloads my entire calendar each time the app is opened. This takes a while and only works on WiFi, obviously.
I have tried clearing the storage of the Google Calendar, the in-built calendar app, and the Calendar Storage. I would like to avoid a factory reset.
Googling revealed practically nothing except for one tiny hint in Home Screen and Recent Apps buttons don't work: "Caution: Backup/sync everything before starting the setup wizard, because it might reset various things (e.g. the calendar storage (if syncing stopped before) or wifi passwords)." This mentions the calendar storage explicitly, and I did what was mentioned in the thread to skip the wizard as stated above. I believe that's when the problem started. Here is what I did back then:
adb shell settings put global setup_wizard_has_run 1
adb shell settings put secure user_setup_complete 1
adb shell settings put global device_provisioned 1

Any ideas on how I can make my Google Calendar data remain on the tablet?
Edit:
I tried "adb logcat" and it seems the calendar data wiping/reloading coincides with a crash of the app. It's the latest version and I have been observing this for a long time; any idea how to fix/mitigate this?
10-30 12:00:24.071 11845 11845 E AndroidRuntime: FATAL EXCEPTION: main
10-30 12:00:24.071 11845 11845 E AndroidRuntime: Process: com.google.android.calendar, PID: 11845
10-30 12:00:24.071 11845 11845 E AndroidRuntime: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.mvu.b(PG:18)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.ioz.a(Unknown Source:6)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.das.a(Unknown Source:128)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.eji.run(Unknown Source:30)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.drs.a(PG:2)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.dax.l(PG:6)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.dax.k(PG:5)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.ddv.a(PG:65)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.diq.y(PG:71)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at cal.diq.a(PG:2)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at com.google.android.apps.calendar.timeline.alternate.view.impl.layout.LayoutManagerImpl.e(PG:3)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.support.v7.widget.RecyclerView.ah(PG:5)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.support.v7.widget.RecyclerView.x(PG:10)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.support.v7.widget.RecyclerView.onLayout(PG:2)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at androidx.drawerlayout.widget.DrawerLayout.onLayout(PG:29)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at com.android.internal.policy.DecorView.onLayout(DecorView.java:763)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.View.layout(View.java:20672)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2802)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2329)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1467)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7202)
10-30 12:00:24.071 11845 11845 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:961)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at android.view.Choreographer.doCallbacks(Choreographer.java:772)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at android.view.Choreographer.doFrame(Choreographer.java:706)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:947)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:873)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:193)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6740)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
10-30 12:00:24.072 11845 11845 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at cal.jmm.call(Unknown Source:46)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at cal.zly.c(PG:1)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at cal.zla.run(PG:4)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at cal.zlz.run(PG:1)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at cal.ead.run(Unknown Source:4)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at cal.eac.run(Unknown Source:75)
10-30 12:00:24.072 11845 11845 E AndroidRuntime:        at java.lang.Thread.run(Thread.java:764)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti: Uncaught Android Crash on thread main with tid 2
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.mvu.b(PG:18)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.ioz.a(Unknown Source:6)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.das.a(Unknown Source:128)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.eji.run(Unknown Source:30)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.drs.a(PG:2)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.dax.l(PG:6)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.dax.k(PG:5)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.ddv.a(PG:65)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.diq.y(PG:71)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.diq.a(PG:2)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at com.google.android.apps.calendar.timeline.alternate.view.impl.layout.LayoutManagerImpl.e(PG:3)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.support.v7.widget.RecyclerView.ah(PG:5)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.support.v7.widget.RecyclerView.x(PG:10)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.support.v7.widget.RecyclerView.onLayout(PG:2)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at androidx.drawerlayout.widget.DrawerLayout.onLayout(PG:29)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at com.android.internal.policy.DecorView.onLayout(DecorView.java:763)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.View.layout(View.java:20672)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewGroup.layout(ViewGroup.java:6194)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2802)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2329)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1467)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7202)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:961)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.Choreographer.doCallbacks(Choreographer.java:772)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.Choreographer.doFrame(Choreographer.java:706)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:947)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.os.Handler.handleCallback(Handler.java:873)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.os.Handler.dispatchMessage(Handler.java:99)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.os.Looper.loop(Looper.java:193)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at android.app.ActivityThread.main(ActivityThread.java:6740)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at java.lang.reflect.Method.invoke(Native Method)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti: Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.jmm.call(Unknown Source:46)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.zly.c(PG:1)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.zla.run(PG:4)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.zlz.run(PG:1)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.ead.run(Unknown Source:4)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at cal.eac.run(Unknown Source:75)
10-30 12:00:24.072 11845 11845 E CalendarUncaughtExcepti:       at java.lang.Thread.run(Thread.java:764)

What about removing the google account from the device, reboot and then re-add the account?

@Robert: Thanks for the suggestion! I installed GApps manually and it seems it is not possible to log out from the Google account. These discussions confirm it: https://forum.xda-developers.com/amazon-fire/help/log-google-account-t3270543, https://forum.xda-developers.com/hd8-hd10/help/how-remove-google-account-firehd-82017-t4024629. I tried safe boot but to no avail.