text:
Are Android updates signed with Google's private key or other signing techniques?
I noticed that Android pops automatically for new updates and patches.
Are these updates signed so that the device knows it's from the official publisher and not from some server spoofer?

In keeping with most phones, my phone doesn't go to Google for updates.  it goes to the phone's manufacturer.  Your question is based on a misunderstanding..

Android releases/updates are certified (not signed) by Google before they are published. The certification includes a compliance test regarding the Android Compatibility Suite. The certification is more a legal than a technical process.

WHO SIGNS ANDROID PLATFORM COMPONENTS?
As explained very well in @MechMK1's answer, Google is the main contributor to AOSP development. But AOSP isn't the only software on Android devices, there are a number of hardware specific pieces of code. Above all there is kernel (based on AOSP's common kernel source), but that must be open-source due to GPL, so OEMs/SoC vendors are bound to release source code. However other parts, particularly userspace HALs which include a large part of hardware drivers, and the bootloader firmware which is loaded prior to kernel in boot chain are completely closed-source in most cases (intellectual property of OEM/SoC vendor). So the software on Android devices we know of is at least AOSP + kernel + HALs + bootloaders (and other SoC firmware).
OEMs get a copy of AOSP release from Google free of cost (theoretically; in actual they are bound in contracts), add their proprietary code which may also unnecessarily replace AOSP code (e.g. to change visuals) and add new apps/features, build the ROM and release that with device (or as OTA update package later on). The keys - which are used to sign system/framework apps and update package afterwards - are built/defined during ROM compiling process which is carried out by OEM, so OEM owns private keys. This ensures that core components of OS don't get any future updates from untrusted source. Mostly OEMs also add Google's proprietary Play Services and other apps (GMS) already signed with Google's private keys so that those get updates directly from Google.
ANDROID ONE:
Android One program was slightly different in the beginning. A quote from For the next five billion: Android One:

"To help ensure a consistent experience, Android One devices will receive the latest versions of Android directly from Google."

But their vision of pure Android on devices with strict hardware requirements wasn't appealing to OEMs, so within a year they had to tweak Android One strategy and the plan switched to:

"Android One phones receive the latest version of Android from Google’s hardware partners. Google’s partners send updates based on their schedule - trying to get them to you as soon as possible."

* Quoted from Google's update support page, now removed.
The long story short, OTA updates - whether related to hardware or to Android framework - come from OEMs. They build it and sign it with their keys. Google signs either OTA updates only for their own devices (e.g. Pixel), or the proprietary apps (e.g. Play Store) just like any app developer.
Also for A/B updates:

"For devices using Google's OTA infrastructure, the system changes are all in AOSP, and the client code is provided by Google Play services. OEMs not using Google's OTA infrastructure will be able to reuse the AOSP system code but will need to supply their own client."

AOSP's System Update APIs (update_engine) by-default use Google's root CA (/system/etc/security/cacerts_google) to establish https connection with (Omaha?) update server. But OEMs are free to modify the code. In each case OTA client app, system daemon and update server are managed by OEM.
VERIFIED BOOT:
On production devices release key is used to sign the update .zip file and possibly some apps as well. Its public key pair is saved on device in /system/etc/security/otacerts.zip, used to verify the cryptographic signature of update package. But additionally there is another signing mechanism available on many devices since Android 5, that is Verified Boot (dm-verity). OEMs use RSA key pair as a part of (A)VB mechanism. Private key is used to cryptographically sign the hash tree of whole /system partition, while public key (/verity_key) is stored in ramdisk (inside boot.img on non-SAR devices) or kernel's system keyring, which verifies the integrity of dm-verity mapping table (metablock) appended after last filesystem block at the end of /system partition. dm-verity table (hash tree) in turn verifies whole /system partition by matching hashes. This is to protect /system from any unintended modification by malware or user e.g. by mounting R/W.
During block-based OTA update a binary patch is applied to whole system partition block device file. This patch is generated by taking a binary difference between old and updated system.img. Updated table must be signed by the same private key owned by original ROM developer, otherwise dm-verity would fail. In the same way dm-verity protects /vendor and /odm partitions. boot and recovery are signed by another key, either manually provided or built with application bootloader or saved to some other secure location. So it's only the OEM who ensures this chain of trust during boot process, creates all of the keys initially and later on signs and sends OTA updates.

thank you sir; this is a very thorough answer.

Are updates digitally signed before being shipped?

Yes, updates are cryptographically signed by the publisher. This is to ensure the integrity of the update, both from unintentional corruption during the transmission, and willful manipulation from an attacker.

Who signs the updates? Is it Google?

That depends on who publishes updates for your phone. If you own a Nexus or Pixel phone, then the update is likely published and signed by Google.
Other manufacturers, such as Samsung for instance, modify Android before shipping it. This may include their own system applications, their own launchers, etc.. In such cases, the manufacturer is the publisher of the update and thus responsible for signing it.

But isn't Google the one who develops Android?

It's not Google alone, it's the OHA - Google just happens to be their most prominent member. Furthermore, Android is Open Source, meaning that contributions come from many different companies and individuals, not just Google.


text:
How does Android do DNS name resolution?
I am learning about how Windows does name resolution and need to know how Android does it so an app will work on my Windows laptop and from my Android Phone.
Borrowing from a post on superuser.com, the normal resolution method on Windows is as follows:

The client checks to see if the name queried is its own.
The client then searches a local Hosts file, a list of IP address and names stored on the local computer.
Domain Name System (DNS) servers are queried.
If the name is still not resolved, NetBIOS name resolution sequence is used as a backup. This order can be changed by configuring the NetBIOS node type of the client.

I use dnsmasq to provide local DNS resolution so I can map my own made up hostnames to local LAN IP addresses. This also allows me to see, in the dnsmasq log file, the DNS query that goes from the client to the DNS server. While testing the website from my phone I could swear using the URL address http://mywebsite in a Chrome browser on the phone was loading the website and the dnsmasq log showed just that unqualified name - mywebsite - resolving to the desired local IP address the web server is at.
However that was a few days ago, now the dnsmasq log always shows that the DHCP server DNS suffix [home] has been appended. So I see mywebsite.home in the dnsmasq log even though I used the URL address http://mywebsite in the phones Chrome browser. I didn't change anything with the phone. It is still set up to get its IP address via DHCP, in practice it never changes.
So my questions are:

How does Android OS resolve domain names to IP addresses - what things does it try and in what order?
Any feedback on why Android seemed to be resolving the unqualified hostname in my browser originally without any DNS suffix being appended. But now the [home] suffix is always appended as reported in the dnsmasq log file.

Update 1
After some more testing I have again seen the scenario where the webpage http://mymovies loads from the Android phone but the dnsmasq log appears to show the name resolution happening on an unqualified domain name (bare hostname: mymovies).

The x's are my redacted routers public IP address.
Can anyone explain what dnsmasq is doing here?
Starting from 02:07:22 it initially seems to try resolving the name mymovies.home. This makes sense because the phones IP is dynamically allocated by the DHCP server and I can see on my laptop that the DHCP server sends the DNS suffix [home] as the connection-specific DNS suffix so it must be doing the same to the phone I guess?
The reason why it fails here is because I do not have an entry for mymovies.home in dnsmasq.conf - I commented it out. I DO have an address entry for mymovies in dnsmasq.conf and that seems to be why it can resolve mymovies to an IP address.
Is this a difference of name resolution in Android compared with Windows - that eventually Android OS WILL try to resolve an unqualified domain name (bare hostname) to an IP address?

How DNS queries made by a program are being resolved isn't specific to an OS, but depends on the resolver library the program is using. DNS resolvers have traditionally been part of OS's standard C library e.g. Bionic on Android, libcmt on Windows, glibc, musl, dietlibc, uClibc and others on Linux. Not all C libraries use the same approach to resolve host/domain names. While glibc and alike provide complicated but highly configurable mechanisms like Name Service Switch, others just rely on hosts and DNS queries to upstream nameserver as configured in /etc/resolv.conf. Android's resolver (1, 2) looks up cache, hosts and DNS:

"DNS lookups are centralized in the netd daemon to allow for system-wide caching, while apps call functions (such as getaddrinfo) in Bionic. The query is sent over a UNIX socket to /dev/socket/dnsproxyd to the netd daemon, which parses the request and calls getaddrinfo again to issue DNS lookups, then caches the results so that other apps can use them."

DNS server address is either received through PDP context on Mobile Data or through DHCP on Wi-Fi (also possibly to set manually) or the hard-coded value 8.8.8.8 is used. Since Android 9 Private DNS (DNS over TLS) may also be configured in Settings. It's also possible to set DNS and domain name using ndc resolver setnetdns command. See more details in How to configure DNS properly?.

dnsmasq log always shows that the DHCP server DNS suffix [home] has been appended

.home suffix is being provided by your DHCP server (router?) to Android as part of DHCP request (code 15). Android's DHCP client asks server for option 6 (domain name server) and option 15 (domain name), which are then forwarded to C library (_resolv_set_nameservers_for_net) through DnsManager, NetworkManagementService and netd.
On Linux DHCP client (e.g. dhcpcd) modifies resolv.conf itself or uses a program like resolvconf which is dedicated to manage resolv.conf. nameserver keyword defines DNS server and search defines search list for host-name lookup (DHCP option 119 or 15). Android uses default values hard-coded in different header files other than those received from DHCP or set manually.
Windows's DHCP client and DNS resolver support option 15. Additional configurations which are honored by DNS Client service (dnscache) and library can be made through Network Connections or Group Policy Editor or Registry Editor.

Is this a difference of name resolution in Android compared with Windows - that eventually Android OS WILL try to resolve an unqualified domain name (bare hostname) to an IP address?

As far as I have seen this is almost standard behavior for Linux libc's. Android's DNS resolver code is also based on NetBSD - another Linux-like operating system. A single-label unqualified name is first tried with DNS suffix appended, then tried without suffix 4 times (see "options attempts:n" for resolv.conf). For multi-label name the order is reversed while a FQDN (with trailing .) is never tried with suffix. On Windows you can append dot to unqualified name so that it's treated as FQDN. It's possible to set it as default behavior by adding dot (.) to "DNS suffix for this connection". See also for Multi-Label Name Queries.

I am learning about how Windows does name resolution and need to know how Android does it

As stated in the start, name resolution might not be persistent across whole OS. On Android, for instance, Firefox or Chrome will be depending on Bionic resolver while some busybox ping (or even some native libraries included with GUI apps) will be trying to read resolv.conf and make DNS queries directly.
Also network troubleshooting tools like ping and getent rely on OS's internal resolver libraries like NSS, while DNS diagnostic tools like nslookup, dig and host act as independent DNS clients - they don't read hosts file and may not honor resolv.conf in its entirety. dig provides commandline arguments to (not) use options set in resolv.conf, and similarly Windows nslookup has its own built-in resolver.
So even on same OS you can't expect same DNS resolution behavior when using different GUI/CLI programs because they could be using different libc and/or different resolver and/or different configuration.

RELATED:

How to ping a local network host by hostname?

Irfan.. thank you so much for this detailed answer. I can now see how DNS lookups are influenced by many factors. Interesting that Windows will not do a DNS lookup on a bare hostname but Android will due to different DNS resolver code. Cheers.

For reference: Starting from November 2021, Android resolver supports mDNS .local resolution.

Can anyone explain what dnsmasq is doing here?

query[A] = resolution request for IPv4
From: obviously the source, as you already stated, your router's public address.
forwarded to: is the URL forwarding to the DNS servers that you configured for such kind of URLs, in case that no config there, is using the default DNS servers or your GW.
reply: the DNS Server is not being able to resolve the host because that domain doesn't exist (mymovies.home) and therefore is delivering that "NXDOMAIN" as reply
192.168.1.124 is the IP that you have statically configured for mymovies

source: Stack Exchange

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

sort: votes


text:
Why does Speedo On app does not show on Galaxy Store?
I have a Samsung Galaxy Gear Fit2 Pro and a Samsung Galaxy Note9. I installed the Speedo On app on the phone, which requires a companion Speedo On app from the Galaxy Store for the watch.

Samsung - If you have a Samsung Gear Fit2 Pro watch or a Samsung Gear watch, please ensure that the Speedo On app is installed on both your smartphone and your watch. To download the watch app: Select “Settings”, Select “Samsung Galaxy apps”, Search “Speedo On”, Select “Install”

However, when I search for this app in the Galaxy Store, it does not show up in the results.
I called Speedo and they assured that the device is supported and I saw reviews in the App Store with people saying they are using it the Fit2 Pro.
Does anyone have this issue? Is there a way to side-load the app to the watch?

Hi Gabriel, I added the description from the Play Store since I assume that's what you did but failed, or perhaps I misunderstood that you did a different thing? (Not from "Settings" but from "Galaxy Store"?) If my edit made this question nonsensical, feel free to rollback!

@AndrewT. Yes, that's what I did. Thanks for the clarification.

I contacted Samsung and they said this app is not supported on the Gear Fit2 Pro.

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


text:
Share virtual machine between Genymotion and Android AVD Manager?
I've installed Genymotion and configure it to use the SDK folder from Android SDK. (In preferences, ADB -> Use custom Android SDK tools, and select /Users/XXX/Library/Android/sdk)
But when I open both Genymotion and Android AVD manager, it can't see the same virtual machine created in each other:

Is there a way to share the virtual machine, without taking extra disk spaces?

Genymotion and the Android emulator for Android SDK can not interoperate because the used virtualization system is totally different:
Android Emulator from SDK uses an QEMU 2 based emulator for running the emulator images.
Genymotion uses VirtualBox emulator as the underlying virtualization system. As VirtualBox only supports x86 emulation for example ARMv7/ARMv8 based emulator do not exist for Genymotion.
Effectively this means that the emulated devices are slightly different. For example they are different regarding the emulated devices (e.g. graphics chip) and the used file formats.
As different devices require different drivers converting an emulator image from one system to another is also not that easy.


text:
How to remove Chrome's per-site notification entry on the Android settings?
I'm using Samsung Galaxy S10. Sometimes when I visit "certain" websites, the site requests to send notifications to me through Chrome.

How do I remove these Chrome site notification requests from random websites on the Android settings? I don't see any locations for removal.
This is similar but not the same to How to permanently remove a particular Chrome notification from Android mobile phone? since that question is asking to remove the notifications only, not the entry on the settings.

Do you mean to say you want to remove those notification entries of websites from that Settings page?

Yes, I want to remove the entries.

One of the later answers to the linked question should also solve this question.

To remove notifications for an individual site on Chrome for Android, you need to block the Notification permission by doing the following:

Open Chrome -> Settings.
In the Advanced section, click on Site Settings, then All Sites. Sites that have permissions set will be listed.
Find the site you are looking for, click on it.
Under the Permissions section, click on the permissions you want to remove, in your case the Notification permission, then select "Block".

To remove the entries:

Open Chrome -> Settings.
Site Settings -> Data stored -> Clear all data.

This answer from a previous question (linked by OP) is actually better than my suggestion as it will remove only the notification entries.


text:
How can I get the arrow keys back in the centre of the SwiftKey keyboard?
Until yesterday my SwiftKey keyboard showed arrow keys in the middle of the keyboard. I had switched on the thumb layout and the arrow keys for a compact yet functional layout.
Since yesterday (October 26, 2020) the arrow keys can only appear at the bottom, increasing the keyboard height with one full row.
The thumb layout still exists, but now just leaves an empty gap in the middle where the arrow keys were before.
How can I get the arrow keys back in the centre of the keyboard?

You can reinstall an older version, try one of the following sites to download.

APKMirror
APK4Fun
APKPure

Swiftkey version 7.6.5.7 seems to be the latest version that has the arrow key + thumb keyboard functionality available.
You can download and install the linked .apk file.
After that you need to configure the Google Play store to not auto-update Swiftkey by following these steps:

Open Google Play store
Navigate to the Swiftkey app
Click the three dots in the upper right
Uncheck the box Enable auto-update ⬜.

Disclaimer: I take no responsibility for the apk's on these site.


text:
Open Engineer Mode and run other hidden codes on Moto G 3rd generation device?
I'm running LineageOS ROM on my Moto G 3rd generation smartphone and recently I wanted to run some hidden codes of Android like *#06# for IMEI and so on.
However, none of this ones works correctly on my phone:

Phone information
*#*#4636#*#*
IMEI Info
*#06#
Calendar
*#*#225#*#*
Debug info for Google Play Service
*#*#426#*#*
Access Google Partner Setup
*#*#759#*#*
Engineering Mode
*#*#2486#*#*

The IMEI closes the dealer/phone app, while the engineer/service mode codes (the one in which I'm more interested) don't activate anything. Let's say that the dealer interprets correctly the code but doesn't run this tasks.
So knowing this, I would like to know if there is a way of looking if the relative services are on my phone? If it isn't the case, how I can add them or run from PC with USB maybe? Are the secret codes dependent on the ROM like I imagine or not?
Notes:
I tried hidden codes of other manufacturers like Samsung, HTC, ... too but no result obviously.

These dialer codes all vary by OEM in their stock ROM's... the codes for stock firmware are often easily accessible via searching the Internet or via apps available from various sources. However, how custom ROM makers handle these codes, if they implement them at all, is an entirely different thing again.
There are some standard-ish codes, like *#06#, but even this is not consistent across all devices in all cases. There isn't really a standard for other codes nor is there any incentive for OEMs or ROM developers to even implement many of them.
Many dialer codes are also passed to the carrier, for things like Call Forwarding, checking your balance of money or minutes, blocking Caller ID, activating Call Waiting, etc... although there are some standards, actually commonality more than a standard, between some carriers, these are entirely carrier dependent as well on how and if they implement them.
To answer your questions specifically, well, as specifically as possible...

I would like to know if there is a way of looking if the relative
  services are on my phone? If it isn't the case, how I can add them or
  run from PC with USB maybe?

Unfortunately, no... these are device and ROM dependent. I would suggest posting in the official support thread for your device and specific ROM to see if they have implemented in any way or there are alternatives that are specific to your ROM, device, and use case.

Are the secret codes dependent on the ROM like I imagine or not?

Yes, they absolutely are...
Source: Years of being an Android enthusiast, ROM developer, and XDA Recognized Contributor. :)

If you're rooted and have busybox and aapt installed on your device, then this little script might help reveal a lot of the ROM built-in codes.
To be run at root shell prompt on the device. All one single line.
busybox find /system/ -name '*.apk' -exec aapt dump xmltree {} AndroidManifest.xml \; | busybox awk '/android_secret_code/{getline;sub(/^.*="/,"");sub(/".*$/,"");print}'


text:
Running older Android apps on Android Pie
I have Samsung Galaxy J9 running on Android 9 Pie. I bought Grapher Pro from the Play Store and installed it. When I tried to run it, a message was shown:

This apk was built for an older version of Android.

Because of this, I refunded it.
Is there any way to run such apps?
The free version doesn't show the issue though.

Thanks for the error message. While I couldn't find the quoted error message, I found a similar error message on Android Pie: This app was built for an older version of Android and may not work properly. Try checking for updates, or contact the developer, though AFAIK the app is not blocked and you're still allowed to use it?

You may try to change the target Android version of the app using APK Editor and change the API version. But it most likely won't work for paid apps.
 Instead, you can try to run the app in a virtual machine in which an older version of Android is installed. See VMOS Virtual Root Android on Android-Double System.


text:
Export/save 200+ Samsung memos without selecting them one by one?
I would like to save 200+ memo from the default samsung application
What I did:
I already succedded to save memos one by one but it takes too long to do this for all of them, the process is the following:

Open the samsung memo application
Go into each Memo
Save it by sharing it (thought the three dots) to Google Drive.

What I wanna do:

Save all of them without reapeating the steps above 200+ times

Note: Any ways to save/export them on a more successful way or to use them from another "memo application" are welcome!
edit: I know how to save one memo (as explained above), but I'm looking for a way to automate it or extract a large quantity of them at the same time.

Possible duplicate of How to backup notes from stock Notes app?


text:
Why aren't website shortcuts on home screen available across multiple launchers on Android?
On a Moto (G60) smartphone running Android (12), I have two launchers installed.  The first is the default Motorola app that comes preinstalled, called Moto App Launcher (12), and the second is called Nova Launcher Prime (7).
The problem is when I use Chrome (107) and click "Add to Home screen" in the first launcher, and then set the second launcher as default, and then switch back to the first launcher and click the website shortcut that was added to the home screen, it doesn't work and gives a message saying "Shortcut isn't available".
For instagram.com you can click in Chrome "Install app" which creates a shortcut on the home screen that works in both launchers, but for facebook.com that option is not available, and the shortcut only works in the launcher that it was created in.
Is there a way to create a website shortcut on the home screen that will work across all installed launchers?
Update:
I tried using both Hermit Browser and Kiwi Browser and neither of them worked.
The shortcuts on the home page are grayed out, the same as before when using Chrome.
Except for the Instagram shortcut that was created in Chrome using "Install app".
Is there another way, or maybe an Android app that can install any webpage as an "app" even if the webpage not a Progressive Web App (PWA)?
See picture:

I cannot setup Chrome so I cannot verify my claim, but the issue you're having is likely because of this: the website shortcuts which are accessible from any of your launchers might actually be Progressive Web Apps (PWAs) and as such, appears as Android apps per se. That way, all apps in your Android would be aware of their presence, not just the launcher apps per se. On the other hand, the websites which don't offer PWA for them are added sort of as a bookmark when the user adds them on the screen. Normally, such data is handled only by the launcher set as default at that time..

...and hence other launcher apps wouldn't be able to get that data, let alone share it. I think the actual source of this confusion is actually the browser, because it never tells the user whether the shortcut that is to be created would actually be a PWA or not. Otherwise, you could have identified the problem yourself, or at least have had some information to investigate a bit into it. // If my claim is correct, than you can't solve this problem of yours.

Hi, yes, that makes a lot of sense.  It seems that if a webpage can be installed as an "app" (because it is indeed a PWA), then in Chrome the option will be "Install app" instead of "Add to Home screen".  So that seems like a way to know the difference nowadays.  But yeah, maybe it's just not possible right now.  Guess I'll just install the actual apps for now instead of using simple browser shortcuts across the different launchers.  Of course I can still open a browser and navigate to a bookmark or type in the website address, but where's the convenience of that?  Haha.

Google Chrome allows the "Add to homescreen" option on all webpages for a launcher only if the launcher is (1) A system App and (2) is the default launcher. You can use Kiwi Browser e.g., to create Web Page Homescreen shortcuts for other launchers.

Yes, Chrome was "adding to homescreen" properly for the current system app launcher that was set as default at that moment.  I did update my question about how I tried using the Kiwi Browser to add a shortcut and the shortcut it created still didn't open after switching launchers.  Maybe some day Android will be able to set any webpage as an "app" so that it's available in any launcher, but that would also add them to the app drawer which is not as nice as having simple homescreen shortcuts.


text:
Prevent mobile data from automatically turning off after a while on Xiaomi Mi 4
I use Xiaomi Mi 4 (Android 7.1.2 Nougat) phone's hotspot to surf the internet on a laptop. After sometime approximately 20 minutes, the phone automatically turns off the mobile data and I have to turn on the mobile data manually.
I think the phone turns off the data automatically because it is left undisturbed and to save battery. However, the phone is already plugged-in to the charging spot.
How to prevent mobile data from automatically turning off after a while on Xiaomi Mi 4?

Thanks for the clarification. I have incorporated the info to the question while also removing unnecessary/unrelated info to solve the issue. If I accidentally removed/changed the meaning, feel free to [edit] and improve the question. Thanks.

https://i.sstatic.net/3au0S.png

Thanks @alecxs the last option in developers options > always keep cellular data open

this solved my problem
developer options > Networking > Cellular Data always active
toggle this option on


text:
How to stop the Facebook app from updating itself automatically?
I have the Facebook app installed on my Android 7 phone.

Auto-update is disabled for all applications on my Play Store account
I have disabled installation from unknown sources

For some reason, whenever there is an update of the Facebook app, it automatically updates itself even though I disabled auto-updates for all applications.
How to stop the Facebook app from updating itself automatically?

Update: The settings location was changed, now at:
Settings & Privacy --> Settings --> Media and Contacts --> App Updates --> Auto-Update Facebook

Open your Facebook mobile app and navigate to that location to turn off the option:
(From the three lines icon at the top, at the bottom you'll have Settings & Privacy which should be expanded).
S̶e̶t̶t̶i̶n̶g̶s̶ ̶&̶ ̶P̶r̶i̶v̶a̶c̶y̶ ̶-̶-̶>̶ ̶A̶p̶p̶ ̶S̶e̶t̶t̶i̶n̶g̶s̶ ̶-̶-̶>̶ ̶A̶p̶p̶ ̶U̶p̶d̶a̶t̶e̶s̶ ̶-̶-̶>̶ ̶A̶u̶t̶o̶-̶U̶p̶d̶a̶t̶e̶ ̶F̶a̶c̶e̶b̶o̶o̶k̶

Wow thank you. I didn't know facebook had its own auto update "feature" bypassing the android OS or playstore one.

There is no such option as 'App Updates' and the Gif you have moves too fast.

I've updated my answer, the setting has been moved.

Looks like the setting is removed... again...

where is it now. Couldn't find it :(

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


text:
Unable to install Express (of Node.js) in Android Termux using sdcard0 as directory
I'm unable to install Express in Android Termux. I have the latest Node.js installed.
It is working perfectly when I use Private storage, but I'm using cd /storage/sdcard0/NodeJS/Test/ and getting a permission denied error. I saw the word symlink repeatedly in the terminal's error message.
Here's what I saw after commanding npm install express --save:
$ npm install express --save
npm WARN test-lab@1.0.0 No description
npm WARN test-lab@1.0.0 No repository field.

npm ERR! path ../mime/cli.js
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall symlink
npm ERR! Error: EACCES: permission denied, symlink '../mime/cli.js' -> '/storage/sdcard0/NodeJS/Test/3/node_modules/.bin/mime'
npm ERR!  { Error: EACCES: permission denied, symlink '../mime/cli.js' -> '/storage/sdcard0/NodeJS/Test/3/node_modules/.bin/mime'
npm ERR!   cause:
npm ERR!    { Error: EACCES: permission denied, symlink '../mime/cli.js' -> '/storage/sdcard0/NodeJS/Test/3/node_modules/.bin/mime'
npm ERR!      errno: -13,
npm ERR!      code: 'EACCES',
npm ERR!      syscall: 'symlink',
npm ERR!      path: '../mime/cli.js',
npm ERR!      dest: '/storage/sdcard0/NodeJS/Test/3/node_modules/.bin/mime' },
npm ERR!   stack: 'Error: EACCES: permission denied, symlink \'../mime/cli.js\' -> \'/storage/sdcard0/NodeJS/Test/3/node_modules/.bin/mime\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'symlink',
npm ERR!   path: '../mime/cli.js',
npm ERR!   dest: '/storage/sdcard0/NodeJS/Test/3/node_modules/.bin/mime',
npm ERR!   parent: 'test-lab' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR!     /data/data/com.termux/files/home/.npm/_logs/2018-05-29T13_09_20_748Z-debug.log

Is it really possible to install Express while current storage is something like /storage/sdcard0/...?

Related: Insufficent rights for npm install in Termux on Android

Unfortunately, the answer is No, not even with root.
Android uses FUSE (Filesystem in USErspace), which has symbolic links disabled. Since Node needs to setup symlinks, it's impossible to install it onto the SD card (or whatever internal storage where you store your photos, downloads, etc.). You can only install it into Termux's directory, which is /data/data/com.termux/files.

I've already installed nodejs successfully. The problem is that I'm unable to install a nodejs module or package or plugin or whatever it is called. I was thinking of saving the app.js, package.json and the express files into a directory in sdcard0 or sdcard1.

Are you saying I can't save files (of Express) to sdcard ?

@user9850863 You can't install that Node module onto the SD card. But yeah, Node.js itself is already set up in Termux's directories.

Yes you are correct.

@user9850863 I'm honored. But if you only want to access Termux's files, you can copy them in/out to SD card with Termux. Then you can use an arbitrary file manager, without affecting the local copy that Termux holds.

Cloudcmd is a Termux package which creates a server of Web (nodejs) based file manager. I think, that using it will be a more greater idea than copying App-Private files to sdcard, editing them and copy pasting it to the old hidden directory. What do you think?

@user9850863 Well, I'm not a professional developer so I don't know a large variety of softwares. If it is so, it's surely better than copying in & out.

I fix it with this:

Install Termux:API (Play Store).
In Termux shell: apt install termux-api

That's all. https://www.npmjs.com/package/termux

How? Just installing it ?


text:
Unable to login to Google account after reflashing gapps (LineageOS 14.1)
today I ran into some trouble and had to reflash my LineageOS system and with that my GApps. After reflashing (dirty flash, by the way) I could not login to my Google account anymore. After logging in, I was just brought back to my previous screen and the Google account was not added. I can see my device show up on https://myaccount.google.com/. I've collected a logcat of what errors were being spit out when trying to log in. I hope anyone can help me with this! I have already tried turning off 2FA and even tried deleting the /system/etc/hosts file as this forum post recommended.
01-21 20:22:50.104  8412  8412 E Finsky  : [1] com.google.android.finsky.tos.TosAckedReceiver.a(10): Could not get DFE API, returning.
01-21 20:22:51.057 12771 12771 E ResourceType: Style contains key with bad entry: 0x01010575
01-21 20:22:52.208 12771 14287 E SetupServices: [AuditHelper] Error getting account ID
01-21 20:22:52.208 12771 14287 E SetupServices: guc: BadAuthentication
01-21 20:22:52.208 12771 14287 E SetupServices:     at gtq.a(:com.google.android.gms@14847017@14.8.47 (040306-228741232):15)
01-21 20:22:52.208 12771 14287 E SetupServices:     at gtp.a(:com.google.android.gms@14847017@14.8.47 (040306-228741232):2)
01-21 20:22:52.208 12771 14287 E SetupServices:     at gtp.c(:com.google.android.gms@14847017@14.8.47 (040306-228741232):6)
01-21 20:22:52.208 12771 14287 E SetupServices:     at gtp.b(:com.google.android.gms@14847017@14.8.47 (040306-228741232):1)
01-21 20:22:52.208 12771 14287 E SetupServices:     at gtp.b(:com.google.android.gms@14847017@14.8.47 (040306-228741232):3)
01-21 20:22:52.208 12771 14287 E SetupServices:     at gtp.f(:com.google.android.gms@14847017@14.8.47 (040306-228741232))
01-21 20:22:52.208 12771 14287 E SetupServices:     at anrn.run(:com.google.android.gms@14847017@14.8.47 (040306-228741232))
01-21 20:22:52.208 12771 14287 E SetupServices:     at qzy.run(:com.google.android.gms@14847017@14.8.47 (040306-228741232):3)
01-21 20:22:52.208 12771 14287 E SetupServices:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
01-21 20:22:52.208 12771 14287 E SetupServices:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
01-21 20:22:52.208 12771 14287 E SetupServices:     at rgd.run(:com.google.android.gms@14847017@14.8.47 (040306-228741232))
01-21 20:22:52.208 12771 14287 E SetupServices:     at java.lang.Thread.run(Thread.java:761)
01-21 20:22:52.214 12771 12771 E SetupServices: [GoogleServicesActivity] Exception writing audit records
01-21 20:22:52.214 12771 12771 E SetupServices: guc: BadAuthentication
01-21 20:22:52.214 12771 12771 E SetupServices:     at gtq.a(:com.google.android.gms@14847017@14.8.47 (040306-228741232):15)
01-21 20:22:52.214 12771 12771 E SetupServices:     at gtp.a(:com.google.android.gms@14847017@14.8.47 (040306-228741232):2)
01-21 20:22:52.214 12771 12771 E SetupServices:     at gtp.c(:com.google.android.gms@14847017@14.8.47 (040306-228741232):6)
01-21 20:22:52.214 12771 12771 E SetupServices:     at gtp.b(:com.google.android.gms@14847017@14.8.47 (040306-228741232):1)
01-21 20:22:52.214 12771 12771 E SetupServices:     at gtp.b(:com.google.android.gms@14847017@14.8.47 (040306-228741232):3)
01-21 20:22:52.214 12771 12771 E SetupServices:     at gtp.f(:com.google.android.gms@14847017@14.8.47 (040306-228741232))
01-21 20:22:52.214 12771 12771 E SetupServices:     at anrn.run(:com.google.android.gms@14847017@14.8.47 (040306-228741232))
01-21 20:22:52.214 12771 12771 E SetupServices:     at qzy.run(:com.google.android.gms@14847017@14.8.47 (040306-228741232):3)
01-21 20:22:52.214 12771 12771 E SetupServices:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
01-21 20:22:52.214 12771 12771 E SetupServices:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
01-21 20:22:52.214 12771 12771 E SetupServices:     at rgd.run(:com.google.android.gms@14847017@14.8.47 (040306-228741232))
01-21 20:22:52.214 12771 12771 E SetupServices:     at java.lang.Thread.run(Thread.java:761)


text:
How to setup an alarm with no dismiss, no snooze and only one time media play?
Is there a way to set an alarm or a notification that plays just one custom sound once on weekdays only and requires no snoozing or dismissing?
Following are the apps I've tried and the details of the problems I have with them:

Simplest Reminder - no custom sounds for individual alarms, shows a notification
Androids built in alarm clock - you must press snooze or dismiss it
Alarm and Pill Reminder - shows a notification (but doesn't interupt)

Try an automation app, such as Tasker or MacroDroid.


text:
System crashed and not rebooting on Xiaomi Redmi 5 Plus
I have a Xiaomi Redmi 5 Plus with MIUI 8. My system crashed today and then the phone tried to reboot but is stuck eternally in the boot screen with the Mi and Android logo. I only had 100 MB free space, so maybe the system cannot boot because of that? I tried to clear caches with fastboot but it says "device is locked. Cannot erase". Also flashing TWRP is not possible. When trying to start adb shell it only says "error: closed". The newest version of Mi PC Suite cannot connect and an older MiPhoneAssistant version is only able to flash the ROM.
So I really tried a lot, but maybe someone has another idea with which I don't lose my data?
EDIT: So, instead of starting the bootloader I left the phone in the booting process and then I could connect with adb shell. But without root permission I don't have access to user data.

I don't think there is anything we can do about it you will loose the data. Download the Mi Flash tool. And flash the stock firmware.

Hm, when I use MiPhoneAssistant it proposes to flash the newest ROM without losing user data. I also found this testpoint method to start edl mode, maybe this could be a solution.


text:
What are the good practices of backing up of ROM's using TWRP if I change ROM's often
I want to check and play with different ROM's at my mobile phone. My phone is unlocked and rooted.
Here is scenario:

I installed LineageOS 17.1(microG) and made backup using TWRP. I check all options for backup except cache(boot, data, recovery,system, system image,efs)
Next I want to install Ubuntu Touch custom ROM and I will make a backup.
Then I will install /e/ foundation OS ROM and I will make backup.

Questions:

What would be good practices for making backups and restoring if I want to play between those systems recording all the changes at ROM(new apps,settings) along the way?
Let's say I want to back to Ubuntu Touch ROM from /e/ ROM. Which minimal options at TWRP backup should I check to get my previous state(fully functioning) at Ubuntu Touch ROM?
Should I back up all options at TWRP all the time?

Remark:
I don't expect LineageOS apps works at UbuntuTouch nor /e/ OS. I will install apps separatelly for each ROM. There is no need to share data between ROM's although if it is possible let me know.

make sure to set backup location external MicroSD Card and use latest TWRP for backup Internal Storage

Without getting into specifics of which ROM you are currently using and which one you want to flash, TWRP isn't a good idea. Reasons :

TWRP is used to make a nandroid image and as you can see from the nandroid tag wiki help, you may run into serious issues if the directory structure of the ROM is different. Restoring a section of TWRP backup may also cause problems (read the linked page for details).

What may be a user app in one ROM, may well be a system app (having elevated privileges) and this may cause trouble.

Google dependencies : You may be running Gapps on Lineage and this may not be possible in other ROMs.

I am not familiar with Ubuntu but I doubt you would be able to run most user apps from LineageOS on that.

There would be more reasons, but these occurred to me on reading your question. You are better off making individual backups of apps using titanium-backup and restoring these as per your need.
Recently, I was doing some research on backup apps since Titanium failed for me on Android 11,and I came across this app, specifically designed for frequent ROM flashers and this may fit your need better. See Migrate-custom migration tool

Move apps, data, contacts, SMS etc from one custom ROM to another.

Interestingly, it claims to restore app permissions too. XDA thread here and Telegram here. You need TWRP to use this app.
I haven't tried this app (don't need it) nor am I affiliated with it.

Thanks for answer. I don't expect LineageOS apps works at UbuntuTouch nor at /e/ OS. I will install apps separatelly for each ROM. I think you were considering deeper coorelation between ROM's which I don't need that much.

Yes, I am sure those apps won't work but mentioned it just in case, it helps, if not for you, for future readers. Basic point is TWRP isn't a good tool for this purpose

@beeshyams wasn't there an option in TWRP to perform full filesystem image backups instead of "content backups"? And apart from that, if wiping the corresponding partitions before restore, would your arguments still hold true? To my knowledge, scenarios like this should be covered by Nandroid backups – be it disk images or "just contents".

Disk/partition image backup option in TWRP is available for /system and /vendor (or maybe /odm, /product etc. too) so that dm-verity don't break, but not for /data (at least I'm not aware of) as it would require a larger SD card to save the backup. But backing up and restoring partition images is very simple. dd or adb pull/push should work. But backing up filesystem contents won't be a problem either as OP wants to restore the whole ROM backups (including /data).

I have not tried it, so it's rather theoretical (though I'm pretty sure it holds – so if you insist…;). But I'd say @IrfanLatif should definitely turn his comment into an answer, and could include what he thinks sound of my suggestion.

@Izzy you may please proceed with the answer.

Your approach should work if you wipe partitions before performing the restore. By default, TWRP performs "file-based backups" (think of "a tarball of all the file systems") – so if the target storage is empty, the restore should be fine.
TWRP also offers "image copies", but as Irfan Latif pointed out probably not for all file systems. You could also create file system images using dd when booted to TWRP (backing up a "live system" leads to inconsistent backups as the file system changes while being backed up – always make sure that does NOT happen; booting to recovery is one way to ensure that). Those images you could store to the SD card – or directly write them off-device to your computer.
Shameless self-promotion: For the dd approach, you might wish to take a look at my tool Adebar – which would create you the needed backup script, pulling images of all partitions directly to your computer (you will want to modify the generated script to restrict it to the partitions needed).


text:
What does grayed-slashed icon in Google Hangouts mean?
I tried to text a person in Hangouts whose profile icon appears like the image below.

There is some peculiar info related to this. When I tried to text that person, it showed 'Failed to send... Tap to retry'. I couldn't send any messages. I could see their last seen but with this thumbnail only.
Does it mean the person has deleted the Hangouts account or signed out?

I'm not using Hangouts so I don't know if it's the same or not, but other Google services (e.g. YouTube) uses the same avatar for deleted accounts. Is there any info when you tap the account, compared to normal users?

Yes there are some peculiar info related to this. When i tried to text that person it shows 'Failed to send...Tap to retry'.I couldn't send any messages. I could see their last seen but with this thumbnail only

What does the Grayed, slashed-out profile picture mean on hangouts? from Google Hangouts help says, it could be any of these:

Signed out of hangouts or is inactive
Account was deleted or suspended.
It might also mean the photo was deleted.


text:
Install Python to run speedtest-cli on Android phone with no access to device - via adb
I want to install Python on an Android phone (the phone is connected to a Raspberry Pi so I don't have any GUI or physical access to the device). I can connect to the phone via adb shell and run/install packages via APK files easily. I want to install Python on the device to run speedtest-cli remotely via adb shell. https://github.com/sivel/speedtest-cli
speedtest-cli requires Python. So far I have tried the following based on online articles.

Installed Termux app via APK. I can access the underlying files remotely. I tried to install python using pkg command but could not. Error below.
1|:/data/data/com.termux/files/usr/bin # ./pkg install python
This must NOT be run as root as it will break your environment (root will be required for nearly everything due to changed file permissions)
1|marlin:/data/data/com.termux/files/usr/bin # whoami
root

Installed Qpython on the device using adb. However, the issue is that when I launch adb command to launch Qpython, I see a prompt on the device - "Allow Qpython to access media Options - Accept or Deny". Since I don't have access to the device, I can't select either of the options. Is there a way to send a command via ADB to select - Accept?

I would appreciate any other ideas as well. My end goal is to run the speedtest-cli utility via adb shell on a device that is not physically accessible.

Solved this eventually. Here is what I did -

Installed Termux via downloading the APK and performing adb install com.termux.apk

Remotely launched the Termux app via ADB (monkey) (this is needed to complete the installation on the device) monkey -p com.termux -c android.intent.category.LAUNCHER

Once Termux is installed, I installed python and speedtest-cli on the device using adb input text and keyevents -
adb input text "pkg install python"
adb input keyevent "66"
adb input text "pip install speedtest-cli"

Then navigate to /data/data/com.termux/files/usr/bin. Here you should have the speedtest-cli script that you can invoke from adb shell
/data/data/com.termux/files/usr/bin # ./speedtest-cli
Retrieving speedtest.net configuration...
Testing from XXXXX
Testing download speed................................................................................
Download: 20.18 Mbit/s
Testing upload speed......................................................................................................
Upload: 3.98 Mbit/s

I had to add a COUNT param to the monkey command, i.e. monkey -p com.termux -c android.intent.category.LAUNCHER 1

And you can alternatively do am start -n com.termux/.HomeActivity to open Termux (though you may have to close the soft keyboard, e.g. input keyevent 4)

I basically followed the solution given by rfguy.
But I had this error:

could not find a version that satisfies the requirement speedtest-cli
(from versions: none)
pip is configured with locations that require tls/ssl

I solved installing openssl too on Termux, as follows:
# uninstall Termux
adb uninstall com.termux
sleep 2

# install the apk
adb install -r ~/Desktop/Termux.apk
sleep 2

# open the app
adb shell monkey --pct-syskeys 0 -p com.termux 1
sleep 8

# install python
adb shell input text 'pkg%sinstall%spython'
sleep 2

# enter
adb shell input keyevent 66
sleep 15

# yes
adb shell input text 'Y'
sleep 2

# enter
adb shell input keyevent 66
sleep 60

# install openssl
adb shell input text 'pkg%sinstall%sopenssl'
sleep 2

# enter
adb shell input keyevent 66
sleep 10

# yes
adb shell input text 'Y'
sleep 2

# enter
adb shell input keyevent 66
sleep 15

# install speedtest-cli
adb shell input text 'pip%sinstall%sspeedtest-cli'
sleep 2

# enter
adb shell input keyevent 66
sleep 30

# run speedtest-cli
adb shell /data/data/com.termux/files/usr/bin/speedtest-cli

# hide termux
adb shell pm hide com.termux

You can run this script with a sh .\this_script.sh if you are already connected to the device with an adb connect your_device_ip


text:
root chinese tablet Twrp is the only way?
Hi everyone I hope you are safe in this time's ! and I'm tring to do root into a chinese tablet

It is a nice piece i can vnc to my pc's or ssh and control by kdeconnect or use yatze etc i like it but i will love it whit cyanogenmod but that it is such a task to get it done just by me I'm starting for get it rooted now i have manage to get the scarttedfile and pull averything from.

there you can see userdata.img system.img etc. The mnt folder i place it, to mount system.img on it like
mount -o loop system.img mnt
And then modify the system and then flash it back again into whit SP_FLASH_TOOL it is almost the same as have root on it but i need place a swap file and made swapon probably I could doit from the file recovery.fstab wich cointain
    # mount point   fstype      device          [device2]

/boot       emmc        boot
/cache      ext4        /dev/block/mmcblk0p4
/data       ext4        /dev/block/mmcblk0p5
/misc       emmc        misc
/recovery   emmc        recovery
/sdcard     vfat        /dev/block/mmcblk0p6
/system     ext4        /dev/block/mmcblk0p3

I'm not sure about i will try but why? i have come here it is to see if some one could help me to either way build twrp for this devices or let me know how to place the magestik app on the system.img to do root hopefully some one here knows how to do so since twrp what it does is that rigth ? Flash the app in to the system i just should place it into the /app folder

magisk is systemless root method, only patch boot.img with magisk manager apk

Oh yes i found it thank you @alecxs

I follow the instructions from magisk to patch the boot.img file quite easy as alecxs  suggested and it is done


text:
ADB status offline when trying to root Kindle Fire
I'm trying to root Kindle Fire but it always show "ADB status: Offline" when I start "run.bat". Could you help me out of this problem? :(
I tried to plug, unplug, connect, disconnect the Kindle many times but nothing changes. I'm using Windows 7 x86.

Do you have the drivers installed? KFU comes with a file named install_drivers.bat that can do this for you.

I had the same problem with Kindle Fire Utility, and I actually figured this out.
The install_drivers.bat replaces the driver, which is not what you want! You need both drivers in place, the regular Amazon Kindle one, and the ADB driver. To get it to work:

Uninstall the Android ADB driver in Device Manager (right click to do this)
In Device Manager, right click the Kindle device and select "Update Driver Software", then point it to the included Kindle Fire Utility folder that has the driver /drivers/kindle

Then, it finally worked -- both drivers were in place -- then ADB showed up as online and I could get root, and do all the other stuff with KFU.

For those who tried many attempts in re-installing and rebooting but to no avail. This may be an alternative you can consider. This applies to those who ran install_drivers.bat and saw an error message regarding "./android/adb_usb".
This error is caused by our user name in windows which has one or more spacing (e.g. "Home User"). This one or more spacing breaks the batch file written to assist you in installing the relevant drivers.
Solution is simple, edit the install_drivers.bat and include double quotations (" ") to all file paths which has %userprofile% (line 9 & 10)
if not EXIST "%userprofile%\.android\" ( mkdir "%userprofile%\.android\" )
copy drivers\kindle\adb_usb.ini "%userprofile%\.android\adb_usb.ini"

Before re-installing your drivers, kindly ensure you removed the existing drivers via Device Manager -> Android Phone -> "Android ADB Interface" (or) "Android Composite ADB Interface"
Re-run install_drivers.bat and then run run.bat
Your kindle should be ready for rooting :)

IF you have run the install_drivers.bat file, and still have this.. Few things to do :
1) Reboot computer/Kindle
2) Re-install drivers through KFU
3) Re-install drivers manually.

