# Question
Title: Understanding Records.json data points from google geo takeout
Within the records.json file from Google Location data takeout, there are activity types with accuracy values.

I am trying to understand how accurate an activity type of, On Foot / walking will be. How is this calculated ? GPS fixes via wifi scan ? In vehicle activity?

I am a digital forensic investigator.

# Answer
strong textLocation accuracy is controlled by GPS, Wifi and Cell towers. For it to be more accurate, you need to to turn on `High Accuracy Mode`.

> How Maps finds your current location Maps estimates where you are from sources like:
>
> **GPS**: Maps uses satellites to know your location up to around 20 meters. When you're inside buildings or underground, the GPS is sometimes inaccurate.
> **Wi-Fi**: The location of nearby Wi-Fi networks helps Maps know where you are.
> **Cell tower**: Your connection to mobile data can be accurate up to a few thousand meters.

From Find & improve your location’s accuracy

**Step count** is measured vis silicon devices on the phone and they are pretty accurate. However distance travelled using step-count data is dependent on the user entering their height. From this apps such as `Samsung Health` work out your stride. This is an estimate at best.

**Walking a track** Google maps already knows how long a track or walking route or roads are. If you are waking or running these, then it is exact +/- Location accuracy. Pure GPS error is about 5m in clear sky. I have seen figures of sub-metre accuracy with the use of Wifi and Cell Towers. But I cant find any references right now.
> 1 votes

---
Tags: gps, geolocation
---


# Question
Title: Can I allow audio from only Spotify during Do Not Disturb?
I've started listening to music on spotify with the sleep timer as I go to sleep. However, I normally have Do Not Disturb enabled when I sleep, and Do Not Disturb blocks all media because I have the "Media sounds" setting setting to not be able to interrupt. I don't want to enabled this setting because I don't want things like text messages to ding during the night.

I see there is a way to allow notifications from specific apps through Do Not Disturb, but is there a way to allow audio from specific apps? Specifically, I'd like Spotify to be able to play when I have Do Not Disturb up, and nothing else.

I'm running Android 13.

# Answer
> -1 votes
You can control which Apps can break the "Do Not Disturb"

* Open Settings
* Search for  `Disturb`
* Select `do not disturb`
* Select `App notifications`
* Select `Add apps`
* Select `Spotify`

---
Tags: settings, spotify, do-not-disturb
---


# Question
Title: How can I save Android photos in the WebP format?
WebP images are at least 20% smaller.

Windows can open WebP images after installing the WebP codec.

# Answer
> 1 votes
**Open Camera added WebP support in version 1.45 (2019/01/14).**

It can be set from Settings - Photo Settings - Image format - WebP.

However, from the official help page, it should be noted that:

> WebP - This is an alternative (lossy) file format to JPEG. It offers smaller file sizes, but saving takes longer, and some applications may not support WebP images. *Note that WebP images are generated by converting from a JPEG with 100% quality (since the Android camera API does not have native WebP output).*

<sup>(Emphasis added)</sup>

There was also a remark by the developer on a discussion for "WEBP Support" back in 2016:

> Unfortunately this isn't straightforward, as the camera driver will only output JPEG or (if supported) RAW. Converting from JPEG means it's already lossy (I support one could set 100% and convert, but that doesn't necessarily mean lossy AFAIK, just minimal compression). Converting from RAW could work, but requires adding support to decode/convert RAW images so is a fair bit of work (Android's RAW support is only for getting the files from the camera API, and saving them).

---
Tags: camera, files
---


# Question
Title: How can I force the Google Sheets app to update to the server?
I have been using the Google Sheets app a lot on my Android phone, and I have discovered that if I don't force the app to store the spreadsheet to the server, it sometimes loses updates.

This is the sequence I currently use to force the app to save to the server:

* Clicks the check mark at the end of the "*fx*" input box.
* Click the check mark at top left.
* Click the "\<" mark at top left.
* Click on the spreadsheet again, and scroll back to the desired position. That's a lot of steps for something that happens automatically after just a few seconds in the browser version, and pretty annoying (though not as annoying as losing data).

So, the question: How can I more expeditiously force the Google Sheets app to update to the server?

# Answer
> 2 votes
In 2014, when I originally asked the question, the multi-step procedure described in the question was necessary.

In 2015, an app update made it update automatically, as long as a net connection was available. So the simplest answer is to update the app to a version from 2015 or later.

The risk of data loss appears to persist (as of 2023) in the event that a spreadsheet is edited off-line when net access is unavailable, if the app shuts down (such as from contention for memory with other apps, or forced shutdown).

That Sheets behavior is different from the Google Docs app, which appears to store changes in local storage until a net connection is reestablished. Docs may still misbehave in the event of conflicting edits, but that's unavoidable.

---
Tags: google-drive, google-sheets
---


# Question
Title: Getting latest update of certificate/credential/SSL store
I realize sometimes when browsing with HTTPS, it shows the certificate is not valid, "This certificate is not from a trusted authority". Clicking "continue" will just pop up the same warning. That time, I start thinking the certificate store is not updated. I try to compare with Windows trusted CA which will be updated automatically.

I think the certificate must be updated in a period of time since the validity of trusted CA is about 1 to a few years.

I cannot find this thing mention in Android anywhere. Does the way it manages certificates is different? How can I make sure I get the latest update?

# Answer
Many years later, this will finally be addressed. Android 14 will update the trust store via Google Play Store. Earlier versions required the device manufacturer to push an over-the-air update with new certificates, which wasn't always provided quickly or at all for older devices.

https://www.xda-developers.com/android-14-root-certificates-updatable/
> 1 votes

---
Tags: certificates
---


# Question
Title: Regain access to phone with Family Link parental control
My phone Motorola E22i (XT2239) did an update and is asking for my password (not a PIN). The password is requested on the lock screen. It's never looked like this before.

I tried my Google account password and my dad tried his password, but neither works. We also tried resetting it, but it has reset protection, so we can't even do that.

What password does it want?

# Answer
Supposedly you can reset the screen unlock password. I havent tried it

> **Unlock a Motorola Phone without Losing Data by ADM** A simple and convenient tool that can be used to accomplish this task is Android Device Manager – ADM. Your Motorola phone, like any other active Android device, is linked to your Google account. The main point of this method is to leverage access to your Google account and password, to get around the original problem. You can unlock the Motorola phone password without resetting it on a computer or another phone, but you need to provide a stable internet connection for the duration of the process.
>
> Step 1: Type the address www.google.com/android/find in the web browser on any device.
>
> Step 2: Sign in with your unique Google account username and password.
>
> Step 3: Google will start to search for your device. If you have multiple devices registered on the same account, choose the one you want to unlock from the list.
>
> Step 4: Three options will appear on the screen, click on one that allows you to change the password.
>
> `Choose Change the Screen-unlock Password`
>
> Step 5: Empty window will appear. Enter a temporary password, and click on the Lock again. If the process is successful, you will get a confirmation message.
>
> Step 6: On your locked Motorola enter the previously used temporary password, and your device will be unlocked. You will be able to use your phone any without limitations and set up a new password for permanent use if you so decide.

From How to Unlock my Motorola Phone with/without Factory Reset

I am not associated with this website.
> 0 votes

---
Tags: password, motorola, google-family-link
---


# Question
Title: Is it safe to remove "thermal-engine" from system/vendor/bin
I want to play PUBG on LG V20 so I renamed this file. Is it safe? Maybe it's safe until phone doesn't start turning off? Using LOS 15.1.

# Answer
No, you must find a way to disable thermal throttling in kernel modding (make custom kernel). Thermal driver will panic if you delete thermal-engine, mine after delete this all thermal driver enabled. I have to disable it every time phone booted
> 0 votes

---
Tags: root-access
---


# Question
Title: How to take selected-area screenshot to clipboard once it's selected?
How to take a selected-area screenshot, so that it's copied to the clipboard automatically once it's selected? (exactly like `Win+Shift+S` on Windows, but I need it for Android)

This will enable me to quickly —*saving tremendous time & pain (when I need to reuse this a lot)*— paste it within any note-taking application (like Squid).

**Motive**

I use *Squid* a lot in split-screen-view with a book reader app (like ezPDF) and many times, I need to take selected-area-screenshot of a part from a book to drop it in my note paper in Squid where I'm taking notes.

One way to do this is to use Samsung's Smart Select, then share the selected-area screenshot to Squid. This unfortunately forces opening Squid in full screen (which destroys the split-screen view, so I need to waste time again to set the split-screen view of the two apps). Also, in Squid, it forces creating a new separate useless note (not the one I'm working with, so I need to waste time again re-navigating to my original note after copying my captured selected-area screenshot to the clipboard and then deleting the useless note). This wastes a lot of time.

# Answer
> 0 votes
Instead of using Samsung select copy-paste, use the inbuilt options from ezPDF.

From the floating 3 dot menu at the right centre → Menus → Edit → snapshot → select the area and take snapshot → share with → Squid (choose always since you do that frequently).

The picture gets posted in Squid without switching apps. Here's an example of both apps in split screen mode with the transfer of a screenshot.

# Answer
> 0 votes
There are two methods that may help to solve this problem. The first perfect solution is using "Gboard" (Google Keyboard) which can copy the selected-area screenshot to the clipboard immediately. The second need to use the "copy to clipboard" app to "share" the screenshot to the clipboard and thus can not automatically copy the screenshot to the clipboard.

---

## Gboard - Automatically copy to clipboard

Try Gboard (the Google Keyboard) as the page say. Enabling the "Save recent screenshots in clipboard" option may help.

1. In Gboard's settings, click "Clipboard" as the following.
2. Enable the "Save recent screenshots in clipboard" option.

---

## Copy to Clipboard - share to clipboard

I've tried the above method but I didn't have the option "Save recent screenshots in clipboard" in Gboard's Clipboard settings. So the following is the second method I figured out.

Using Copy to Clipboard.

After capturing the screen, my Android device will prompt me whether to edit the screenshot (like cutting and painting) or share to other devices or other apps. Therefore, after installing the "Copy to Clipboard" app, the "Copy to Clipboard" app icon will appear on the "Share to other apps" prompt as the following.

Click the "Copy to Clipboard" icon and the screenshot will be copied to the clipboard. This uses the same mechanism when you copy an image in the browser on your Android device.

The advantage of "Copy to Clipboard" over "Gboard" is that you can edit or cut the screenshot before copying it to the clipboard and the image will also be saved to the photo album.

Hopefully, these two methods can help.

# Answer
> 0 votes
As Qingwei Li's answer mentioned, you can download Screenshot Master and copy it to the clipboard. Just make a screenshot with Screenshot Master and share it to the clipboard.

The Nebo app can get the picture from the clipboard with the default paste.

---
Tags: screenshots, copy-paste
---


# Question
Title: Bridge phone's mobile data internet connection to a WiFi network without internet connection
I want to know if it is possible to basically bridge the mobile data connection of my phone to a WiFi network I am connected to where the WiFi network does not have a connection to the internet, so that the devices on the WiFi network can use the mobile data connection of the phone to access the internet.