and make sure it is "Android Composite ADB Interface", it won't work if it's "Android ADB Interface".

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


text:
Is it possible to use my SD card as ROM and my internal ROM as an additional RAM?
I've read somewhere that I can do some certain things to partition my SD Card specially to allot some part or all of it to trick the phone into thinking it's the "internal" ROM. For the life of me, I can't seem to locate that article anymore. I'm looking forward to rooting my phone and this has been on one of my to-do list once I get around to rooting.
The next issue I want to bring up is that, once I've achieved the above procedures, I typically won't be using my phone's original internal ROM anymore and was thinking if it was possible to allot that unused internal ROM as additional RAM. So in essence, my phone's internals will only be used as RAM and the ROM will be the SD card's burden.
That way, I can hopefully maximize my phone's usability. Can anyone shed some light on this?

I guess you mean "RAM" rather "ROM"? RAM: Random Access Memory; ROM: Read-Only Memory. Does not make sense to turn your SD into a ROM. In any case, what are you exactly trying to achieve?

@RichardBorcsik , I am no expert of Android Community Vocabulary, but do you have any pointer to support your claim? To my knowledge, ROM is used mostly as a short for "ROM Image" - not for the Internal Memory itself as a whole. My personal opinion is that using ROM for Internal Memory is wrong and source of confusion. The internal memory is a Flash one, eg. (E)EPROM

Related: http://android.stackexchange.com/questions/9767/other-than-portability-are-there-any-other-advantages-or-disadvantages-to-sto

Calling the internal Flash a ROM isn't so wrong. There are /boot, /system and radio sections that won't be written to usually. Nowadays, real ROMs don't exist any more. Almost everything moved to Flash (NAND or NOR) since the late 80's (replacing (E)EPROMs).

@Stefano, I'm not sure how the term got defined but as far as I know, in the world of Android, RAM = the space where apps are while they are running; ROM = the internal storage space on the phone.

@ShedoSurashu I agree that RAM isn't correct in this case either, sorry I added confusion with that. Internal Memory still sounds much better than ROM to me. But hey, I come from a different world ;-) @ ce4 real ROMs indeed have almost always been write once or write few; still find confusing calling the internal memory a ROM. These are pointers I found: what is a rom, ROM and Kernel, and of course wikipedia

I think you are referring to a hack commonly known as "Apps-to-SD" (a.k.a. "apps2sd" or "a2sd" on some forums).  This is where you re-partition your SD Card to have an Ext2/3/4 partition after the main Fat32 one, and then use a custom ROM/kernel combination that allow moving certain parts of OS to that partition.  Namely, all 3rd-party downloaded apps, phone's cache, and in some cases app data and dalvik-cache.
Also keep in mind that as with all custom ROMs and kernels, this needs to be built for a specific device, so you will need to find a ROM with built-in Apps-to-SD support for your specific handset.
This trick does free up a portion of internal memory for use as RAM.  However, as with most such solutions there are many cons to be aware of.