I do not want to use a hotspot which is provided by the phone since I would like this to work automatically whenever I get in range of a device on the WiFi network and I don't want to have the phone's hotspot constantly enabled.

So basically, I want to use the phone as an internet connection for a WiFi network hosted by a different device. So, the phone would be the gateway/NAT for the WiFi network, which is hosted by a different device.

I know that it is possible on Windows since you can set a network device to use the computer's internet connection.

Is there a way to do this on Android? And if so, then how?

# Answer
> 0 votes
This Speedify app worked for me to bridge WiFi and cellular networks into a VPN profile.

Not sure how trustworthy they are though as I saw a few bad reviews online.

---
Tags: wi-fi, networking, mobile-data
---


title: Can't unlock Pixel 6's bootloader

text:
# Question
Title: Can't unlock Pixel 6's bootloader
I have no problems finding my Pixel 6 through `adb`. Also, no problems finding the device with `fastboot devices` while in fastboot**d**. But for some reason, when I switch to bootloader, the computer doesn't see the device.

Windows's USBView shows me absolutely nothing connected to the corresponding USB port. Tried on macOS as well, same thing, through 'system report' I see that literally nothing is connected to the port.

I have the latest platform tools on both PC and Mac, latest Google USB driver (on PC). USB debugging and OEM unlocking are enabled. Tried with a couple of different USB cables, in every possible port. Also, tried disabling driver signature enforcement on Windows 10 and had no luck.

I don't know what to do anymore, I read everything there is on the internet and all they say is to update drivers/change cables, etc. Any help will be greatly appreciated.

# Answer
It all worked like magic after buying a compatible USB cable. 4 days wasted for a damn cable...

A compatible USB cable in this case was a samsung one. We tried like 6 or 7 different ones until we found the device while in bootloader with it.
> 0 votes

---
Tags: adb, fastboot, bootloader, bootloader-lock, google-pixel-6
---


# Question
Title: How to add Work Profile on Android 12 (OnePlus 7 Pro)
Apparently, Google has changed its software that handles Work Profile between v11 and v12.

In v11, it was handled by **Android Device Policy**, which was replaced by **App Device Policy**. The later works differently, instead of asking for credentials (email/password), it asks for a QR code supposedly provided by the company's IT department.

The issue is, the IT department doesn't have the ability to generate nor provide this QR code. I am the Workspace Admin myself and I don't have such feature.

This article helped me make sense of this issue, but I haven't found a clue for a proper solution yet.

https://www.googlecloudcommunity.com/gc/Workspace-Q-A/Unable-to-configure-Android-quot-work-profile-quot-with-google/m-p/393176

Is there a way to setup a Work Profile (with the ability to install different apps on each profile, e.g: install the same app twice and have it configured differently)?

If not, is this issue solved with Android 13?

I'm kind of stuck with this, really didn't expect to run into that when buying a new device, the benefits of having installed the same app multiple times is incredible, and made my life so much easier with all those OAuth logins everywhere. (and organise my "Desk" differently with folders for personal/work)

# Answer
After looking at many topics for hours, I came across https://f-droid.org/en/ and Shelter which allowed me to do that fairly easily.

The main downside of this alternative is that you have to install a software that's essentially admin (although not ROOT) of your phone, and trust the open source not to mess with you.

Other alternatives I found (Insular, Island) were also open source, but Shelter has more features.
> 1 votes

---
Tags: android-12, work-profiles
---


# Question
Title: "Letter 'A' with multiple lines" icon appears after taking a screenshot
I noticed an icon (seen on the attached image) on the Edit screen that appears after taking a screenshot on my Honor Android phone.

Image resized. Click for full size

I'm unsure of its functionality and couldn't find any information in the user manual or online resources.

Is this icon a feature of Android in general, or is it specific to Honor devices? Any insights would be helpful.

# Answer
> 3 votes
Its on my Android Note 20 as well. After playing with it, it appears after a screenshot.

If you press it, it highlights all the text on the screen. If you touch any text, it is copied to the clipboard.

I guess the thought is that you can find a caption for the screen shot that you have just made, on the screen.

---
Tags: huawei, screenshots, editing
---


# Question
Title: Prevent notifications on SMS messages from a contact during off hours on Google Messages
I'm using Pixel 7a and Google Messages. I wonder if there is a setting or an app to stop notifications on texts message coming from people I cannot block during off-hours in a systematic way: e.g. Every Monday morning.

---

Playing with MacroDroid as suggested, I wouldn't mind getting feedback on the multiple options to set this up. For instance, an initial walk-through of the app has led me to place the phone on "Do Not Disturb" for any incoming messages, which is not what I was after.

Here is a macro trying to approximate the intended outcome, i.e. any text (SMS) from Jack received on Tuesday morning will stop the notification sound that I have as a default.

Is this correct? After it triggers, will the notification sound be disabled for all incoming messages regardless of the sender's name (or number) until I reset it in my phone settings?

# Answer
> 1 votes
Depending on your phone model, you may be able to accomplish this via Do Not Disturb. Here's how I did it on my Pixel 6 Pro running Android 13:

* Open Settings \> Search 'Do Not Disturb'
* Click "Schedules"
* Click "Add more" and choose "Time"
* Customize the Days, Start and End times
* Click "Do Not Disturb behavior" \> "Create custom settings for this schedule" (see screengrab below)
* Use the "Calls" and "Messages" settings to determine who is allowed through the Do Not Disturb settings