SD Card needs to be re-partitioned in a very particular way (data will be lost during partitioning, so back it up.)
Speed rating of the SD Card will play a large role in the system's overall performance and stability.  Slower cards will cause delays in apps starting up, for example.
The phone will not be able to function if you remove the SD Card, since the 2nd ext partition is now used by the phone as if it was part of its internal memory.
Extra wear and tear on the SD Card from excessive writes.  Unlike the EPROM in Flash memory, the SD Cards aren't really designed for many write cycles, so as time goes on you will find the card wearing out sooner than usual.
Device will not be as stable.  You may see ANR (application not responding) messages more often, as even the fastest SD Cards are still much slower than the internal flash memory.
Data corruption on the SD Card is a real issue, and can render your phone inoperable, requiring a complete re-flashing of the ROM and loss of all data.  So have recent backups always, and preferably not on the SD Card itself.

Well, to be honest, I just wanted to make it so that all apps I install will be placed on the SD card. I'm sure you are aware that if I do the "Move to SD Card" approach, some parts of the app still remain on internal memory, (Facebook, for example, still leaves around 2 or 4mb on internal storage.) So I want to make it so that all applications I install will be contained on the SD, thus making my phone only limited by the size of the SD card. As of right now, I'm limited by the ROM so being able to move it all to SD would be a great since I can always upgrade to a bigger one. (32gb)

And also, I plan on using a class 10 microSD. Will that be of any good?

In that case I must refer you to this question: http://android.stackexchange.com/questions/9767/other-than-portability-are-there-any-other-advantages-or-disadvantages-to-sto


text:
Are Google Books DRM protected?
In some countries Google Play offers ebooks. I was wondering if those are DRM protected.
Can I export them as e.g. epub? Or are they bound to be read within the Google Play Books application?

Some are DRM protected, others aren't.
One way I'm aware of to find out the ones that are DRM, is when you try to download the file for offline reading:

If the extension is .acsm then its a DRM protected book.
If the extension ends in .epub or .pdf then its not DRM.
protected.

Related reading:
File types for reading on your device
DRM options for downloads of books on Google Play

Related to exporting the eBook to a certain format or have it restricted to be read on Google Play, the above first link answers your doubt, where they stat that you can read or download to read your eBook on other devices or applications.


text:
How to pull the apks from my android phone
I have a rooted android phone. I am trying to pull the applications from /system/app/. However this simply does not copy the apk. What I have tried.
    adb shell
    su
    cd data
    cd app
    ls

A lot of applications are shown. However when I try to pull it it says
adb pull /data/app test

pull: building file list...
0 files pulled. 0 files skipped.

When I try to pull it from the system/app it pulls it but no file is created on my computer. I have specified the file name, tried with it and without it. Could someone please tell me what I am doing wrong?
I have also tried it individually with specific apks. But that doesnt work either.