There are a lot of ways to accomplish what you want from here. The easiest way for messages (if you're using Google Messages) is to choose "Priority conversations" in Messages, then pick which texts threads are allowed through. Another way for calls and texts is to add people to your "Starred contacts" and only allow those during your chosen time.

Note, instead of "Schedules" in the second step, you can also choose "Event" to use your Google Calendar to decide when to apply these settings, which may be better depending on your use case.

# Answer
> 0 votes
Depending on the Android version, users have more control in 13 & up over Notification Permissions. Can be controlled per App or Notifications for all apps link below M. Android device Settings will give an option of which all apps to allow Notifications at all, popup, or silent, etc.

Google Help topic: Change app permissions on your Android phone.

You can also use the "Manage notifications" screen to block notifications from specific apps or to change the priority of notifications.

Maybe will help.

# Answer
> 0 votes
I believe there might be another option and it was partially answered above.

As a user, I believe your best bet is to first organize your Contacts into Groups and add Labels for ex; "Trainees" or "Company partner" etc. Then you can easily scroll through and tag each quickly as a FAVORITE (star it).

When you're off yet can't block 1 contact or several, you can still set DND yet make the allowance of Allow Notifications and/or calls from certain people or your FAVORITES. This might take about 30 to organize contacts but I believe it will work. I hope so. Although I am still researching a bit. it should not change or mute alarms.

Google Help topic: View, group & share contacts.

# Answer
> 0 votes
To mute notifications from an individual contact in the Messages app:

1. Open Google Messages with said contact in mind.

* You can either open a temp new chat message to the contact without adding input, or
    * Open an already existing (\*ongoing or archived doesn't matter) as long as desired contact name is showing.
2. In either scenario, go to the upper right-hand corner (on Android) or DETAILS on a different device:
3. Tap DETAILS
4. Tap NOTIFICATIONS
5. Select: SILENT

This will mute all notifications from this contact while using Google Messages app. Temporarily at least until you mark at the bottom of the same screen where it says "Set this as not a conversation." That will move it back from Conversation to Chat; normal chat contact status. That Conversation might be found in the All or possibly even Archived category, but it hasn't been deleted unless you did.

I don't use the individual notifications conversation windows, but you can also set a ***NOTIFICATION SOUND*** per Contact if you wanted. The Settings is in that same Detail screen and Menu.

Hope this does it.

---
Tags: notifications, sms, automation, google-pixel, google-messages
---


title: "Corrupt" SD card after power off?

text:
# Question
Title: "Corrupt" SD card after power off?
I have a BQ-7082G ARMOR Android 7 device, with a SD card formatted as internal storage. One day it run out of battery, shut down, and afterwards it reported the SD card is corrupt and refuses to mount it. My only options offered by the device is to reformat it (external/internal storage), something I just won't do because there is some important data on it.

Complicating matters I can't easily at least make a backup of the card because I lack a suitable reader to connect to my PC.

Side note is I just don't understand how did it get damaged at all? There was no activity for like half a day and the only purpose the device fulfilled back then was to play music. Unfortunately, I got the stupid idea to take some photos with it the day before this happened and I'd like to get them all. Other than that there was no anything else I would lose my sleep over, although getting back everything would be nice.

How can I figure out what happened to the card so that hopefully I could fix just that somehow and have the device recognize the SD card properly?

# Answer
Hell yeah, I think I managed to solve my troubles. I managed to find a suitable card reader initially to make a backup image of the SD card, but then decided to take a look at it using all the tools I had at my disposal, namely the Windows Disk Management console and MiniTool Partition Wizard. The first simply reported the drive as `RAW` and so was of little use other than to tell me that it has a single partition spanning the entire card as far as I can tell.

This was peculiar, as from what I'd gathered, SD cards formatted as internal storage should have two partitions. At this point I felt somewhat defeated, that the SD card had entirely given out. But I was still after my data so continued digging. I was still hopeful it was just some kind of FS failure that scanning the drive for errors would correct once I found a way for Windows to recognize the drive as a valid volume.

The SD card suddenly damaged question reminded me that I too have MTPW installed. I poked around and realized it does see the card properly as a FAT32 partition and can even explore its contents. I scanned the drive for errors. It did find some, so first I took an image backup of the drive as is, then run the FS check again allowing to correct errors this time. Immediately Windows has started to recognize the drive and it appears all contents is intact. Then I turned off my Android device, inserted the SD card and powered it on. This time it didn't present me with the "there is a problem with the SD card, pick your poison" notification, and even apps installed on it appear to be working.

IDK how come I didn't just lose all the data I desperately wanted to save given from all the research I'd done the feat should be impossible from the technical standpoint due to the supposed encryption of the card. But alas my tablet is special, because even when used as internal storage, the SD card can be accessed as is. I even in desperation inadvertently would have destroyed the encryption key had it been actually generated because once I learnt I need a rooted phone in order to extract it I unlocked the bootloader w/o realizing all the implications.

Since my question was about the initial reason it came up damaged, I guess I need to include the FS scan log:

```
The type of the file system is FAT32.
Volume Serial Number is 0403-0201
The \ entry contains а nonvalid link.
Windows is verifying files and folders...
File and folder verification is complete.

Windows has made corrections to the file system.
No further action is required.
15 437 824 КВ total disk sрасе.
32 КВ in 1 hidden files.
10 336 КВ in 323 folders.
4826 720 КВ in 1 118 files.
10 704 КВ available.

32 768 bytes in each allocation unit.
482 432 total allocation units оп disk.
331 272 allocation units available оп disk.

```
> 1 votes

---
Tags: external-sd, data-recovery, adoptable-storage, data-corruption
---


# Question
Title: How do I have different sound output for different apps?
Suppose I am connected to my Bluetooth speaker. I want to play my Youtube Music/Music Player on the speaker.

Now, if I turn on Instagram reels, what happens is the Music Player gets paused and the audio output happens through the Bluetooth speaker. What I want is for my Insta sound output should be through my phone's speaker.

**Is there any way by which this can be achieved?**

There can be many more use cases for this but this is just a small example.

# Answer
If you have a Samsung device, this feature is included with SoundAssistant; note that this application isn't usually installed out-of-box. Other devices may vary based on OEM/model/etc, but if there's no native support you should still be able to find a comparable third party application.
> 2 votes

# Answer
I believe this will work as long as your device is indeed an Android, but do you know what version you're running? Just in case it makes a difference, these are the steps for Android 13 and I believe 11 & 12 as well.

Try these steps first

1. Go to your device Settings
2. Tap on Sound & Notifications, or it might say Sound & Volume, or even Sound & Vibration. Depends on your phone. But as long as it mentions Sound.
3. Scroll down and should hopefully see an option of Separate app sound \> Tap to select
4. Tap Turn on now
5. For each input:
    * App - select the app (or Apps) from the list of installed apps shown
    * Audio Device - Select which **different device to use** for your selected app.

It's pretty straightforward after that. Pair and Sync and your Bluetooth should be set up as a separate Device for app sounds. Your system device media player will take care of the Insta reels.

Hope that helps and does the job.

\**These steps are for a Samsung phone
> 1 votes

---
Tags: applications, audio, bluetooth-audio, custom-sounds
---


# Question
Title: Block Image loading in any Android App especially in Play Store
Updated:

There are many third world countries where 3G network has not encompassed their entire geography, let alone providing a satisfactory internet service. As obvious, the price for internet packs on mobile are not very much affordable to lot of folks.

Cutting the story short, there are apps like Play Store and the likes of it, whose aesthetics will be affected drastically if the images are to be stopped loading. These apps I assume are made keeping developed countries and their network infrastructure in mind.

Anyway, I still need to block the images even if the app's UI looks unpleasing. I'm looking here for a method to stop loading images in Play Store. Note that I'm not asking a different app store as a solution.

In fact, if the solution is more general (for other apps) than selective for Play Store, it would still be considered as an answer.

---

Note:

1. Device rooted, so no issues for installing any app.
2. Adaway installed but couldn't blacklist images using regex(naive) expression.
3. Firefox for Android has addons, it is already sorted for now.

Any idea(s) how to achieve this goal?

# Answer
> 0 votes
A Christian who developed this for LC PlayStore for fellow Chrstians who wishes for control over images they get exposed to there. It is webview based and employs various approaches (including injecting java scripts) to try and provide a near Android native experience. Direct PlayStore like here.

Disclaimer: I am the author of the LC PlayStore app

---
Tags: images
---


# Question
Title: Enable Chrome's Reader View manually, when it isn't offered?
Is it possible to enable the "Reader View" of Chrome for Android, when Chrome doesn't offer it?

---

On iOS, Safari leaves the choice entirely to the user, who has to click a button – which is good, as Chrome's popup-bar is a bit distracting, and especially because it means that the user is free to enable it on any website.

In Firefox, the button isn't always offered, but display of the Reader mode can be forced with `about:reader?url=URL`, which can easily be turned into a bookmarklet.

But for Chrome, I couldn't find any option of forcing Reader View yet, and more often than not it isn't offered on the very articles, where it would help the most, such as those with bad color choices and overly obstrusive ads.

# Answer
**Technically, it is possible to request on-demand reader view (also known as "simplified view") on Chrome for Android.**

Chrome uses DOM Distiller to determine if a page is worth to be simplified, then simplify and render it as a new page if requested.

There are a few ways to load a URL in reader view:

1. (Manual) from **`chrome://dom-distiller`**, a debug page that allows a user to input a URL and force load it in simplified mode.
2. (Possible idea for automation) **a unique URL for every simplified page**, which can be directly accessed from the address bar.

```
chrome-distiller://<UUID>_<HASH>/?url=<URL>

```

Where:

* `UUID`: Universally unique identifier. By default, it uses UUIDv4 (random), but any UUID works, including nil UUID (`00000000-0000-0000-0000-000000000000`)
    * `HASH`: SHA-256 of `URL`
    * `URL`: target URL (optionally, percent-encoded for safety).

Example URL for this page:

```
chrome-distiller://00000000-0000-0000-0000-000000000000_07036109224c60335e35e3b4c22dd02cf775f69d4430245c4c454aff570d6787/?url=https://android.stackexchange.com/questions/218970

```

---

Additional reading:
> 2 votes

# Answer
You can make it appear on every webpage by enabling it in `chrome://flags/#reader-mode-heuristics`

so, enable it when you need it, and disable when you're done as it would appear on every page.
> 1 votes

# Answer
#reader-mode-heuristics works but inconsistent.

Chrome Android version 101 with `chrome://flags/#reader-mode-heuristics` set to `Always` only works some of the time.

e.g. Opening the BBC News main page shows the Reader View Prompt. But after dismissing the prompt and following a link on the main page to a specific article there is no Reader View Prompt for that page.

But, with the article page open, closing Chrome and then restarting it does cause the prompt to appear.
> 1 votes

# Answer
It is possible if you have the **Xposed framework** installed.

I write the Xposed module ChromeXt, which adds the reader moder item to the page menu.
> 1 votes

# Answer
I have implemented a bookmarklet style solution described here:

https://gist.github.com/hughpearse/9454406ad43116dfaef8c43e7eac84f4

## 1. Original code and explanation (Hugh Pearse)

In chrome on android the "Simplified Page" feature does not have a button. If for some reason the browser decides not to display the layover toast message to access this feature, then the user is unable to enter "simplified view". The solution to this problem has been discussed before on Stack Overflow here, where they suggest opening a url to access a local resource on the browser cache. The local resource URL is formatted as follows:

```
chrome-distiller://<UUID>_<HASH>/?url=<URL>

```

It is not permitted to perform a javascript redirect to a local resource in the browser, however it is possible to display the URL as text.

```
javascript:function customModulo(r,o){const a=Math.floor(r/o);const t=r-o*a;return t}var sha256=function r(o){function a(r,o){return r>>>o|r<<32-o}var t=Math.pow;var n=t(2,32);var v="length";var f,e;var c="";var i=[];var u=o[v]*8;var l=r.h=r.h||[];var s=r.k=r.k||[];var h=s[v];var d={};for(var w=2;h<64;w++){if(!d[w]){for(f=0;f<313;f+=w){d[f]=w}l[h]=t(w,.5)*n|0;s[h++]=t(w,1/3)*n|0}}o+="\x80";while(customModulo(o[v],64)-56)o+="\0";for(f=0;f<o[v];f++){e=o.charCodeAt(f);if(e>>8)return;i[f>>2]|=e<<customModulo(3-f,4)*8}i[i[v]]=u/n|0;i[i[v]]=u;for(e=0;e<i[v];){var M=i.slice(e,e+=16);var g=l;l=l.slice(0,8);for(f=0;f<64;f++){var m=f+e;var k=M[f-15],S=M[f-2];var p=l[0],A=l[4];if(f<16){M[f]=M[f]}else{M[f]=M[f-16]+(a(k,7)^a(k,18)^k>>>3)+M[f-7]+(a(S,17)^a(S,19)^S>>>10)|0}var C=l[7]+(a(A,6)^a(A,11)^a(A,25))+(A&l[5]^~A&l[6])+s[f]+M[f];var b=(a(p,2)^a(p,13)^a(p,22))+(p&l[1]^p&l[2]^l[1]&l[2]);l=[C+b|0].concat(l);l[4]=l[4]+C|0}for(f=0;f<8;f++){l[f]=l[f]+g[f]|0}}for(f=0;f<8;f++){for(e=3;e+1;e--){var j=l[f]>>e*8&255;c+=function(){if(j<16){return"0"+j.toString(16)}else{return j.toString(16)}}()}}return c};var readerUrl="chrome-distiller://00000000-0000-0000-0000-000000000000_"+sha256(window.location.href)+decodeURIComponent("/%3Furl=")+window.location.href;window.location=readerUrl;

```

It is also tricky to open a bookmarklet in Chrome on Android. The process is described here.

To use:

Save this bookmark to Chrome in Android, then open a web page you want to read, then search in the address bar for the bookmarklet, and then open it.

## 2. Extended code and explanation (kdb)

Changing `location.href` is disallowed by security policies. I updated the script to use the clipboard instead.

### 2.1. Minified version for bookmarklet use

```
javascript:/* Chrome Reader View.js - 10:25:07 2023-07-31 */(function(){ main();function main(){document.head.innerHTML="";document.body.innerHTML="<input id='reader-url-input' style='width: 100%25'/>"+"<button id='reader-url-button' style='width: 100%25'>Copy to Clipboard</button>";let inp=document.getElementById("reader-url-input");let but=document.getElementById("reader-url-button");inp.value=readerViewUrl();but.addEventListener("click",copyReaderUrl);copyReaderUrl();function copyReaderUrl(){inp.select();inp.setSelectionRange(0,99999);navigator.clipboard.writeText(inp.value);}location.href=readerViewUrl();}function readerViewUrl(){return"chrome-distiller:/"+"/00000000-0000-0000-0000-000000000000_"+sha256(window.location.href)+"/?url="+window.location.href;}function customModulo(r,o){let a=Math.floor(r/o);let t=r-o*a;return t}function sha256(o){let r=sha256;function a(r,o){return r>>>o|r<<32-o}var t=Math.pow;var n=t(2,32);var v="length";var f,e;var c="";var i=[];var u=o[v]*8;var l=r.h=r.h||[];var s=r.k=r.k||[];var h=s[v];var d={};for(var w=2;h<64;w++){if(!d[w]){for(f=0;f<313;f+=w){d[f]=w}l[h]=t(w,.5)*n|0;s[h++]=t(w,1/3)*n|0}}o+="\x80";while(customModulo(o[v],64)-56)o+="\0";for(f=0;f<o[v];f++){e=o.charCodeAt(f);if(e>>8)return;i[f>>2]|=e<<customModulo(3-f,4)*8}i[i[v]]=u/n|0;i[i[v]]=u;for(e=0;e<i[v];){var M=i.slice(e,e+=16);var g=l;l=l.slice(0,8);for(f=0;f<64;f++){var m=f+e;var k=M[f-15],S=M[f-2];var p=l[0],A=l[4];if(f<16){M[f]=M[f]}else{M[f]=M[f-16]+(a(k,7)^ a(k,18)^ k>>>3)+M[f-7]+(a(S,17)^ a(S,19)^ S>>>10)|0}var C=l[7]+(a(A,6)^ a(A,11)^ a(A,25))+(A&l[5]^ ~A&l[6])+s[f]+M[f];var b=(a(p,2)^ a(p,13)^ a(p,22))+(p&l[1]^ p&l[2]^ l[1]&l[2]);l=[C+b|0].concat(l);l[4]=l[4]+C|0}for(f=0;f<8;f++){l[f]=l[f]+g[f]|0}}for(f=0;f<8;f++){for(e=3;e+1;e--){var j=l[f]>>e*8&255;c+=function(){if(j<16){return"0"+j.toString(16)}else{return j.toString(16)}}()}}return c};})();undefined;

```

### 2.2. Formatted source code

```
// Script overall based on [hp01]. Updated 2023/07/31 by kdb.
//
// Usage
//   1. Add minified version (one-liner starting with javascript:) as a bookmarklet.
//   2. Invoke the bookmarklet by typing the name into the address bar on mobile.
//   3. On mobile, the cliboard should now contain the chrome-distiller:// URL.
//      If it does not, click the copy-to-clipboard button.
//   4. Paste into the URL bar and press Enter. Beware: "the link you copied" does *not* work,
//      as that will extract the http[s]:// part out of the URL instead of using the chrome-distiller:// URL.
//
// References
//   [hp01] https://gist.github.com/hughpearse/9454406ad43116dfaef8c43e7eac84f4
//   [w301] https://www.w3schools.com/howto/howto_js_copy_clipboard.asp

main();

function main() {
    // We cannot directly write to the clipboard without a user interaction context,
    // so an <input/><button/> pattern is used.
    //
    // On Chrome for Android, invoking a bookmarklet already enables
    // permissions for writing to the clipboard, so the function is invoked immediately.

    document.head.innerHTML = "";
    document.body.innerHTML =
        "<input id='reader-url-input' style='width: 100%'/>" +
        "<button id='reader-url-button' style='width: 100%'>Copy to Clipboard</button>";
    const inp = document.getElementById("reader-url-input");
    const but = document.getElementById("reader-url-button");
    inp.value = readerViewUrl();
    but.addEventListener("click", copyReaderUrl);
    copyReaderUrl();
    function copyReaderUrl() {
        inp.select();
        inp.setSelectionRange(0, 99999); // For mobile according to [w301]
        navigator.clipboard.writeText(inp.value);
    }
    // Changing the href will most likely fail due to security
    // policies of Chrome, but is left in case it works at some point.
    location.href = readerViewUrl();
}

function readerViewUrl() {
    // Code from [hp01], but simplified/reformatted.
    // The pattern "/"+"/" is a hack due to my minification script stripping out "//..." patterns.
    return "chrome-distiller:/"+"/00000000-0000-0000-0000-000000000000_"
          + sha256(window.location.href)
          + "/?url=" + window.location.href;
}

function customModulo(r, o) {
    // Unchanged from [hp01].
    const a = Math.floor(r / o);
    const t = r - o * a;
    return t
}

function sha256(o) {
    // Unchanged from [hp01].
    const r = sha256;
    function a(r, o) {
    return r >>> o | r << 32 - o
    }
    var t = Math.pow;
    var n = t(2, 32);
    var v = "length";
    var f, e;
    var c = "";
    var i = [];
    var u = o[v] * 8;
    var l = r.h = r.h || [];
    var s = r.k = r.k || [];
    var h = s[v];
    var d = {};
    for (var w = 2; h < 64; w++) {
    if (!d[w]) {
        for (f = 0; f < 313; f += w) {
        d[f] = w
        }
        l[h] = t(w, .5) * n | 0;
        s[h++] = t(w, 1 / 3) * n | 0
    }
    }
    o += "\x80";
    while (customModulo(o[v], 64) - 56) o += "\0";
    for (f = 0; f < o[v]; f++) {
    e = o.charCodeAt(f);
    if (e >> 8) return;
    i[f >> 2] |= e << customModulo(3 - f, 4) * 8
    }
    i[i[v]] = u / n | 0;
    i[i[v]] = u;
    for (e = 0; e < i[v];) {
    var M = i.slice(e, e += 16);
    var g = l;
    l = l.slice(0, 8);
    for (f = 0; f < 64; f++) {
        var m = f + e;
        var k = M[f - 15],
        S = M[f - 2];
        var p = l[0],
        A = l[4];
        if (f < 16) {
        M[f] = M[f]
        } else {
        M[f] = M[f - 16] + (a(k, 7) ^ a(k, 18) ^ k >>> 3) + M[f - 7] + (a(S, 17) ^ a(S, 19) ^ S >>> 10) | 0
        }
        var C = l[7] + (a(A, 6) ^ a(A, 11) ^ a(A, 25)) + (A & l[5] ^ ~A & l[6]) + s[f] + M[f];
        var b = (a(p, 2) ^ a(p, 13) ^ a(p, 22)) + (p & l[1] ^ p & l[2] ^ l[1] & l[2]);
        l = [C + b | 0].concat(l);
        l[4] = l[4] + C | 0
    }
    for (f = 0; f < 8; f++) {
        l[f] = l[f] + g[f] | 0
    }
    }
    for (f = 0; f < 8; f++) {
    for (e = 3; e + 1; e--) {
        var j = l[f] >> e * 8 & 255;
        c += function() {
        if (j < 16) {
            return "0" + j.toString(16)
        } else {
            return j.toString(16)
        }
        }()
    }
    }
    return c
};

```
> 0 votes

# Answer
**They just seem to have moved and renamed it**.

You can now find it under *Settings | Accessibility | Simplified view for web pages*

(thanks to enquirer at reddit for pointing me in that direction)
> -1 votes

---
Tags: chrome-for-android
---


# Question
Title: A/B devices: Switch slots without using PC
I've seen this question asked two years ago How to switch slots without a computer or using TWRP? which asks for the same on Android 9,but with so many tools being developed (and abandoned) and changes in Android versions , is it possible now?

I use Pixel 4a/6a, rooted, Magisk 25.2 on Android 13. There aren't any TWRP recoveries for them. With the perpetual cat and mouse game between root detection by banking and such like apps, I feel the cat (Google) will have an upper hand soon.

So my thought is to have one slot rooted and the other slot unrooted and on the fly switch slots using an Android based way. I know it can be done using a PC but that's not what I want.

Does anyone know of any way? Maybe Termux based or some kind of scripting? Or Magisk/Edxposed modules?

I don't want multi-ROM or dual booting solutions (doubt if they exist for current Android versions)

Edit

1. Switch My Slot hasn't been updated after 2021. When I run that it closes saying `bootctl binary missing`
2. Magisk Bootctl Binary works only upto Android 12. I tried it but there appear to be some Magisk limitations too apart from failing since it is not designed for current API level.
3. I couldn't find any bootctl Magisk module in various repos

# Answer
* With generous help from Irfan-Latif (see chat) `bootctl` binary was a candidate. Unfortunately, it doesn't change slots as expected but at the same time doesn't throw up any errors. The reason for this is *probably* it is not updated to SDK 33. That's also probably why the apps mentioned in the question haven't been updated.
* Irfan found another app Boot Control,which doesn't use `bootctl` and communicates with `HAL` to switch slots. It works fine on Pixel 6a, Android 13. Screenshots from the app:

Reboot option also provides a few handy options

While you can switch from rooted to unrooted slot, you can't do the vice-versa because this app needs root permissions. So you would need to use a PC to switch to rooted slot,which is fine by me in tricky situatios like GPay or wallet or banking apps not working because of root detection and you need to use them.

Any reader who would like to explain `bootctl/HAL` is free to edit this answer. Thanks
> 1 votes

---
Tags: termux, ab-partition, root-cloak
---


# Question
Title: Backup/Restore SMS/MMS via ADB on a non-rooted device?
Is there any way to backup/restore SMS and MMS messages using ADB, when the device is not rooted?

* `adb pull` won't work here, as the corresponding database (`/data/data/com.android.providers.telephony/databases/mmssms.db`) cannot be read by ADB if it's not running in insecure (root) mode
* `adb shell "cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db` doesn't work either without root access
* `adb backup` for some reason doesn't cover this database on the device I've checked with (empty backup – just the 41 bytes of the backup header in the resulting file)

I especially wonder why `adb backup` doesn't cover this. If it's for "privacy reasons", then the same should apply to the contacts database – which clearly is backed up.

**References:**

So: Any solution on a non-rooted device? Note that I'm ***NOT*** asking for an app-based solution. I'm fully aware there are several apps available for this. I specifically want a "shell based solution", to be used via ADB.

# Answer
> 11 votes
> I especially wonder why adb backup doesn't cover this.

It is not that `adb backup` doesn't want to cover the app `com.android.providers.telephony`. This app is not much different from any other system app based on its `AndroidManifest.xml`. The problem is with the flag its developer has declared in the manifest which as a default mechanism for some reason `adb backup` is bound to respect.

This flag is none other than `android:allowBackup="false"`. It opts out the app from both ADB backup and restore. Google here has to say:

> `android:allowBackup`
>
> Whether to allow the application to participate in the backup and restore infrastructure. **If this attribute is set to false, no backup or restore of the application will ever be performed, even by a full-system backup that would otherwise cause all application data to be saved via adb.** The default value of this attribute is true.

<sub>*(Emphasis mine)*</sub>

Checkout the `AndroidManifest.xml` of this app for Lollipop version here, or see this evidence for my Android 4.2.1:

There's more to this app. You can't even **Clear Data** from **Settings → Apps → All apps →`<THIS_APP>`** since `android:allowClearUserData="false"` is declared too, not something we encounter every now and then.

> If it's for "privacy reasons", then the same should apply to the contacts database – which clearly is backed up.

It's bizarre, not that you're able to do it but how is your system even allowing you to do that just with `adb backup`!

Contacts storage is handled by "ContactsProvider" app which goes by the pkg\_name=`com.android.providers.contacts`. The flag `android:allowBackup="false"` is clearly mentioned in its `AndroidManifest.xml` for Jelly Bean (click here to see for the other versions).

Are you using ICS or any predecessor of JB?

I found that this app doesn't have any declaration of that flag for ICS here. You can actually clear this mystery, since I can't take backup of this app in my JB 4.2.1 as per the definition of the flag, and always gets that 41 bytes backup file.

---

As for any other method to take SMS/MMS backup/restore using ADB without root access -- all hands up here.

# Answer
> 4 votes
Partial answer at least, covering the backup part: you can obtain **your SMS** with e.g.

```
adb ${ADBOPTS} shell "content query --uri content://sms/ --projection ${projection}" > sms.lst

```

where `$projection` lists the fields/columns you want to extract, separated by colons. A list that seems to work on multiple devices/vendors/Android-versions which I have tested would be

```
--projection thread_id:address:person:date:date_sent:protocol:read:status:type:reply_path_present:subject:body:service_center:locked:sub_id:error_code:creator:seen

```

Similarly you can also obtain your **call logs** btw:

```
projection="type:number:formatted_number:numbertype:via_number:numberlabel:normalized_number:matched_number:countryiso:geocoded_location:date:last_modified:name:phone_account_address:lookup_uri:voicemail_uri:is_read:photo_id:photo_uri:post_dial_digits:call_screening_app_name:call_screening_component_name:transcription:transcription_state:block_reason:subscription_id:subscription_component_name:add_for_all_users:features:new:presentation:data_usage"
adb ${ADBOPTS} shell su -c "content query --uri content://call_log/calls --projection ${projection}" > calllog.lst

```

Want **your user dictionary?**

```
projection="word:frequency:locale:appid:shortcut"
adb ${ADBOPTS} shell su -c "content query --uri content://user_dictionary/words --projection ${projection}" > userdict.lst

```

Format of the output files will be something like

```
Row: 0 _id=4, field1=value 1, field2=value 2 …

```

I haven't attempted a restore yet, though (not yet needed, luckily).

---
Tags: adb, sms, backup, restore, mms
---


title: Clear Caches from ADB?

text:
# Question
Title: Clear Caches from ADB?
How do I clear caches (app, individual apps, Dalvik, ART if possible) via ADB?

Using apps, recovery, or doing it through Settings are not options for me. Also, my phone is not rooted.

# Answer
ADB is close, but things like `adb shell pm clear <package_name>` to clear caches (and data, oops) from selected apps requires root (as would clearing Dalvik cache). But there's a similar approach to just wipe out all app caches (not Dalvik/ART, though): `fastboot erase cache` would do that with the device booted into the bootloader. Details can be found e.g. here: Useful ADB and Fastboot Commands and How to Use them.
> 21 votes

# Answer
***If you have root access***, Using adb you can clear cache.

```
rm -r /data/dalvik-cache
rm -r /cache/dalvik-cache

```
> 4 votes

# Answer
You can use Zero Cleaner app, it's like cleaning the app catches manually, but it's automatized, and requires accessibility permission.
> -2 votes

---
Tags: adb, cache, dalvik, art
---


# Question
Title: Chrome Android redirects to web.bwanet.ca
Downloaded Sophos Intercept X today cause my Chrome browser kept opening to `https://web.bwanet.ca` all of a sudden + all my open tabs were gone.

Is it due to Sophos? If so, is there a specific feature in the Sophos app that can stop future hijacks?

# Answer
> 1 votes
Not sure about the Sophos download, but as far as `bwanet` is concerned, on several online forums (see below) people mention that if your phone is from Bell/Virgin, then that is who is "hijacking" your home page to `bwanet`.

The solution is to go into your browser settings and change the home page Bell/Virgin sets upon every browser install.

I gathered this from the following pages:

# Answer
> 0 votes
First it is totally unclear why the tabs are gone. Can be anything between a simple bug in the web browser or a sophisticated attack.

And second nobody knows what bugs and vulnerabilities are hidden in the browsers you mentioned and additionally what bugs and vulnerabilities are introduced in the next version.

Hence from my perspective the only answer you can get is `NO`. Nothing can prevent or stop unknown problems in a constantly updated software browsing constantly changing web sites.

You can always protect yourself only against known problems. This also applies to software like Sophos Intercept X.

---
Tags: chrome-for-android, malware, url
---


title: How can I find CID from ADB shell?

text:
# Question
Title: How can I find CID from ADB shell?
I need to know the *CID* of an HTC 10 but,

```
adb shell getprop ro.cid

```

is unresponsive. Also

```
$ fastboot devices
FA**********     fastboot
$ fastboot oem readcid
FAILED (remote: 'unknown command')
fastboot: error: Command failed

```

Also, `grep -ril cid` is unsuccessful on root.

How can I get the *CID* info on my Android device?

# Answer
> 1 votes
It's possible to get cid info with following command.

`adb shell getprop|grep cid`

```
$adb shell getprop|grep cid
[ro.boot.cid]: [HTC__M27]

```

---
Tags: adb, shell, build.prop
---


# Question
Title: <scrcpy> adb server version () doesn't match this client ()
I'm getting very contradicting messages trying to run scrcpy wirelessly.

```
$ adb connect 192.168.1.200:5555
connected to 192.168.1.200:5555
$ adb devices
List of devices attached
192.168.1.200:5555  device

$ scrcpy
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
adb server version (41) doesn't match this client (39); killing...
* daemon started successfully
ERROR: Could not find any ADB device
ERROR: Server connection failed

$ scrcpy --tcpip
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
ERROR: Could not find any ADB device
ERROR: Server connection failed

$ adb devices
adb server version (39) doesn't match this client (41); killing...
* daemon started successfully
List of devices attached

```

At some point I succeeded to connect and run scrcpy. I disconnected and tried to run it again but no luck this time. I can't wrap my head around what's causing this.

```
$ whereis adb
adb: /usr/bin/adb /usr/share/man/man1/adb.1.gz

$ adb version
Android Debug Bridge version 1.0.41
Version 28.0.2-debian
Installed as /usr/lib/android-sdk/platform-tools/adb

```

I connected via USB to reenable adb over TCP/IP. Device IP doesn't show up. Previously device ID and IP were listed.

```
$ scrcpy --tcpip
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
INFO: Switching device J6AXB763C036R6E to TCP/IP...
ERROR: Device IP not found
ERROR: Server connection failed
$ adb tcpip 5555
adb server version (39) doesn't match this client (41); killing...
* daemon started successfully
restarting in TCP mode port: 5555
$ adb devices
List of devices attached
J6AXB763C036R6E device

```

I tried again and failed.

```
$ adb kill-server
$ adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
$ adb devices
List of devices attached

$ adb connect 192.168.1.200:5555
connected to 192.168.1.200:5555
$ adb devices
List of devices attached
192.168.1.200:5555  device

$ scrcpy
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
adb server version (41) doesn't match this client (39); killing...
* daemon started successfully
ERROR: Could not find any ADB device
ERROR: Server connection failed

```

# Answer
Some scrcpy distributions include an own adb version. If on your system adb is already present e.g. because you have installed Android SDK or a different tool that includes adb this can result in a adb version conflict as you have noticed.

To resolve this issue you can create the environment variable `ADB` and in it specify the path to the adb binary you want to use with scrcpy.

I assume on your system the newest adb version is the one installed to `/usr/bin/adb` so executing

```
export ADB=/usr/bin/adb

```

should solve your problem.

Windows users can do the same and add a new environment variable `ADB` that points to the latest `adb.exe` that should be used.
> 0 votes

# Answer
For future readers who might have this problem and are using Ubuntu OS, do as @Robert said. You just have to:

1. Remove the one in the OS: `apt remove adb`
2. Then get the path of your adb: `which adb`
For me, it was `/home/bilal/Android/Sdk/platform-tools/adb` because I had Android Studio installed
3. Then `export ADB=/home/bilal/Android/Sdk/platform-tools/adb`
4. And voila, `scrcpy` should work
> 0 votes

---
Tags: adb, scrcpy
---


# Question
Title: How can a complete web page be saved and viewed on an Android device?
There are situations when I require to save a "complete" web page for offline reading. I can easily do that on Windows by saving the web page, but not on Android.

I am using *Chrome* on Android and I don't see a *"Save"* option. Instead, I see *"Save link"* which, I believe, saves "only" the *"pure HTML"* version of a site of which the link leads to.

I have tried this, but when I view it in the *HTML Viewer*, a lot of necessary CSS formatting and all the images were lost, which made the information misleading and incomplete respectively. I thought I downloaded the complete page and the fault was that of the HTML Viewer for not rendering everything, but I was wrong, as the desktop Chrome also displayed the "only HTML" version when I transferred those pages to my laptop through *Bluetooth*.

So, my question is: **How can I download "a complete" web page on my Android smartphone?** It's OK if I can't view it on my smartphone, but everything should be in place when I view it on my laptop after transferring it. It is also OK if it is saved as a PDF file.

P.S. I'm asking this as I use the internet very often on my smartphone because my laptop is not connected to the internet. Also, I want to transfer it to my laptop because I don't want to view those "important" pages on a small screen, it's inconvenient.

# Answer
> 16 votes
In Chrome for Android, you can save the opened web page as a PDF. To do that, you have to install the Google Cloud Print application to do this.

Once you have installed it, first open a desired web page in Chrome.

>

Then, click on the menu icon and select on **Print** option. There, you can select the **Save as PDF** option.

>

Select the location and click on the save button. This should save a PDF of the current web page which you can read by using any PDF viewer that came with your smartphone.

# Answer
> 8 votes
You can save as PDF on Firefox too. Just go to Menu -\> Page -\> Save as PDF

|  |  |
| --- | --- |

# Answer
> 6 votes
Or maybe : **Offline Browser - Google Play**

**Download the Web Pages for Offline Viewing**

> If you want to keep a web page for later on Android, you need Offline Browser. To use it, just open it up and tap the plus sign to add a new page to your library

**How to Save Web Pages for Offline Access Later - Android**

# Answer
> 2 votes
On Android's stock browser, you have the option "Save for offline viewing" available from the menu. I'm using it on a daily basis.

# Answer
> 1 votes
Try using UC Browser. It has an add-on to download web pages as PDF. The add-on can be installed from Web to PDF add on for UC Browser.

# Answer
> 1 votes
**UC Browser:**

Apart from the "Save to PDF" addon, there's another UC Browser Addon which is Save Page. It allows you to save a webpage as a complete HTML or a text file. Save as HTML for saving with images in the desired directory of your choice and transfer the saved `.mht` file to your computer for viewing later. The default directory is the `UCDownloads` folder.

Screenshot - Click to enlarge

**Opera Browser:**

Opera allows saving offline pages but is not viewable on the desktop. Use this if you just want to view the page on your smartphone when you are not connected to the internet.

In Opera Mobile and Opera Mini browsers, open any page and press the `+` sign at the top left corner of the address bar, select the "Save for offline" option, and it will display "Page saved" toast message notification. To open the saved page, go to the Speed dial page and select the `Saved pages` speed dial icon to open the list of saved pages.

# Answer
> 1 votes
Following the comments of heiner and Jonas:

Chrome for Android has a "Download" button (pictured below) where you can save a page for offline viewing and access via the Three-dot menu -\> Downloads. This works amazingly well on mobile.

If you want to view it on a desktop/laptop, you can find that file in your downloads (`storage/emulated/0/Download/page_name`) and send it to your computer. I sent this example via "Nearby share" and it was viewable on my laptop after appending `.html` to the filename.

This preserved all images and worked well at first, but the page seems to timeout somehow and corrupt the page. Looking into a better solution in that case.

|  |  |
| --- | --- |
| Chrome for Android | Desktop Chromium (Edge) |

# Answer
> 1 votes
Using Kiwi Browser (and hopefully with any other Chromium based browser having Extensions support) and the extension named SingleFile you can download any page into a self-contained HTML file. You can then open the file in Chrome, or Kiwi Browser, or whichever app in your phone supports that file type.

Instructions:

1. Install Kiwi Browser
2. Go to SingleFile's extension page
3. Tap on "Add to Chrome" and wait for the installation to complete
4. Tap on three-dots vertical line right next to where you see number of opened tabs in the address bar
5. Tap on "Extensions" option
6. Locate SingleFile extension on the page and click on "Details"
7. Scroll down and click on "Extension options"
8. In the dialog scroll down to "Auto-save" and uncheck any option you see checked already.

Now, you are ready to save a page. Load whatever page you want to save. When the loading has completed tap on that same three dots line → at the bottom find SingleFile named entry and tap on it.

When you do that nothing significant in terms of UI changes would happen. SingleFile would begin its phases of preparing and saving the file. It would show a small overlay at the bottom-left that would show its phases like the one in the image.

Once the processing is done the file would be automatically saved and you should see a notification for the downloaded file. Try to open the file in Chrome or Kiwi Browser. It should work.

Tested on Kiwi Browser v116 running on Android 11 of OnePlus 6.

# Answer
> 0 votes
For offline web view, use Save as Web Archive. To access web page sources and for editing, Save For Offline by JonasCz is good.

# Answer
> 0 votes
HTTrack Website Copier mentioned in this answer could be helpful as the bounty specifically calls for

> I would like to save a complete webpage for offline reading, similarly as in desktop, so that it creates the page.html and page\_files/ **directory where are especially images**

(Emphasis supplied)

This app hasn't been updated for 6 years but surprisingly works on Android 13. It is from the stable of web site copier by the same name for web.

The major pro I found is that it is **browser independent** (tested on Chrome, Firefox, Brave). The major con is that if the site has several links it may take a long time and some of them may not work off-line. Also all sites do not permit copying - this site doesn't:). For reasons see FAQ. But the rich menu of options (screen shot below) may help overcome some of the limitations.

For this site copied using the app (screen shot at end of answer)

* Path for images `/storage/emulated/0/HTTrack/Websites/Aa/static.theprint.in/wp-content/uploads`. Here's a screenshot of images directory

* Path for `html`files `/storage/emulated/0/HTTrack/Websites/Aa`for the site with project name Aa and category "try" using this app.

You can see the copied site on the app by tapping "browse sites" on the left bottom.

I copied the `HTTrack folder` to PC and can view the websites as it was possible on the web version.

---

**Additional Information**

* A fragment of `html` file

```

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="HTTrack is an easy-to-use website mirror utility. It allows you to download a World Wide website from the Internet to a local directory,building recursively all structures, getting html, images, and other files from the server to your computer. Links are rebuiltrelatively so that you can freely browse to the local site (works with any browser). You can mirror several sites together so that you can jump from one toanother. You can, also, update an existing mirror site, or resume an interrupted download. The robot is fully configurable, with an integrated help" />
    <meta name="keywords" content="httrack, HTTRACK, HTTrack, winhttrack, WINHTTRACK, WinHTTrack, offline browser, web mirror utility, aspirateur web, surf offline, web capture, www mirror utility, browse offline, local  site builder, website mirroring, aspirateur www, internet grabber, capture de site web, internet tool, hors connexion, unix, dos, windows 95, windows 98, solaris, ibm580, AIX 4.0, HTS, HTGet, web aspirator, web aspirateur, libre, GPL, GNU, free software" />
    <title>Local index - HTTrack Website Copier</title>
  <!-- Mirror and index made by HTTrack Website Copier/3.49-2 [XR&CO'2014] -->
    <style type="text/css">
    <!--

body {
    margin: 0;  padding: 0;  margin-bottom: 15px;  margin-top: 8px;
    background: #77b;
}
body, td {
    font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
    }

#subTitle {
    background: #000;  color: #fff;  padding: 4px;  font-weight: bold;
    }

#siteNavigation a, #siteNavigation .current {
    font-weight: bold;  color: #448;
    }
#siteNavigation a:link    { text-decoration: none; }
#siteNavigation a:visited { text-decoration: none; }

#siteNavigation .current { background-color: #ccd; }

#siteNavigation a:hover   { text-decoration: none;  background-color: #fff;  color: #000; }
#siteNavigation a:active  { text-decoration: none;  background-color: #ccc; }

a:link    { text-decoration: underline;  color: #00f; }
a:visited { text-decoration: underline;  color: #000; }
a:hover   { text-decoration: underline;  color: #c00; }
a:active  { text-dec

```
* `css` files are at `/storage/emulated/0/HTTrack/Websites/Brave/fonts.googleapis.com`. A segment below

```
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/opensans/v35/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVc.ttf) format('truetype');
}
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/opensans/v35/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1x4gaVc.ttf) format('truetype');
}

```
* Screen shot of site copied

* Screenshot as displayed on the app (I realized much later that it was taking a long time to copy and with more errors because Adguard was blocking. After disabling Adguard it was much faster with lesser errors)

The third screenshot shows a link that couldn't be copied, hence can't be opened off-line but can be browsed online. This could probably be fixed by configuring the options, which I didn't try since I lack understanding.

---
Tags: browser, offline, html
---


# Question
Title: Missing OEM unlock toggle on Samsung Galaxy S9
I've found numerous guides online on how to fix the missing OEM unlock toggle on Samsung Galaxy S9 (SM-G960U) running Android 10. I've been able to follow all steps except for the last one before rebooting the phone. And that step is going into software update and unchecking ***download updates automatically*** and checking ***download updates manually***. The problem is that those options don't exist!

I can only tap on ***Check for updates*** and there's a grayed-out option that says ***Continue update***. I don't know if this is true, but I think it's the same as going into developer options and switching off ***auto-update system***, which I was able to do.

Either way, I still wasn't able to fix the missing button, even after following this guide I was just talking about. I've seen other guides and they talk about the same thing that this one does.

Can someone help me unlock my OEM unlock button, please?

---

As of now, I played around with my phone and found out the reboot to bootloader option in the menu after starting the phone with **power key + volume up + Bixby key**. I didn't know what that was going to do but when I selected that, a light blue screen came on and said `downloading... do not turn off target`. There's an option to cancel it, but I want to see what happens.

Maybe I didn't have a bootloader at all? (sounds crazy because I need a bootloader to start my phone, so maybe it's downloading something else?). In either case, I'll keep this question posted with any new info.

# Answer
Regarding the 7-day wait mentioned in millertime90's answer, that is completely untrue. I've had mine for over 2 months, and never showed the OEM unlock. I did hear though that one certain version allows it but the G960**U** cannot.

Also, that blue screen is called "Download Mode". It's used for when using Odin or other tools to reflash/flash images to your device.
> 0 votes

# Answer
You have to wait 7 days after enabling developer mode, and OEM with show up
> -3 votes

---
Tags: samsung, bootloader-lock, samsung-galaxy-s-9
---


# Question
Title: ADB accessing shell /data/data/com.<specified_app>
I tried this ADB command:

```
adb shell
cd /data/data/com.whatsapp

```

I want retrieve Whatsapp key file without root but I still get permission denied. Any idea how can I get read access of `com.whatsapp` directory?

# Answer
> 0 votes
Yea sadly the /data/data folders are only accessible with root... you might be able to use a virtual root android to do this but wouldn't hold my breath... (requires pc)

---
Tags: adb, permissions
---


# Question
Title: How to reset a parent-managed kid's phone?
My daughter has changed her lock screen password. Didn't write it down. And had forgotten it. And so her phone is locked.

What I observe is:

* After restart, she's been asked a code. I can't find anyway to reset that code.
* Her phone is connected to the web. I can see today's date on the Family Link page for her account.
* I cannot find a way to switch from user on her phone (i.e. logging with my own account)
* Stopping and Restarting the device is not possible. The phone remains on that lock screen. Only a hard-shutdown is possible (Volume up/Volume down/Power during a few seconds).
* The phone doesn't ring when I ask it to ring from the Family Link page.

I tried various ways to connect to the phone :

* The procedures with *Find My Device* don't work, because :

+ When I connect to Google with my own account, I cannot switch to her account, and hence don't see her phone as candidate phone to work on.
    + When I connect with her account, she has no rights to use that application.
* The Family Link page provides a 6-digits code that changes every hour supposedly providing access to the phone. It doesn't. The phone keeps saying invalid password.
* The Family Link page lets define a new lock screen password. Defining a new password doesn't help despite a hard restart of the phone.

What are my options now ? A hard reset of the phone is acceptable. But even that I don't succeed to do.

---

PS: The phone is a Samsung A03

# Answer
Turn phone off. If android turn back on holding down volume up and power button until you see startup logo,

if it boots all the way then you did something wrong....

if yours is version 8 or lower should go straight to the recovery mode, from ther you can do factory reset.....

if higher than 8 then while in recovery you have to do an extra step, but sadly everytime i do it i get it by accident....

Hope this helps
> 0 votes

---
Tags: lock-screens, hard-reset, google-family-link
---


# Question
Title: How to control the media and ringtone volumes separately?
In my Galaxy S20, whenever I turn down the volume for an application, it also turns down the ringtone volume too, which means I'm missing calls if I forget to put the volume back up.

In my previous phone, when I would change the volume from within an application, that will change the "media", while if I was changing it from the home screen, that would change the "ringtone" volume. But now it seems if I change it from anywhere it changes both volumes.

Any idea how to make it work like before? I can't seem to find any option for this

# Answer
> 0 votes
If you just need to change media, system, ringtone, or notification. Just hit one of the volume keys, then when you see volume pop-up, should be a down arrow, just click that...

---
Tags: volume-control
---


# Question
Title: SD card internal storage - photos not showing in Photos - how do I format/unmount safely to not lose WhatsApp history?
The storage on my Android 11 phone (Fairphone 3) was running out so I mounted a Lexar micro SD card to increase storage. I now realise this was a mistake but not knowing any better I formatted it as internal storage as that is essentially what I needed.

Now any photos I take will not show up in Gallery, Photos or Drive and neither can I see them on the SD card - so they're essentially not being taken. Taking a picture within Whatsapp is possible but then impossible to send because the file format isn't "valid". (And when I manually eject the card, the camera won't work at all.)

I've come as far as thinking I need to format the SD card to portable to fix this? Essentially I want to undo ever putting it in there, I'd rather take low storage.

BUT while there are no major picture or document files on the card, I noticed the WhatsApp Databases and Backup files and I'm worried that formatting will wipe my WhatsApp account. It's also backing up to Drive but when I try and do a manual back-up without the SD card in (thinking I can then uninstal/reinstal Whatsapp and load the most recent Drive backup after formatting + losing the SD storage) it tells me "Backup skipped because internal storage not available".

So could someone please confirm:

* Do I need to FORMAT my SD card to fix the Photos issue?
* Will I lose my WhatsApp chats if I format because it deletes the Databases?
* If so, is the only way to save it to secure a Drive backup, format the SD card, then uninstal/reinstal WhatsApp and load the Drive backup?

Thanks!!

TL;DR how do I get out of an internal formatted SD storage situation without losing my WhatsApp history?

# Answer
> 0 votes
Going from internal to external is going to erase all, best bet would be transfer whatsapp app, and data to a pc or other storage device, then revert to external by wiping card....

Is whatsapp on external card for sure, if it is just backup the data, if its on internal alone then you should be ok with formatting sd as is...

To check this use a file explorer to check SD and internal contents

---
Tags: whatsapp-messenger, internal-storage, sd-card, google-photos, formatting
---


# Question
Title: Mounting an extra partition as a fake external SD card
Nowadays phones don't have SD cards anymore, but some have a ton of storage. So, I was thinking of creating a fake external SD card using an extra partition to be able to store all of your zip flashable files, pictures, and music and have it stay when you inevitably format user data when flashing a ROM or whatever.

My question is: **How to properly mount a partition as an SD card so that Android thinks you have an external SD?** (you see it in a file manager, can store pictures on it directly, etc.)

What I've done already :

* I have created an extra partition on my OnePlus 6 with `parted`, it's `sda17`
* I have successfully mounted this partition to be able to use it normally (`mount -t ext4 -o rw /dev/block/sda17 /external_sd`) This command allows you to navigate to `/external_sd` and see your files, but Android doesn't think that you have an external SD card.

I'm thinking of using a Magisk module to mount everything properly at every boot (if this is even possible)

# Answer
Its just not possible and even if it was you would need root, jbrim\**** is right also, every time you factory reset it'll wipe ALL user data including newly created partions....
> 1 votes

---
Tags: external-sd, partitions, magisk
---


# Question
Title: How to make my PC become an "psudo/fake" external display for android phone via USB ports (without using any USB to HDMI dongles)
I want my Android phone to recognize my PC as its external display (psuedo/fake or virtual displays) via USB connection (USB-C - USB-A cable or TCP connection) without using any USB to HDMI dongles or wifi display like miracast either.

I think I need to find or write the app/software or driver on PC side which have USB protocol like any real USB-C to HDMI display to communicate with the phone. Do you have any suggestion or guidelines?

Thanks,

# Answer
You could use a vncviewer/TeamViewer program... allows both screen and some controls to control the system...

You would set server on android since its the one you want displayed, then set client on pc. Newer phones even have a default program called Android dex, it also allows screen sharing properties
> -1 votes

---
Tags: usb, linux, windows, hdmi
---


title: Samsung S7, Wifi keeps disconnecting

text:
# Question
Title: Samsung S7, Wifi keeps disconnecting
I've searched around, and so I can ensure that this is not a duplicate.

* Smart Network Switch is off
* Keep Wifi on during sleep
* Wifi works excellent for other devices
* Wifi disconnects randomly even while the screen is open and device is in use

I opened up the Developer options, and turned on "Wi-Fi verbose logging" and when it disconnected, I saw these messages:

* NETWORK\_SELECTION\_PERMANENTLY\_DISABLED
* NETWORK\_SELECTION\_DISABLED\_BY\_WIFI\_MANAGER=2

Also in another occasion these:

* NETWORK\_SELECTION\_DISABLED\_BY\_ASSOCIATION\_REJECTION=1
* NETWORK\_SELECTION\_DISABLED\_BY\_WIFI\_MANAGER=1

The issue seems to be since installing an application, but I've uninstalled all recent applications on my phone, and it hasn't gotten better.

Safemode seemed to fix it, so there must be some kind of application interference, but the Wifi Control History only lists applications that turned on the wifi.

My only solution so far has been to disable wifi and re-enable it, or open up the wifi network manager in android, and tap the wifi connection. (presumably to override the 'network selection disabled')

---

Some logcat details:

```
[ 08-14 13:44:35.460  1364: 2509 E/WifiStateMachine ]
Did not find remoteAddress {10.100.5.1} in /proc/net/arp

```

and

```
I WifiHs20Service: Message received 5014
E WifiHs20Service: received HS20_UTILITY_ACTION_TYPE_HS20_CONFIGURATION_CHANGED
D WifiStateMachine:  DisconnectedState !CMD_GET_CONFIGURED_NETWORKS uid=10225  rt=2982499/2982499 10225 0 num=40
D WifiStateMachine:  ConnectModeState !CMD_GET_CONFIGURED_NETWORKS uid=10225  rt=2982500/2982500 10225 0 num=40
D WifiStateMachine:  DisconnectedState !CMD_GET_CONFIGURED_NETWORKS uid=10225  rt=2982511/2982511 10225 0 num=40
D WifiStateMachine:  ConnectModeState !CMD_GET_CONFIGURED_NETWORKS uid=10225  rt=2982511/2982511 10225 0 num=40

```

When turnnig wifi back on, I sometimes see:

```
WifiStateMachine: There are no configured ssid

```

followed by many SSIDs of wifis I've already used. The SSID in range is not listed. Perhaps because the SSID in range is marked 'permanently disabled' (see above)

---

Additional Edit, more info:

* I'm unable to reliably replicate this. It only disconnects when I'm assuming it'll work, and it doesn't seem to be crashing while I'm trying to use it.
* I got a disconnect while doing a beyondpod (podcast app) update: https://pastebin.com/Edx7ADXZ Things to note:
    + I could not duplicate it with just the podcast app
    + If you search in the log for beyondpod, you'll see more information about where the disconnect happens. Sometime before: "08-23 12:53:46.600"

---

Update 3:

I wiped my phone, and it was fine for a while, but it came back. The same error codes: `NETWORK_SELECTION_PERMANENTLY_DISABLED` and `NETWORK_SELECTION_DISABLED_BY_WIFI_MANAGER=2`

I guess wiping it was not sufficient.

Is there anything I can run to constantly reset my wifi (when the hardware switch is on) to effectively cancel out whatever is turning it off?

# Answer
Android didn't indicate which applications where toggling the wifi status accurately, and the logs were unhelpful.

I later noticed that "MyCricket", an application that helps pay for my Phone Service, had a setting titled: Turning on Cricket Wi-Fi Manager

Turning off this setting fixed it. I wish the Android controls had been more helpful.
> 1 votes

# Answer
Go to settings/display/screen saver & enable it. It seems to keep the wifi running. Hope I can help. I know it is an old thread but people still use this phone & this search is #2 on googling "s7 wifi keeps disconnecting" I hope I can help people like me.
> 0 votes

---
Tags: wi-fi, samsung, settings, 7.0-nougat, samsung-galaxy-s7
---


# Question
Title: Turn off emergency call quick access while the switch to turn it off is disabled
My Realme X2 (Android 11) phone, being a little old, when I press the power button, it gets pressed multiple times. I know this is a hardware issue, but I'd still like to get rid of emergency calls.

The disable app option is disabled and removing permissions does nothing.

|  |  |
| --- | --- |

Is there any way I can do it with ADB? I'm not planning on rooting this one yet.

# Answer
> 3 votes
I'm looking for a better solution for this myself, for now, the best I could do (on Android 13) was change the number it calls. For me, emergency # is 911, so I changed this to just "0". So even if it triggers accidentally, at least it doesn't call an actual "911" number.

# Answer
> 0 votes
For Realme devices, according to multiple Reddit users on r/Realme - Emergency SOS, the Emergency SOS app can be disabled by using ADB without the need for rooting:

```
adb shell pm uninstall --user 0 com.oppo.sos
adb shell pm uninstall --user 0 com.oplus.sos

```

(the package name should be either one of them depending on the device model)

---
Tags: settings, emergency-calls
---


title: Disable reset in settings

text:
# Question
Title: Disable reset in settings
I have a Samsung Galaxy S9. I want to modify the Android to remove all applications and leave only the GPS. I managed to do it with adb, but when we reset the phone, everything comes back.

I would like to remove the reset option in the settings, but I don't know how.

I tried

```
adb shell pm disable com.android.settings.Settings$ResetDashboardFragmentActivity

```

but it doesn't work.

# Answer
> 0 votes
`adb shell pm disable` does not uninstall but simply disables an installed app. And the information about which app is disabled is stored in your user data partition.

If you perform a factory reset the user data partition is reset to it's original state which effectively removes the information about disabled apps. This is by design on the Android system.

If an app can not be fully uninstalled it is a system or pre-installed app that is located on the system partition. And the system partition is read-only so you can not change it on an unrooted phone.

Only if you root your device and/or install a custom ROM you can uninstall and permanently uninstall pre-installed and system apps.

---
Tags: settings, factory-reset
---


# Question
Title: Confusion about android version on Samsung phone
I have for a lot of years been playing this game, 'Wordz', on my Samsung A21S, but suddenly it did not work properly. I removed it and wanted to reinstall, but now it says it does not work on my device(?)

I love this game, and I seriously think about getting a new phone, also since I believe other apps may stop working in the future (old phone).

So, of course I'd like to check the version needed for this app to work, and there the confusion starts.

On Play.google.com it says it need Android 4.0.3 and up.
My phone says it has Android version 12.
Something doesn't fit here, but I don't get it. I must look at the wrong numbers somehow, but I can not find out what to look for.

Can someone clarify this for me?

Pictures instead of a thousand words:

**Play.google.com:**

**Settings, Samsung A21S:**

# Answer
> -1 votes
Clear Google Play’s cache and data Open the Settings app. Apps & notifications \> Sell all apps \> Google Play Store. Storage \> Clear data \> Clear cache. Try downloading or opening the app again.

---
Tags: google-play-store, android-versions
---


# Question
Title: How can Phones such as Oppo be vulnerable to Privilege escalation exploits
Oppo (to my knowledge) makes it basically impossible to root, due to locking the boot loader and removing fast boot. So I'm wondering if this changes anything in regards to Privilege escalation exploits, whether they still work exactly the same or if they don't work at all. It might sound stupid, but I ask because if I can't gain root access to my own device, how can other malicious applications, programs and scripts do so.

(Assuming the Oppo phone in question uses up-to-date security updates)

Also I'm specifically talking about Privilege escalation exploits that can root a phone

# Answer
A locked bootloader and non-existent fastboot and most important Android Verified Boot (vnmeta), which cryptographically verifies the content of the system partition, make it extreme hard to root the device, respectively infect the device in a way that would survive a factory reset.

However this has absolutely no effect on privilege escalation exploits. It only makes it harder to use the gained privileges to create a persitent infection.

Privilege escalation exploits are executed at run-time, the bootloader state is not relevant for such an attack. If such an attack is successful in a worst case get an attacker root permissions and/or bypass SeLinux restrictions.

Using those elevated permissions the attacker could then try to make the attack persistent in a way that it survives a reboot. Or the permissions could be used to spy and/or manipulate on the system and other installed/running apps.
> 11 votes

---
Tags: rooting, root-access, security, malware, oppo-coloros
---


# Question
Title: Can I install old paid apps from Play Store on Android 14?
I have some older paid apps, mainly games, which I bought through Play Store. These older apps won't meet the requirement of targetSdk \>=23 from Android 14:

* Minesweeper Pro (`com.xxstudio.minesweeperpro`): Target SDK 3
* CopyPasteKeyboard Unlocker (`com.crane.keyboard.unlock`) which is an unlocker for CopyPasteKeyboard (`com.crane.keyboard`): Both have target SDK 4
* Guess-Free Minesweeper (`com.fstolt.minesweeper`): Target SDK 8
* Call Log Backup And Restore Pro (`com.riteshsahu.CallLogBackupRestorePro`): Target SDK 21

As the apps are paid apps, it's going to be hard for me to get them in APK format for me to use `--bypass-low-target-sdk-block` in order to install them on Android 14.

So is there any way for me to install such apps on Android 14?

# Answer
> 0 votes
It appears that installing of old apps is banned on Android 14. This includes trying to install them from other places than PlayStore.

> The biggest news is that Android 14 will block the installation of old Android apps. As Android changes over the years, new APIs and increased security, privacy, or background processing restrictions could break old apps, but Android's backward-compatibility system keeps these old apps running. Apps can declare the newest version of Android they support via a "Target SDK" flag.
>
> To prevent old apps from breaking, new features and app restrictions in, say, Android 12 only apply to apps that target Android 12 or above. Older apps will continue to run with the older set of restrictions they're used to. (A different setting, called "Minimum SDK," determines if a new app can run on an old Android OS.) The system works great for honest developers, but if you're building a piece of malware, it's an easy decision to target a very old version of Android. While you'll get access to fewer features, you'll also be subject to fewer security and privacy restrictions.

From Android 14 Preview 1 is out, will officially ban installation of old apps

> A change coming with Android 14 will impose restrictions on the apps that smartphone users can install on their devices, even if they’re sideloading software rather than installing it through the Play Store.
>
> Google’s change should help stop the spread of malware that takes advantage of exploits found in older builds of its Android OS, though if you’re a frequent sideloader it may make it a little harder to use non-Play Store apps.

From Android 14 could stop you from installing older apps – and that’s a good thing

---
Tags: google-play-store, installation, paid-apps, android-14
---


# Question
Title: How to backup/restore specific apps for new phone?
I'm switching from OnePlus 6 to Nothing Phone and just want to backup some (from some apps not all apps) app data without root access. What are my options?

I've read several articles but their mentioning outdated methods, root methods or just .apk backup methods without app data.

# Answer
> 0 votes
This has never been very successful for me. Available methods are

* For me its `Samsung Smartswitch`,
* There is `OnePlus Switch`
* Otherwise `Android Backup and Restore`
* Helium Backup
* Titanium Backup

You install them on both devices, some work with wifi, some with cable, others either way. The following is based on Samsung Smartswitch but I believe its the same with the OnePlus and Android toosl. I have not tried Helium or Titanium Backups.

* It copies all apps (that are free) and their data.
* It does not copy paid apps or their data or both. *I can understand this, otherwise it could be used to make copies of them with payment record intact*
* You have to re-register the paid-up apps again. Some recognise that they were paid for before, others do not.
* You have to re-register apps such as banking apps and authentication apps.

---
Tags: backup
---


# Question
Title: Hide "VPN Active" persisting notification in Android 12
I use VPN 24\*7. Earlier I used to be able to hide "VPN active" notification but since I upgraded to Android 12, the option is not there anymore.

What should I do to hide the notification?

# Answer
Perhaps, you can tap & hold to use the notification controls by turning off notifications from certain apps, or tap the settings button for advanced options.

Tip: You can also hide the VPN icon on the status bar with third-party apps with advanced adb tool.
> 1 votes

# Answer
Turn on developer options and switch on demo mode :)
> 1 votes

# Answer
I think you can't remove it anymore in android 12. Some models let you remove the notification over a system menu.

On my oppo there is a hack: Download a PDF on edge (maybe it works also with chrome). Then press on "remove all notifications" This removes it until the next start.
> 0 votes

# Answer
The OP seems to ask about VPN-app's own custom-notification,
I mean, because newer Android versions no longer show such notification.

You can only get rid of said custom-notification,
by removing notification permission of said app.

Another option would be asking their developers (or customer support) for such feature.

It's little hard, but said developers can remove notification,
by starting their `VpnService` in a separate process, like:
https://stackoverflow.com/a/38496939/8740349
> 0 votes

---
Tags: vpn, android-12
---


# Question
Title: Android switched into strange alternate user mode, does not react to input anymore as usual
My Android phone is stuck in some strange user mode, and this does not vanish after reboot.

* I am seeing green boxes around icons
* It is not responsive anymore
* I do not see how to open options

What is happening here, and how to switch it off? Even better, how do I remove this "feature" completely?

# Answer
> 2 votes
I was able to figure it out, so I am posting the answer for reference.

I accidentally switched on *Talkback*.

To switch it off, I had to push the volume up and down buttons for 3 seconds simultaneously.

Switching the feature on and off via the two volume buttons can (presumably) be disabled in the menu, and that should be somewhere in the *Accessibility* or something similar section.

---
Tags: settings
---


# Question
Title: How to force Android to tell the browser about real physical resolution?
Samsung Flow allows users of Samsung phones to use the **external display**, eg. laptop as larger display and also with physical keyboard.

However, the browser is still in mobile mode (big UI and big font on low resolution).

I've activated the **view as desktop** in browser and the websites are displayed as in desktop, but the Android OS is still reporting to browser (or browser itself) the **virtual resolution** which is altered by DPI. Thus the web pages are **limited at around 800px to 900px (width)**. This can be seen when opening mobile browser at *whatismyresolution.com*.

How to force the browser to **use physical resolution in its desktop mode**? I've tried all mobile browsers but no such option in their Settings.

# Answer
> 0 votes
The font size setting in **Android Settings** can change the font size and apps will follow but it is still not enough to use the physical resolution

In order to use **physical resolution** on the phone that browser will report physical resolution to the JavaScript inside the pages:

* The font size in default Android Settings is not enough, it's just app UI
* Steps
    + 1. Enable **Developer Settings**, press 7 times on something in Android Settings of that kind of stuff
    + 2. Go inside Developer Settings, set "**Minimum width**" to the smaller size of the dimensions, eg. full HD is 1920x1080, set it to 1080
    + 3. **BUT BE AWARE**: DON'T PUT THAT "Minimum width" TOO BIG, ALL UI IN ANDROID WILL BE TOO SMALL TO PRESS WITH FINGER TO CHANGE IT BACK.

---
Tags: screen, browser
---


# Question
Title: Messages is processing an incoming message
When there is an incoming SMS, my phone would show "Messages is processing an incoming message" in the notification drawer, but then that notification would disappear and... nothing! There is no notifications for the actual SMS. When I opened Messages, I couldn't see that incoming SMS. I checked the web interface for Messages, not there either. Couldn't find it in the "Spam & blocked" or Archived either.

I need to read this SMS for two factor authentication. I would wait for the SMS to appear, but most of the time it didn't appear until the authentication code expired. I had to request auth code 2 or 3 times before I got it in time.

Is there a way to get SMS quicker?

Android version 9. Device is Asus Zenfone Max Pro M1. Messages version 9.2.030.

# Answer
## Hardware Performance?

It could be that your phone is underpowered.

Your mention a Asus Zenfone Max Pro M1, which is a mid-range phone from 2018. So I wouldn't think it's *THAT* slow, but I definitely see this message occur on underpowered devices (including one of mine, a Nokia 1 Plus), and depending on your setup it be the cause.

I'd recommend you try to "lighten" your phone a bit:

* remove useless apps (to ensure enough available memory to run smoothly),
* replace some apps with lighter versions (for instance, I use Android GO versions of Google Apps when possible, and I use Olauncher as a minimalist launcher),
* disable background tasks where/when possible.

## Network / Operator Performance?

I don't think it's related to the phone network operator.

I get these on different networks with that phone. And I have not issues when I use other phones on these networks.
> 1 votes

# Answer
As of June 2023, here's how I managed to make this infamous "Messages is processing an incoming message" issue resolved on my Pixel 2 (running a rooted Android 11 ):

1. Upgrade to the latest Messages app.
2. Open https://messages.google.com/web in your Google Chrome on your Android device (yes, it's gotta be on the corresponding Android device where you got the issue, otherwise it won't do). Check on "Remember this computer", take the screenshot of the QR code.
3. Quickly send this QR code screenshot to your own self on WhatsApp/Telegram/Signal or similar app (the idea here is to be able to open this QR code on another machine via WhatsApp/Telegram Web/Desktop so that you can scan it using your phone).
4. Using your PC or Mac, open the chat-to-yourself containing the QR code screenshot from the previous step on e.g. WhatsApp Web. While leaving it open, open the Messages app on the problematic phone, go to "Device pairing" and scan the aforementioned QR code.
5. Now that your Messages app and Chrome for Android are paired on the same phone, open again https://messages.google.com/web in your Chrome (on your phone) and verify that the Messages Web works correctly there.
6. Lastly, click on the Chrome's menu while opening the Messages Web tab, and select "Add to Home screen" – this will add "Messages Web" to your phone's home screen.
7. After this **pairing act between your Messages app and Chrome for Android** on your phone, you should be able to receive messages/SMS normally again within 2-3 seconds window! ⚡

I believe the pairing act forces the messages/SMS checking mechanics to be constantly executed somehow by the Messages app:
> 1 votes

# Answer
I was able to get theses kinds of messages by simply downloading a new messaging app that carries over your current messages. I personally had access to Verizon's messenger+ which worked fine for me. Hope this helps
> 0 votes

# Answer
I guess it's the phone problem. I recently change my phone and now it take years for the sms to came in. Previously with the old phone, I can receive sms normally
> 0 votes

---
Tags: google-messages
---


# Question
Title: Disable Querying LAN Address when on Mobile
We have a local server with a domain name and DNS, all *only* accessible on a LAN or via VPN. We use this to maintain a few services synced up.

Is there a way to disable phones from trying to access those addresses when not connected to the local SSID or VPN? They wouldn't be able to connect anyways, and it would help to avoid it constantly trying to resolve the address.

We've considered a *hosts* file approach, but that would just block those addresses entirely.

# Answer
> 0 votes
The mobiles can only connect to Wi-Fi (unless plugged in somehow). If this DNS is not visible on Wi-Fi, there isnt a problem.

If it is, then you can use a different subnet for this DNS. For example

* Wifi on `192.168.2.x`
* Local on `192.168.1.x`

---
Tags: networking, vpn
---


# Question
Title: How to restore notification number badges on app icons on Samsung devices?
My Samsung Galaxy S22 stopped showing a number in the upper-left corner of the messages app when a new text message has arrived. I think these numbers have been called badges.

Is there a way to restore the number notification? Have they been eliminated for another method of notifications?

# Answer
> 1 votes
Found path to restore icon badge numbers: Settings \> Notifications \> Advanced \> App icon badges \> On

---
Tags: samsung, notifications, notification-badges
---


title: Hide VoLTE icon on Samsung

text:
# Question
Title: Hide VoLTE icon on Samsung
I used to be able to turn off VoLTE, but since a recent update, if I select 5G, VoLTE can't be disabled anymore (it is grayed out). I don't mind it being on, I just want to hide the icon.

If I select 4G I can disable it. That's what's working for me now. But then I can't use 5G connectivity.

# Answer
> 4 votes
Sorry, just found a way. Get `Good Lock` from Galaxy Store, and then get `QuickStar`. It have an option to hide the icon.

---
Tags: samsung, 4g, voice-over-lte
---