Releated http://android.stackexchange.com/questions/11333/where-is-a-downloaded-apk-placed-in-android-phones and http://android.stackexchange.com/questions/4510/where-are-the-apk-files-stored-on-my-android-device

I have gone through them. My issue is that I cant use adb pull to copy the apk onto my pc.

If you're using su to get root privileges when you shell in (which you've indicated you are) then that means you're not root on the shell by default. adb pull fails with that error message because it doesn't have permission to index the directory and pull the contents.
You should be able to restart adb on your device with adb root first:
adb root
adb pull /data/app/

And a fully illustrative example to show that this is the likely issue (I used /data/misc just because it's smaller):
[09:27:23] ~/adb-test $ adb pull /data/misc/
pull: building file list...
0 files pulled. 0 files skipped.  <-------------- Same issue because we're not root yet!
[09:27:49] ~/adb-test $ adb root
[09:27:56] ~/adb-test $ adb pull /data/misc/
pull: building file list...
... Snip all of the individual files here ...
24 files pulled. 0 files skipped.
65 KB/s (7732 bytes in 0.115s)
[09:27:59] ~/adb-test $

Another option for restarting adb as root is Chainfire's adbd insecure app. Some ROMs will not support the adb root command, though, as they were not built to allow it. This will be true if you root a stock ROM without installing a custom one, for example.

It says adbd cannot run as root in production builds

Sounds like something is not right with root.  Which device is this, and how was it rooted?

Also, some hits on Google search for this error seem to indicate that this could also be fixed with different USB drivers.

@Sab: You can try the adbd insecure app instead, although it costs a nominal fee. Your ROM may not support the adb root command, unfortunately. Another option would be to try to find either a boot image that supported unsecure adbd startup or a different ROM entirely.

@Chahk- The phone is rooted properly as far as i know and i have checked it using https://play.google.com/store/apps/details?id=com.joeykrim.rootcheck&hl=en.

@eldarerathis So i just install the apk into the phone and run it and it should work? Or is it a better option to just use a custom rom

@Sab: In theory yes, you just install the app and run it to restart adbd as root (you get a 15 minute refund window if you want to test it). A custom ROM would be free and you wouldn't have to worry about using the app, but a bit more involved to install. You could probably go either way, but I think those might be the only real options to get adb pull working on restricted directories, unfortunately.

@Sab: Also, now that I look at the XDA thread again, Chainfire has provided a download to the app for free on the forums (bottom of the first post), so you can try it without worry.

Yep. I realized that now.But for expirience sake I guess i will install a custom ROm. Thanks for the help

You do not need adb to run as root to pull the actual files, but you do need it to run as root to list the directory in which they are located (which would be an implicit requirement to pulling the whole directory).
If you want to do it without root, pull /data/system/packages.xml and extract the code paths of the applications from there, then adb pull them individually by their full path names.  That could be a great opportunity to learn about grep and xargs - or use your favorite host-side scripting language.

First, make sure you have the latest version of ADB utility by downloading the newest Android SDK version from here.
The syntax is adb pull <path to apk> <path on PC>.  For "path on PC" portion try specifying the full path, with drive letter like so:
adb pull /data/app/myapp.apk c:\test
To pull all of the apps from /data/app directory try this:
adb pull /data/app/ c:\test

Let me update the adb and try. Syntax wise I dont think I am making any error.

You were missing the "/" after the source path if you were trying to pull the entire directory.

I guess that was a typo besides it doesnt work with individual apks either. My system/app shows that these many bytes have been transferred but I dont see anything in the directory where I run adb pull or anywhere else.

Actually no, the closing / isn't necessary after all.


text:
How to run commands as root in Connectbot?
My phone is rooted CM7 and Superuser.apk has Connectbot in the allowed list.  Titanium backup reports that it has root access, to prove that I actually have root working.  I seem to remember being able to run commands in Connectbot as root in the past.
But now, I go into Connectbot → Local, and try to run a command using sudo, and it just says "permission denied".  No pop-up or anything.   Same for the Terminal Emulator app.  How do I run commands as root?

The su binary works just like it does on Linux; it runs all commands that follow as root until you type exit (or terminate the process, etc.). sudo <command> essentially does:
su
<command>
exit

Android doesn't normally include sudo, so If you wish to launch commands like you would with sudo, the syntax is as follows:
su -c "[command_1;command_2;...;command_N]"

For example, to get a list of installed packages in "root" mode, you can either do
$ su
# pm list packages
# ........ <listing of packages scrolls down> ......
# exit

or
$ su -c "pm list packages;exit"

Oh. If I use su by itself, it works. Connectbot is granted superuser permissions and then I can do stuff as root. Does sudo ever work, then?

Linux also have su binary.. so, don't say su as android equivalent of sudo.

sudo isn't installed on Android by default; sudo was written to give people the ability to access certain commands (via configuration) instead of using su to log in as root all the time. su is the more important command when you don't have uid 0 at all on your device.

@SachinShekhar Feel free to correct my answer with proper verbiage.

For some reason, this is not working for me in CYM11 (inside an app). For su -c "pm..." I get Permission denied, and the app appears with a Deny in the logs. I have another apps with Allow, though. No Toast appeared asking for permissions... Any idea?

wow! I didn't know -c was the tricky option to use. I  just kept trying, say, "su logcat" and it never worked.


text:
How to select whole line of text?
Sometime there is a need to select only one line of text or paragraph from very large article?
Instead of manually enlarge the range of selection, is there an option at popup that can select line in one/two clicks? I had trouble of selecting long instruction that are outside of the screen.
Selection is in chromium based browser, (also other apps like sms reading, simple text editors). OS is Android 10 at phones with touch screen.

You should give a bit more context. What app are you asking about?

Please edit your question and describe an example in detail. Please also name the used app, and you device model + Android version.


text:
How to stop update notifications for disabled apps on a Family-Link managed device?
Running Android 6.0.1 on Nexus 7 device, where I have disabled the following apps:

Google Play Movies and TV
Google Play Music
Google Play Newsstand
Google Play Books

Before disabling, I cleaned the cache and data.
However, the play store constantly sends me push notifications to update these apps, despite the fact they are disabled. How can I stop this?
I have also stopped all notifications from the Google Store app, this did not help either

Settings → Notifications → Updates is off
Settings → Notifications → Auto-Updates is off
Settings → Auto Update apps is off

And the worst thing is that you can't dismiss these notifications, so they stay all the time in the pull-down menu and push down the notifications I might care about.
UPDATE
The tablet has Family Link installed and setup, which seems to be preventing enabling Developer options, hence cannot enable USB Debugging to attempt to delete the apps via adb.

I assume that the device is not rooted, in that case you could just delete those apps. Or install a custom ROM (junfortunately LineageOS has already dropped support for Nexus 7) without pre-installed Google apps and just install the OpenGApps mirco package.

No, not tired rooted. I tried other roms in the past but performance slows down with such.

Have you tried resetting the Play Store?
It is possible (although very unlikely) that the Play Store has failed to detect that the apps have been disabled.
Go to Settings → Apps → Play Store → Storage → Tap the Clear data button.
Note: This will reset all your Play Store settings (update settings, notification settings etc.) to default. You might have to adjust these settings manually again.

If the above steps still don't solve your problem, try the below steps —
First, you'll need to enable USB debugging from the phone settings and download the Android debugging platform-tools package on your PC.
The official documentation for this can be found here.
Then, connect your phone to your PC with a cable and make sure your phone is listed as device as given in the above documentation.
Uninstall the culprit apps for the primary user account
adb shell

This will bring up a command line shell prompt of your phone. Then enter the following commands —
pm uninstall --user 0 com.google.android.videos # Remove Play Movies
pm uninstall --user 0 com.google.android.music # Remove Play Music
pm uninstall --user 0 com.google.android.apps.magazines # Remove Play Newsstand
pm uninstall --user 0 com.google.android.apps.books # Remove Play Books
exit

The apps should not appear in your Play Store's apps list anymore.
EDIT - For Family Link managed devices (Based on OP's observations)
If the device is being managed by Google Family Link, then there is no way to access Developer Options on the managed device because Google Family Link makes advanced settings (like Developer Options, Install from unknown sources etc.) inaccessible on the managed device.
Also, as mentioned by OP in the comments below, if these settings are modified before enabling Family Link management, they are reset to their defaults as soon as management is enabled.
However, these advanced settings can be controlled by parents from the Family Link app for parents, and they can be accessed using the following steps —
Open the Family Link app for parents → Select your child → Look for your child's managed device → Tap Settings on the device card
Here, you should find controls for most of the settings which are not accessible from the managed device anymore. Look for the USB Debugging developer option and turn it on.
Then, by following the steps mentioned above to connect the managed device to a PC via ADB, you should be able to run the commands to get rid of the apps from the managed device.

You might also try disable-user first, in place of uninstall, if that doesn't solve your problem, then try the uninstall commands.

First proposal did not work. Will try tonight with the second one, as for some reason, USB is playing tricks on me - tapping the build number 7 times do no enable developer mode. Will dig deeper and get back.

That's weird, are you using the stock firmware? I found a YouTube video that might be helpful.

I am from what I know, but the tapping does not unlock it. Here is what the About Tablet looks like:  http://prntscr.com/rmo70x . Submitted a question on that matter as well. Unfortunately this does not even allow me to root it now :)

Not sure why it doesn't work for you. I read in other forums (like this) that sometimes a FRP lock can lock you out of developer options. Apparently, some people were able to bypass this, by directly creating a shortcut to the Settings app Developer Options activity or by installing apps like this or this. (Install at your own risk!)

I managed to get around this. It seems one cannot enable dev options, when using the Family Link app (the table was supervised).Once i removed the account from supervision, I managed to enable USB Debugging and run the commands @ManSamVampire provided. They ran successfully. Then I installed the family link and again the undesired notifications came back. I guess, Family Link adds new account, where USB Debugging cannot be enabled, hence cannot run the above commands.

@checo, if you enable USB debugging and then enable Family Link, does USB debugging get disabled automatically?

@checo, using this or the ability to add multiple users in Android, can you add another user account, to the device, which is not managed by Family Link? This way you should be able to enable USB debugging for this new user account and, with the commands I provided, uninstall the culprit apps for the child account with the appropriate number for the --user option.

@beeshyams I cannot disable the admin privileges for Family Link, as the option is grayed out and cannot be clicked,

Unfortunately, enabling USB debugging before Family Link and trying to use it after I enable Family Link back does not work - again the developer option is gone, tapping build does not enable it, and adb shell says no devices found.

ManSamVampire thanks for sharing this option of Family Link. With it, I could not only enable adding another user, but there was directly an option to enable USB debugging. With it, I could now run the commands. Thank YOU!

@checho Glad to know it worked for you! I have edited my answer based on my understanding of your observations, feel free to edit it to add more details!


text:
Cannot open PDF file using Google Drive app
My device is running on Android Oreo, and I have study notes as a PDF file on Google Drive (link to the file for testing), but I can't open it on Google Drive app.
My file is not opening and it's saying "No connection" even though I've got an awesome connection. I don't know why it's not syncing my file.

I've even cleared cache, refreshed my Google Drive, and also rebooted my phone.
How to fix this issue so that I can open my PDF file from Google Drive app?

It looks like a bug with Google Drive. I had the same problem in opening the link
Workaround
I pasted the link in Chrome and it opened! You should report the bug, also
in Playstore

(Click to enlarge)
To download the file, open Chrome in desktop mode and click the  option (print).

What I do, because I have the same issue, I use Open With option works like a charm. I use the Google PDF Viewer

Oh, lol, but at that time I've got no other option s other than this


text:
How to disable wallpaper blur effect on Samsung Galaxy S9 home screen?
I've set an animated wallpaper on my Samsung Galaxy S9 (one that was included with the device). It displays correctly on the lock screen, but somehow gets blurred on the home screen.
Lock screen (no blur) | Home screen (blur)

Is it possible to disable this blur effect?

It's not blurred wallpaper, it applied two wallpapers, one for the lock screen and the other for the home screen.
To set the wallpaper (single wallpaper for both screens):

Open the wallpaper app, and select any wallpaper, and select this option set as Home screen and Lock screen OR set Both (option in Google Wallpaper app).

Press and hold the home screen, the screen will show three options, Wallpaper, Widgets, and Settings (home screen). Tap on Wallpaper, and select any wallpaper, the select set as HOME screen and Lock screen OR Both as options mentioned above.

Press the home screen. On the bottom, press launcher themes. Disable the blur effect to all.


text:
What is this triangle system notification icon on Samsung Galaxy S9+?
What is this triangle system notification icon on Samsung Galaxy S9+? It appeared recently. And I can't even imagine what is it.

Screenshot (click image for larger variant)

That's a Data saver icon.

The icon is different from the data saver icon in stock Android.
  Samsung started to use this data saver icon in Android Oreo update as
  explained in this guide

This Galaxy S9 status icon appears  if you enable data saver in Settings → Connections → Data usage →  Data saver.

Data Saver status icon in Android Oreo update for Samsung


text:
Is there a way to set up a firewall on mobile hotspot to block incoming connections?
I've been using the Android mobile hotspot to get an Internet connection while traveling. The stock hotspot is fine for my laptop which is firewalled, but there are a few devices (smart TV, game system, etc) which are not at all secure to put onto an open network.
I want to have a firewall on my mobile hotspot (for blocking all external traffic except return traffic). Is there any way, including app for that? Preferably open source but even paid is fine. My Android isn't rooted, so I would prefer a solution that doesn't require rooting my phone (if possible).
Just in case you might think NAT provides adequate firewalling for security, read here. TLDR; NAT is not a security layer.
I've already tried searching for this here, but I only found a question from someone trying to filter IP addresses that was never answered. None of the hotspots I found in the Play store offered any port blocking features.
I should mention that I have reason to believe my carrier's NAT does not block incoming connections. That reason being that running a web server on my phone using NodeJS in Termux will be accessible over the Internet.

I want to have a firewall on my mobile hotspot (for blocking all external traffic except return traffic). Is there an app for that?

No, apps can't do it. It's something at lower level, apps aren't that privileged. VPN apps are a workaround for outgoing connections (because of possible filtering based on UIDs and SOcket_MARKs), but not for incoming connections.

My Android isn't rooted, so I would prefer a solution that doesn't require rooting my phone (if possible).

Not possible without root (AFAIK), but with root it's simple; thanks to Linux kernel. Since Android uses default policy ACCEPT, drop any unwanted packets:
~# iptables -I INPUT -i rmnet_data1 -m conntrack ! --ctstate ESTABLISHED,RELATED -j DROP
~# iptables -I FORWARD -i rmnet_data1 -m conntrack ! --ctstate ESTABLISHED,RELATED -j DROP

First rule will allow only return traffic for Android device, second for tethered hosts. Replace rmnet_data1 with whatever interface your Mobile Data is using. I hope you won't want to block incoming connections from WiFi interface (wlan0) to let hotspot work.
Note that iptables rules on Android are dynamic, netd keeps on updating them with network changes. So better use these rules with some app like AFWall+.

I'm not an expert but as per my understanding, open ports make sense only when you have a public IP, preferably static, as is the case with fixed line broadband connections and special SIM cards with fixed public IP service. Mobile Network Operators (I assume you are connected to Mobile Data) always do Carrier Grade NAT (sometimes double NAT), basically to address the problem of IPv4 Address Shortage, but it also serves additional interests. They run e.g. transparent caching proxy servers and DNS servers behind this NAT to minimize load on internet bandwidth and to improve performance by reducing latency. When you are behind CGN:

Your public IP changes e.g. when you move.
Private IP you get (usually 10.x.x.x) is assigned by MNO's DHCP server, so it keeps on changing e.g. when the lease expires or when you reconnect.
Even if you get a fixed private IP, your ISP/MNO should forward ports from public IP to your private IP, which they don't. Because there could possibly be hundreds and thousands of customers wishing to forward the same port from same public IP to their devices.

So keeping incoming ports open in this setup serves no purpose except making the MNO's network vulnerable to attacks. And therefore most of the MNOs block incoming connections on all (or under 1024 or at least commonly used) ports. But it can't be tested because of CGN, which - as a side effect - is an additional layer of security, though not a firewall. You have a private IP, not routable on internet, no one can access you from outside, this should be considered security, more or less. That's why VoIP connections are always initiated from clients by letting the STUN server know where they are. And we have to go for solutions like this to accept incoming connections behind NAT.

there are a few devices (smart TV, game system, etc) which are not at all secure to put onto an open network.

Additionally your Android device is also doing NAT on traffic coming from tethered hosts. And there's no DMZ, UPnP or normal Port Forwarding set up on your Android device. It's another protection layer.

I have reason to believe my carrier's NAT does not block incoming connections

It would be really knowledgeable if you share how did you conclude this. However if you are sure that their NAT can be traversed/bypassed easily without any support from client side, or if you don't have trust on MNO or their firewalls, do consider setting up a strong firewall.
Common users are more focused on the apps installed on the phone; they are the actual spies. They collect personal data, leak information, do analytics, user profiling, tracking and targeted advertisement. So an outgoing firewall is of much importance.
Complicated firewall solutions for incoming connections are required on servers with listening ports. Android devices don't run servers (usually), except a local DHCP/DNS server (dnsmasq) for hotspot. If you run any services which accept connections from internet, it's another valid reason to setup firewall.


text:
Would disabling the package installer prevent updates?
Would disabling the package installer prevent updates? If so, how can I disable the ability to sideload apps while still being able to update apps already installed?

Disabling the package installer would prevent apps from making the user request to install an app. Technically, they would still make the request but it would not show up, with the installer  being disabled.  That said, if a system app has INSTALL_PACKAGES permission (such as Play Store) or a third-party app has root access somehow, disabling the package installer would make no difference. Similarly, disabling it would not prevent sideloading from adb.

So if I were to find a way to disable install via ADB, install an APK updater app that auto updates apps and then uninstall the package installer, would the apk updater still be able to update apps already on the device, but the user wouldn't be able to install new apps if no other installers had root permission? Sorry if this is a stupid question but I'm pretty new to all of this and I'm still learning about the android structure and it's components.

@ShtarkBochur it is not a stupid question but a genuine question arising out of an immediate need. Unfortunately, I'm not well-versed with the internals of Android. However, others may be able to help with this new question of yours if you ask it as a separate question. If it helps, link your current question for reference purposes. :)


text:
Get IMEI number with ADB command
I am working with ADB on my Samsung Galaxy device. I want to get the IMEI number of the device using ADB, but I have been unable to do that.
I tried the following:
adb shell dumpsys iphonesubinfo

but it returns nothing.
I also tried with Service Call Command:
adb shell service call iphonesubinfo

but it gives me a strange result like this:
Result: Parcel(
0x00000000: 00000000 0000000f 00350033 00390038 '........3.5.8.9.'
0x00000010: 00320037 00380030 00350034 00350031 '7.2.0.8.4.5.1.5.'
0x00000020: 00300031 00000033                   '1.0.3...        ')

Can anybody help me out with this?

You could try  calling an intent like below:
am start -a android.intent.action.DIAL -d "tel:*%2306%23"

@esQmo_ But that will just open Dialer wirh IMEI getting code. I don't user to manually do anything.

Related: How to get 2nd IMEI number using adb?

Try putting this code in to a .bat file and running it:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=6*" %%a in ('adb shell "service call iphonesubinfo 1 ^| grep -m 1 \"'\""') do (
set imei1=%%a)
for /f "tokens=6*" %%b in ('adb shell "service call iphonesubinfo 1 ^| grep -m 2 \"'\""') do (
set imei2=%%b)
for /f "tokens=4*" %%c in ('adb shell "service call iphonesubinfo 1 ^| grep -m 3 \"'\""') do (
set imei3=%%c)
set imei=!imei1!!imei2!!imei3!
echo !imei! > imei.txt
for /f "delims=" %%d in (imei.txt) do (
set DeviceIMEI=%%d
set DeviceIMEI=!DeviceIMEI:'=!
set DeviceIMEI=!DeviceIMEI:.=!
set OIMEI=Phone IMEI  !DeviceIMEI!
)
echo %OIMEI%
pause

I got it from this StackOverflow thread:
https://stackoverflow.com/a/34362809/8173870

Given the tag 7.0-nougat, I'm assuming you have or are targeting Android Nougat. Android Nougat comes with toybox which acts as an alternative to busybox and has some useful utilities. I managed to use those tools to print IMEI like this:
adb shell
service call iphonesubinfo 1 | toybox cut -d "'" -f2 | toybox grep -Eo '[0-9]' | toybox xargs | toybox sed 's/\ //g'

Since you wouldn't be getting an interactive shell when using a script or an app, you can pass the commands like this:
adb shell "service call iphonesubinfo 1 | toybox cut -d \"'\" -f2 | toybox grep -Eo '[0-9]' | toybox xargs | toybox sed 's/\ //g'"

The following ADB command works on my Windows PC to get clear IMEI result:
adb shell "service call iphonesubinfo 4 | cut -c 52-66 | tr -d '.[:space:]'"

thanks for sharing the best code. I get IMEI result by this code, but it's only show 1st IMEI.
If I want to get result 2nd IMEI what should we put the code ? thanks for Answers.

I changed the code from iphonesubinfo 1 to iphonesubinfo 4, which is the correct service code to get the full IMEI.
So try: adb shell "service call iphonesubinfo 4 | cut -c 52-66 | tr -d '.[:space:]'", and see if you get also IMEI 2.

You may not have realized it, but you've actually posted the answer to your own question:
  Result: Parcel(
0x00000000: 00000000 0000000f 00350033 00390038 '........3.5.8.9.'
0x00000010: 00320037 00380030 00350034 00350031 '7.2.0.8.4.5.1.5.'
0x00000020: 00300031 00000033                   '1.0.3...        ')

Specifically, the portion to the right:
'........3.5.8.9.'
'7.2.0.8.4.5.1.5.'
'1.0.3...        '

Simply put it all on one line and remove the single quotes and it becomes:
........3.5.8.9.7.2.0.8.4.5.1.5.1.0.3...
Now remove the dots and you get:
358972084515103

(aka your IMEI number)

esim imei is available via:
input keyevent KEYCODE_CALL;
sleep 1;
input text '*#06#';
uiautomator dump --compressed /dev/stdout\
    |tr ' ' '\n'\
    |awk -F'"' '{print $2}'|grep "^[0-9]\{15\}$" \
    |nl -w 1 -s':'\
    |sed 's/^/IMEI/g'

IMEI1:xxxxxxxxxxxxx
IMEI2:xxxxxxxxxxxxx

This is the only solution that worked for me on Android 12. Note that I have a non-stock dialer installed, so I had to select the dialer from the screen - i.e. this is interactive. But it's still better than trying to copy the IMEI to the computer after checking with *#06#.

adb shell dumpsys iphonesubinfo works only for phones below Android 5 Lolipop.
Because Android Nougat is over 5.0, you need: adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=

i am using Windows as OS so it gives me Error awk not found. What would be Equivalent of awk in windows Command Prompt?

There is no equivalent to awk on Windows. But you can simply install all the *nix tools also on Windows. A very simple way to do that is scoop. Or you have to create a windows tool that parses the command-line result without those tools.

Using android-svc:
android-svc --adb call 'iphonesubinfo.getDeviceId();'

would return something like this:
358972084515103


text:
Copy all contacts from HTC Desire HD to my google account
I'm trying to sync all my contacts from my HTC Desire HD to my google account but I can't see them anywhere in my google account. I have already found several tutorials on the the internet but still can't make my contacts visible in google account.

You can do this the old-fashioned way if you want to do one-time sync only:

Go to Contacts and export to SD card. This will create a handy vCard file that will reside in the root of your SD card. Most often this will be 00001.vcf or some such.
From a desktop computer, go to Gmail contacts and choose Import from the menu above.

From the desktop you can add and edit your contacts much more easily than you would on the phone. However, I found syncing to be unreliable sometimes, especially with HTC Sence (I had the stock ROM previously on my HTC Desire) -- I had to deal with duplicate contacts and mysteriously vanishing phone numbers on a few occasions.


text:
Do phones have a power supply?
This is definitely a noob question, I'm not an engineer but as far as my knowledge goes, the power supply on a phone would be its battery.  However, my Nexus One stopped turning on recently, the battery charges fine as the LED indicator shows, but when I try to turn it on I get nothing.  This is the result of me taking the phone apart and trying to clean the contacts of the sim slot as it wasn't recognizing sim cards, and after putting it back together I can't seem to turn it on anymore.
I then took the phone to a repair center and the guy told me the power supply is bad that he would have to replace it, the battery is fine but its not getting power to the device.  So my question is, what is this power supply he speaks of?  The battery is fine, and hes obviously not talking about the power adapter... and what could cause this power supply to fail?  I followed the directions here to take apart

It's quite possible you accidentally shorted out a circuit or otherwise damaged some part (ribbon cable, connector, etc.) while disassembling or re-assembling your phone.  The "power supply" line the tech fed you is probably just that, something they said to avoid going into too much technical detail.
It's unlikely that they will bother with figuring out which exact part is fried, and will probably opt for replacing the phone's whole main board instead.  Be mindful of the price they quote you, because these days you can get a used Nexus One for the price close to what some parts retailers charge for a replacement motherboard.

Well thats the thing, he told me it was $45 for the part, which means he is not replacing the entire board.  I guess I will find out when I get it back exactly what part was replaced.

turned out i had loosened a ribbon cable and also damaged a some pins

Power Supply is actually a term with some actual, albeit generic, significance and meaning.
In handsets, the power supply is probably(I'm not an electrical engineer, or expert on device hardware) a component that regulates the power supplied to the device (keeping the voltage constant, for one thing), and manages the physical charging/discharging of the battery.
As far as what could have damaged it, it could be anything from dropping/shaking the device if there is a loose connection, to a short caused by water, to overheating. Unless you can find a connection that got loose, and the power supply is indeed fried, you'll need to get it repaired.
If you think there might have been any water damage, put the phone in rice for a day or three, it will dry out most liquid that may be in the device, and it might just work.

no there is no water damage, the only thing that makes sense to me is that a component got damaged while I was taking the phone apart, maybe I was too rough with it.

It's possible. I wasn't sure about water damage, as you didn't go into detail on how you tried to clean the SIM slot contacts, but it seemed worth mentioning. All it would take is jiggling one wire loose, and who knows what the results will be.


text:
i7500 Unlock Button Broken
My i7500 doesn't unlock anymore (the screen unlock). I have a feeling the actual, physical button is broken, because the phone is on and responds to the power button being held down, but won't unlock.
Things I tried that failed:

Rebooting does nothing.
I tried the sqlite thing (updating one of the settings so that the phone doesn't lock by default or whatever), but my phone is not rooted, so I only got "access denied."
I tried using adb shell to send the command input keystate 82, which supposedly  unlocks the phone, but nothing happened.
Sending event send EV_KEY:KEY_SOFT1:1 via adb (I get access denied).

If I can figure out how to unlock it once, I think I'm game. The phone runs a non-local version of Android 1.6. It's not rooted, sadly, and I really want to avoid formatting it if possible.
Here's what I'm doing right now:

Install NoLock via adb: adb install E:\download\NoLock1.05.apk
Run NoLock via adb: adb shell am start -n org.jraf.android.nolock/org.jraf.android.nolock.activity.MainActivity (prints Starting: Intent {cmp=org.jraf.android.nolock/.activity/MainActivity })

So, if I can only unlock my phone now, and configure NoLock, I think I'm good.
How can I get my phone to unlock, and how can I then unlock it without the unlock key? Is the current path of nolock going to work?
Why doesn't sending input keystate 82 unlock the screen?
Why doesn't NoLock automatically unlock the screen?

This happened to me again. The process of unlocking was as follows:
- Call the Android phone from a normal phone
- Pick up the phone
- Press the options button
- Click the button to add someone to the call
- Press the "go back" button
It should return you to the home page.
After that, setup Pattern Unlock. It only uses the touch-screen, so it works with a broken lock button.


text:
Is there anything malicious with "play support libraries"?
I was doing my daily stuff on my Android Nougat.
And then something started downloading, "play support libraries". I think OK right. But the moment downloading stopped, and installation started my mobile's screen started showing a black screen for 2 secs with of an interval of about 5 secs. It continued for about 2 mins. And then the black screen was no longer appearing. But, now my phone started lagging.
So, I was thinking if that was indeed Play support libraries or something else.
I'd also noticed that the first character of any word was not capital, i.e. "play support libraries".  Which is a small mistake lazy developers often make while making vulnerable apps with the name of any system app, e.g. "phone" / "settings", so the user doesn't notice, after the app gets installed silently, and can do its work without interference.
So, is there anything I can do to check if my mobile's safe or not?

What are the Android Support Libraries?

The Android Support Library is a set of code libraries — resources that can be used to build features and/or functions into an app — that provide things like features or widgets that would normally require an actual Android framework API to include in an app.

The article goes on to state that:

There are generally two types of support library packages. One set enables features of new versions of Android on devices running an older version and the other provides standalone features for all versions of Android. Because these aren't part of Android proper, they can be improved and updated without waiting for a major Android platform release.

Why are the Android Support Libraries important?

we don't have to wait for the next version of Android to get an update if a feature is provided by the Support Libraries. This allows developers to add and improve how their apps work, especially on phones that don't run the current version of Android, whenever the libraries are updated.

Your device is not infected by a virus or something else. It is just Google deciding to update your device (even when did not want the update to add more features).
That said, on this thread from Google, there are other users who have noticed lagging the first few minutes after the update.
Source: What are the Android Support Libraries and why are they important?

Around 30mn before seen this question, my device was updated with 'play support libraries', I was looking to know what it was and then your question appeared.

Nothing like that happened to your device? Like lagging, etc.

I didn't not notice any lagging mainly because i went straight looking what 'play support libraries' were, but other have noticed like you. See edit

One thing I have noticed is that since the update, I get  the msg 'Google Playstore has stopped`. I guess that because I use a modified version of the Playstore.


text:
Upgrade Android version of Mediastar Diamond MS-X2 satellite receiver
I have Mediastar Diamond MS-X2 4K with Android 7. 0 Nougat. After downloading the last upgrade file from the official site and restarting the device, it shows this error: "installation aborted".
What should I do?

You will need to contact MediaStar... these devices are not "standard" Android devices and use a specialized custom version.

You can fix it by USB :

You need to download the update file MS-Diamond-Z2_V3.4.1_2018-10-24 and put it on a USB drive in a folder

Then change both the name of the folder and the name of the update file to

Folder: RomUpdate
File: RomUpdate

Then turn on your Mediastar Z2 while you are pressing the Power button in front until the receiver screen shows an update

Then keep your hands away and the receiver will do the update automatically

Welcome to Android Enthusiasts. Going by your name here, it appears you are associated with Mediastar. If that is the case, please disclose your affiliation in the answer by [edit]. Thank you