# Question
Title: Does Android hold audio in RAM when listening for ‘hey google’?
When Android phones have the ‘hey google’ wake word setting enabled so it’s always listening for it, are these audio snippets held in RAM when looking for the wake word and not stored on the phone or storage anywhere? Since overwriting everything it hears on the phone's storage would wear it out?

# Answer
> 7 votes
The restriction for 'always on' listening isn't wearing out the RAM/storage, its power management.

Based on: Qualcomm Voice Assistant promotional material, Qualcomm has its own low-power processor for handling the 'wake word' which depending on the activity, bring up the regular CPUs for the OS/apps to manage what happens next.

I suspect that the low-power processor is using its own RAM to handle the wake-word/dealing with ambient audio until detection at which point other parts of the OS stack need to handle things the user is specifying like "do xyz with abc".

Further details can be found in the Android Open Source Project - Sound Trigger.

---
Tags: storage, ram, google-assistant
---


# Question
Title: Google Account(and apps) not syncing on my Realme C2(Android 9)
My google account and app data are not syncing on my Realme C2 (Android 9). The data of a few apps like Chrome and Calendar is syncing and showing up when I select my google account under "Accounts and Sync", but the data of other important apps like Gmail, Drive, and Keep is not syncing. The "Sync Now" button is unresponsive. I tried removing and re-adding the google account, clearing the data and cache of all google apps, uninstalling and reinstalling them, and rebooting the device. But nothing seems to work. Please help me with this.

Thanks a lot!!

# Answer
The issue was lack of storage. The sync resumed when approximately 2 GB of storage space was available on my device.
> 0 votes

---
Tags: sync, google-account, 9.0-pie, google-apps, realme
---


# Question
Title: How do Android apps access phone's simcard and determine the location/country without permission?
I noticed there are apps like Shazam or Tiktok that can find my location/country and offer local content even when I use VPN. my VPN doesn't have any IP/DNS leak.

When I remove the simcard or make it offline in the settings, clear app data and relaunch those apps, then they show content based on the country of my VPN server.

My question is how is it possible that they do this and ask no permission from me? I use latest Android 12, Samsung Galaxy S21 Ultra. this happens on other phones too, for example running Android 9.

Is there a way to prevent this kind of information disclosure without removing/offlining the simcard or rooting the phone?

# Answer
> 6 votes
Apps cannot access SIM card directly, neither they can get your exact location without getting permission. But they can get your country code if the device is connected to a cellular network. No special permission is needed to call `getSimCountryIso` or `getNetworkCountryIso`. You need a framework mod like XPrivacyLua to have such level of control.

---
Tags: privacy, sim-card, vpn, geolocation
---


# Question
Title: How to run a specific app's action via terminal?
I need to run my Android app from a remote computer via SSH, but I'm not a command-line expert.

So I would like to know: how to run a **specific action** (not just open) of an app? Which implies: how to KNOW the exact syntax of possible actions of an app?

Example: I want to start an audio-recording app on my phone from my computer, AND start recording from a remote. Is it possible?

# Answer
> 12 votes
Use this:

```
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

```

To control an app, you'll have to put correct values of `<package_name>` and `<full_class_name>` in the command. For example, you can use `com.google.gmail/com.google.gmail.check_mail` (Hypothetical names) as last part of command.

Obtaining package name of an app is easy, but obtaining class name of action isn't. There are two problems:

1. Many app developers keep class info private.
2. Not all developers do smart modular programming. Its good habit to divide an app in multiple classes which could be triggered by intents, but not all developers are smart.

Solution of 1st problem: Decompile the app using apktool and see all info. There are also other ways, but this one is always-working method (unless app is based on NDK instead of SDK).

Solution of 2nd problem: Nothing.

Don't worry, most of popular apps follow best programming practice and they provide `Public API` from which you can get class info.

# Answer
> 9 votes
Like Sachin Shekhar said, you must use the following command :

```
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

```

See a concrete example :

* getting the apk file from your Android device or any Market places
* running this command :

`aapt dump xmltree com.android.settings*.apk AndroidManifest.xml`

I would like to start "tethering" menu, so I search an activity in the output :

```
(...)
   E: activity (line=190)
    A: android:name(0x01010003)=".TetherSettings" (Raw: ".TetherSettings")
(...)

```

So the final command is :

```
am start -a android.intent.action.MAIN -n com.android.settings/.TetherSettings

```

The `aapt` command is part of the Android SDK

# Answer
> 0 votes
Use a general purpose logging app (just search logcat on playstore). The logs should show you the app name, class and intent.
Following that run the command in an adb shell or from inside a terminal application in your device:

```
am start -a <intent> -n <class>

```

---
Tags: applications, terminal, command-line
---


# Question
Title: Is `device_idle_constants` deprecated in Android 12?
Recently I've been trying to optimize the doze settings for my device. I found many guides that date back to 2015/16. All of them say something similar: To change a `deviceidle` setting, I have to input `adb shell settings put global device_idle_constants inactive_to=30000,sensing_to=0` (for example) in a terminal. When typing in `adb shell settings list global`, `device_idle_constants` doesn't get listed tho. Seems to me it's deprecated.

**My Problem:** This setting doesn't change anything at all. When I change `sensing_to` to 0 like I have shown above, it's still at `4m0s0ms`. I can confirm this by putting `adb shell dumpsys deviceidle` in the terminal.

Does anyone know how to change those doze parameters in Android 12(L)?

Btw: I have a Poco F3 with LineageOS 19.1

# Answer
> 1 votes
**Doze configuration has been moved from global system settings until Android 11 to device configuration since Android 12.**

Until Android 11, the Doze configuration is in `Settings.Global` with `device_idle_constants` as the key, thus it's still possible to change the configuration using `adb shell settings put global device_idle_constants [VALUE]`, with `[VALUE]` as a single string, separated with comma for multiple values.

However, since Android 12, the flags have been migrated to `DeviceConfig` with `device_idle` as the namespace. To change the configuration, use `adb shell device_config put device_idle [KEY] [VALUE]` instead.

---
Tags: settings, terminal, android-12, doze-mode
---


title: Android contact sync fails

text:
# Question
Title: Android contact sync fails
Not like in other question, contacts entry is actually displayed in google sync list, but sync still fails with same error: "Sync is currently experiencing problems. It will be back shortly."

# Answer
> 0 votes
Check that "Google Contacts Sync" app is enabled. It will be listed only under system apps, not just under common apps.

(Especially relevant after universal android debloater usage.)

---
Tags: active-sync
---


# Question
Title: Laptop webcam works with BlueStacks but not with Nox
I have an MSI laptop with an integrated webcam and I need the camera to function using Nox Player. I've read everywhere that the camera is supposed to work out of the box with Nox. However, it doesn't.

I installed BlueStacks to check and it worked with BlueStacks. On Nox, whatever app I install, it acts as if there is no camera.

How to fix this?

# Answer
MEMU is suspect and is "not safe" to use in my experience, and my camera has sync issues with that emulator that messes up my apps and network settings.

My understanding is the latest NOX version uses Android 7. The webcam at this time is not supported.

That's all the info I can find on this. And sadly, BlueStacks records me sideways.
> 1 votes

# Answer
Install "CPU X" app on Nox, then go to "Camera" menu and back. that's all. It may correct your problem.
> 0 votes

# Answer
You can try ManyCam. ManyCam comes with additioanly several features. For example: It can be reflect desktop screen in camera for Qr code read process.
> 0 votes

# Answer
So I gave MEMU a try, and it has all Nox features + the camera works.

MEMU is an Android emulator very similar to Nox Player. Installation is straightforward, nothing special is needed, and the camera works out of the box.
> -1 votes

---
Tags: 5.0-lollipop, camera, noxplayer
---


title: Save notifications when rebooting

text:
# Question
Title: Save notifications when rebooting
When you reboot an Android, all notifications are deleted. Is there a way to save the notifications and restore them after reboot?

Any help would be appreciated.

Thank you.

# Answer
> 1 votes
Perhaps a script with SL4A for example to automate a task so that on shutdown/reboot of the device notifications are saved to a txt file in your home drive.

I don't have experience with it myself, but if anyone else knows a better way to automate a script on Android I'd be very interested too.

EDIT: On upon further research what you want is a notification logger app, such as Notification Log which records your notifications locally and enables you to browse/export them at will. Another possible app is Notification History Log

---
Tags: notifications
---


# Question
Title: Magisk: Failed to patch: Unsupported image format
I'm trying to root a Pixel 5a using Magisk (24.3). I've downloaded the barbet-rd2a.211001.002-factory-dbed3a6f factory image, pushed it to the phone, and tried to patch it with Magisk.

However, the output shows an error:

```
- Device platform: arm64-v8a
- Installing: 24.3 (24300)
- Copying image to cache
- Unpacking boot image
! Unsupported/Unknown image format
! Installation failed

```

I gather that I've downloaded the wrong image. How do I know which image is compatible?

# Answer
The factory images are provided by Google in ZIP format. You have to unzip it, select the boot image, and **then** apply the Magisk patch.
> 0 votes

---
Tags: rooting, magisk
---


# Question
Title: adb install: downloaded apkm file from ApkMirror.com doesn't end with .apk
I'm attempting to install, via `adb`, Chrome Beta 104.0.5112.55 downloaded from APKMirror.

The filename is `com.chrome.beta_104.0.5112.55-511205534_5lang_7feat_fdd8ce962abf141ecf575852ba260e4f_apkmirror.com`.

However, when I run

```
adb install -r com.chrome.beta_..._apkmirror.com

```

it complains,

> adb: usage: filename doesn't end .apk: com.chrome.beta\_...\_apkmirror.com

I tried changing the filename by appending an `.apk` but got

> adb: failed to install com.chrome.beta\_...\_apkmirror.com.apk: Failure \[INSTALL\_PARSE\_FAILED\_UNEXPECTED\_EXCEPTION: Failed to parse /data/app/vmdl1212970952.tmp/base.apk: AndroidManifest.xml\]

# Answer
Most Android apps are today no longer shipped as a monolithic APK file that can be installed on every flavor of an Android device.

Instead Android apps are shipped as bunch of APK files the app is split into. The file you have downloaded from apkmirror contains such a bunch of APK file. For your convenience they are ZIPed into one file so you don't have to download half a dozen APK files.

For installing such an APK zip bundle (some times called app-bundle) you first need to unzip the downloaded file and then install the APK files using the adb command `install-multiple` and then list all the APK files you have extracted.

```
adb install-multiple base.apk filex.apk filey.apk ....

```

On Windows you have to manually provide all the file names.

On Linux/MacOS (assuming all extracted APK files are located in one directory) you can just use

```
adb install-multiple *.apk

```

and leave the resolving of the wildcard to your shell (e.g. bash).
> 11 votes

---
Tags: adb, installation, apk
---


# Question
Title: How to format SD card that has been formatted as internal storage for Android?
I have tried `clean all` command in `Diskpart` and it took an hour to be completed but at the end nothing has changed. I think the SD card is locked and when I try to format or re-partition the disk, either it will show a successful result or it will return "Windows was unable to complete the format" error. I have tried to format it in Linux (this answer) and Android as well but no luck. Is there a way to reuse my SD card as a portable storage?

UPDATE: GParted details when I delete the partition

```
GParted 0.30.0 --enable-libparted-dmraid --enable-online-resize

Libparted 3.2

Delete /dev/mmcblk0p2 (unknown, 59.46 GiB) from /dev/mmcblk0  00:00:08    ( SUCCESS )

calibrate /dev/mmcblk0p2  00:00:00    ( SUCCESS )

path: /dev/mmcblk0p2 (partition)
start: 34816
end: 124735454
size: 124700639 (59.46 GiB)
delete partition  00:00:08    ( SUCCESS )
libparted messages    ( INFO )

Input/output error during write on /dev/mmcblk0
========================================

Delete /dev/mmcblk0p1 (unknown, 16.00 MiB) from /dev/mmcblk0  00:00:01    ( SUCCESS )

calibrate /dev/mmcblk0p1  00:00:00    ( SUCCESS )

path: /dev/mmcblk0p1 (partition)
start: 2048
end: 34815
size: 32768 (16.00 MiB)
delete partition  00:00:01    ( SUCCESS )
========================================

```

GParted details when I try to format:

```
GParted 0.30.0 --enable-libparted-dmraid --enable-online-resize

Libparted 3.2

Format /dev/mmcblk0p1 as fat16  00:00:01    ( ERROR )

calibrate /dev/mmcblk0p1  00:00:00    ( SUCCESS )

path: /dev/mmcblk0p1 (partition)
start: 2048
end: 34815
size: 32768 (16.00 MiB)
clear old file system signatures in /dev/mmcblk0p1  00:00:00    ( SUCCESS )

write 512.00 KiB of zeros at byte offset 0  00:00:00    ( SUCCESS )
write 512.00 KiB of zeros at byte offset 16252928  00:00:00    ( SUCCESS )
write 4.00 KiB of zeros at byte offset 16711680  00:00:00    ( SUCCESS )
write 8.00 KiB of zeros at byte offset 16769024  00:00:00    ( SUCCESS )
flush operating system cache of /dev/mmcblk0  00:00:00    ( SUCCESS )
set partition type on /dev/mmcblk0p1  00:00:01    ( SUCCESS )

new partition type: fat16
create new fat16 file system  00:00:00    ( ERROR )

mkfs.fat -F16 -v -I '/dev/mmcblk0p1'    ( EXECUTING )

Failed to execute child process “mkfs.fat” (Input/output error)    ( ERROR )
========================================

Format /dev/mmcblk0p2 as fat32

```

Results for zeroing:

```
sudo dd if=/dev/zero of=/dev/mmcblk0 bs=8192

dd: error writing `dev/mmcblk0`: No space left on device

7795969+0 records in
7795968+0 records out
63864569856 bytes (64 GB, 59 CAB) copied, 3824.26 s, 16.7 MB/s

```

Results for amd64-stdtool status:

```
[+] Found RCA for /dev/mmcblk0: E624.
[+] Card CSD: 400E005A7B590001DED48F700R808006.
[+] Write protection state: Off.

```

# Answer
You may go to Settings \> Storage. Then go to the more button at the top right corner. There should be an option "Format as portable". Would that work?
> 0 votes

# Answer
I think the problem is write protection. I am currently experiencing this problem..

I initially used the sdcard as internal storage so I believe Android will put write protection in the sdcard.

To me the solution is to use Android command line or shell and run Linux command on the sdcard and remove the write protection knowing fully well that only device that encrypte the sdcard can decrypt it.
> 0 votes

---
Tags: internal-storage, sd-card, internal-sd, formatting
---


# Question
Title: Disable Ability to Change Language with Spacebar
I have a Pixel 4 with Android 10. I am new to Android.

I use both English and Spanish. I want to be able hold down the Spacebar to enter the mode where I can move the cursor around.

But when I do so, I get a pop-up asking me to switch languages. Since I can accomplish the same thing with the globe button, how can I disable this? Thanks

# Answer
> 0 votes
yea I know how you feel I was an apple user but as Andrew.T states just touch where you want the cursor and drag and you will get to where you need to be. hold your finger down for longer you get copy paste etc etc :)

# Answer
> 0 votes
You can do it. But you lose the ability to switch languages. So it depends what's a priority for you. Since I'm monolingual I have no need to switch languages and I have disabled the space bar language pop up.

The way to do it is to go into the language settings and delete all but one language. In my case I had to disable handwriting US English as well as another version of US English which uses a the keyboard layout that I never bother with. So I'm left with only one option and that is US English QWERTY. If you do something like that then the space bar can be used solely for moving the cursor by sliding or creating a space.

---
Tags: languages, gboard
---


title: TWRP recovery not launching

text:
# Question
Title: TWRP recovery not launching
I have OnePlus 3 (A3003). I installed a custom ROM. Since then, I can't get to recovery mode. If I try booting into it, my phone gets stuck on the OnePlus logo.

I tried flashing it with fastboot,

```
C:\...\Android\android-sdk\platform-tools> fastboot flash recovery recovery.img
target reported max download size of 442499072 bytes
sending 'recovery' (18964 KB)...
OKAY [  0.580s]
writing 'recovery'...
OKAY [  0.144s]
finished. total time: 0.726s

```

And also I tried flashing it with the TWRP app, it gave me an error telling me that I have already installed it.

What is the problem?

# Answer
You can reboot to TWRP using **adb** commands from your desktop.

Connect your android device, navigate your cmd to `C:\Users\juanhh\AppData\Local\Android\android-sdk\platform-tools` and type

```
adb devices

```

It will show list of connected devices. If not, then you probably need to install *universal adb driver*.

**To reboot into TWRP recovery, type**

```
adb reboot recovery

```
> 0 votes

# Answer
I got it. **FirstAid** from XDA may help you. You can read full discussion about this. You have probably also still locked bootloader. Try `fastboot -i 0x2A70 oem unlock-go`
> 0 votes

# Answer
sorry for the grave digging.

this is caused by incompatible firmware. firmware are binary blobs akin in function to an old BIOS or a newer UEFI firmware in PC parlance. just as in PCs, it does much more than simply booting the OS kernel.

aftermarket roms and OSes (including TWRP) may not bundle firmware blobs but often do require a specific version. in your case: TWRP bundles a kernel, and the complete "OS" (kernel + TWRP) depends on specific firmware version(s) to work. the ROM you flashed does include the blobs it requires, so during the flashing process your firmware was overwritten (without this, the ROM would not have booted). but now your old TWRP is not compatible with the newer firmware and thus fails to boot. it will fail even if you do a `fastboot boot my-twrp.img`.

there are so called "firmware collections", which are zips you can flash with different firmware versions, extracted from OTAs and published by users. if you flash an older firmware, your currently flashed TWRP will work again (and your currently flashed OS will cease to work).

but of course, you can't flash the firmware zip because you don't have a working recovery... :)

so your options are:

* find a TWRP binary that works with the firmware included in your OS and flash it (you can `fastboot boot` it to test it before hand).
* find an older firmware zip, extract the relevant partition images, and fastboot flash them (warning: very risky unless you know what you are doing).
* fastboot flash a complete stock OS with the right firmware version for your chosen OS **and** TWRP.

EDIT:

the firmware initializes the hardware (CPUs, RAM, flash, etc) and eventually chooses to run android or recovery. it runs well before the choice is made. thus, it is not possible to have 2 firmwares, one for android and one for recovery, the way you have 2 linux kernels.

this means that, in a sane world, the firmware would just be a bootloader and it would not expose interfaces for the OS that would make the OS dependent on a specific firmware version. any other blobs required should be part of the OS (and duplicated for the 2 OSes, each with its required version).

unfortunately in android the firmware got so fat that now the idea of having 2 independent OSes in a device, the concept of a linux-based recovery, is no longer workable. in fact, it has been eliminated in A/B devices altogether, with the recovery being an alternate userland that shares its kernel with android. the only real recovery method that works now is fastboot, and it is severely limited.
> 0 votes

---
Tags: recovery-mode, fastboot, twrp, oneplus-3
---


# Question
Title: How to keep screen turned off when plugging charger?
I have an HTC Desire. When I plug charger into my phone with screen off, it always turns the screen back on. This is slightly annoying at night.

Is it possible to configure Android so that the screen stays off and charging is only indicated via charging LED?

# Answer
> 11 votes
SnooZy Charger takes care of this. The free app (as in beer and speech) that lets you manage behavior during charger connection and disconnection.

It requires no permissions but does require you to give it the device admin permissions. These permissions are only used to control device locking, as verifiable in its source code. From quickly going through the app’s source code, it looks totally harmless and benign.

If the app does not behave as you want, make sure to go through the Settings. For example, “Turn off screen only when locked” is enabled by default. This means that the app will not kick into effect if you have an on/off-button-press-lock delay or other related settings.

It works perfectly for my on a wireless charging pad and with a micro-USB cable using an LG Nexus 4 device. I am very satisfied.

I also documented additional issues here.

# Answer
> 7 votes
Do you happen to have enabled `Settings > Application > Development > Stay Awake (screen will never sleep when charging)`?

# Answer
> 3 votes
As far as I can see, the only way to archive this behaviour is to switch from stock Android to CyanogenMod - which does have this feature built-in (under "Display & lights" menu in preferences, disable the option "Wake on plug")

I'm also searching for a solution on stock Android, but it seems like that's the only way. Too bad, one has to change ROM just for this feature.

# Answer
> 2 votes
If you install Xposed, All My... module has an option to prevent the screen from waking when plugging into a charger.

# Answer
> 2 votes
I realise this was asked a while ago but since this still comes up first in Google when you search for how to disable the coloured screen when charging a Samsung device, here the updated answer: in the settings menu under Display \> Screensaver you can choose the screen saver that is shown while the device is charging. Simply set this to "none".

# Answer
> 1 votes
There is an app by mitskiP called **Screen Stay Off**. I've used it for a year and it works nicely. My only criticism is that the screen turns on briefly, then turns off.

# Answer
> 0 votes
Try using these two in harmony:

It worked for me.

# Answer
> 0 votes
Having the "Ambient mode" on turns the screen on while charging, even if the option "Settings \> Application \> Development \> Stay Awake (screen will never sleep when charging)" is off.

You need to turn the "Ambient mode" off as well.

I would not suggest to install further applications only for that, while you can do the trick directly from Android.

# Answer
> 0 votes
I have made a Tasker profile. It works by waiting for a state change and then reverting the screen state to whatever it was before said change.

Here is the copy of my `Screen.prj.xml` profile:

```
<TaskerData sr="" dvi="1" tv="6.0.10">
    <Profile sr="prof42" ve="2">
        <cdate>1658764422437</cdate>
        <edate>1658770109384</edate>
        <flags>8</flags>
        <id>42</id>
        <mid0>41</mid0>
        <nme>POWER UNPLUGGED</nme>
        <Share sr="Share">
            <b>false</b>
            <d>When you unplug your phone from a power source, have your screen automatically lock itself.</d>
            <g>Basics,Display,Security</g>
            <p>true</p>
            <t></t>
        </Share>
        <State sr="con0" ve="2">
            <code>10</code>
            <pin>true</pin>
            <Int sr="arg0" val="0"/>
        </State>
    </Profile>
    <Profile sr="prof47" ve="2">
        <cdate>1658765139741</cdate>
        <clp>true</clp>
        <edate>1658770063039</edate>
        <flags>8</flags>
        <id>47</id>
        <mid0>48</mid0>
        <nme>DISP ON</nme>
        <Event sr="con0" ve="2">
            <code>208</code>
        </Event>
    </Profile>
    <Profile sr="prof49" ve="2">
        <cdate>1658765984104</cdate>
        <clp>true</clp>
        <edate>1658770076363</edate>
        <flags>8</flags>
        <id>49</id>
        <mid0>50</mid0>
        <nme>DISP OFF</nme>
        <Event sr="con0" ve="2">
            <code>210</code>
        </Event>
    </Profile>
    <Profile sr="prof51" ve="2">
        <cdate>1658764422437</cdate>
        <clp>true</clp>
        <edate>1658770092328</edate>
        <flags>8</flags>
        <id>51</id>
        <mid0>52</mid0>
        <nme>POWER PLUGGED</nme>
        <Share sr="Share">
            <b>false</b>
            <d>When you plug your phone in leave screen on/off state alone. (Will revert screen state after android toggles it).</d>
            <g>Display,Power</g>
            <p>true</p>
            <t></t>
        </Share>
        <State sr="con0" ve="2">
            <code>10</code>
            <Int sr="arg0" val="0"/>
        </State>
    </Profile>
    <Project sr="proj0" ve="2">
        <cdate>1658764409345</cdate>
        <name>SCREEN</name>
        <pids>47,42,49,51</pids>
        <tids>46,50,41,48,52</tids>
        <Share sr="Share">
            <b>false</b>
            <d>Revert or maintain screen on/off state after power plugged in or out.</d>
            <g>Display,Power</g>
            <p>true</p>
            <t></t>
        </Share>
    </Project>
    <Task sr="task41">
        <cdate>1650476952536</cdate>
        <edate>1658769236054</edate>
        <id>41</id>
        <pri>100</pri>
        <Action sr="act0" ve="7">
            <code>547</code>
            <Str sr="arg0" ve="3">%STARTED</Str>
            <Str sr="arg1" ve="3">%TIMES</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
            <ConditionList sr="if">
                <bool0>And</bool0>
                <Condition sr="c0" ve="3">
                    <lhs>%STARTED</lhs>
                    <op>13</op>
                    <rhs></rhs>
                </Condition>
                <Condition sr="c1" ve="3">
                    <lhs>%SCREEN</lhs>
                    <op>2</op>
                    <rhs>on</rhs>
                </Condition>
            </ConditionList>
        </Action>
        <Action sr="act1" ve="7">
            <code>547</code>
            <Str sr="arg0" ve="3">%UPTIME</Str>
            <Str sr="arg1" ve="3">%TIMES-%STARTED</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="1"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
        </Action>
        <Action sr="act2" ve="7">
            <code>548</code>
            <on>false</on>
            <Str sr="arg0" ve="3">%UPTIME</Str>
            <Int sr="arg1" val="0"/>
            <Str sr="arg10" ve="3"/>
            <Int sr="arg11" val="1"/>
            <Int sr="arg12" val="0"/>
            <Str sr="arg13" ve="3"/>
            <Int sr="arg14" val="0"/>
            <Int sr="arg2" val="0"/>
            <Str sr="arg3" ve="3"/>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Int sr="arg9" val="1"/>
        </Action>
        <Action sr="act3" ve="7">
            <code>248</code>
            <Int sr="arg0" val="0"/>
            <Int sr="arg1" val="1"/>
            <ConditionList sr="if">
                <Condition sr="c0" ve="3">
                    <lhs>%UPTIME</lhs>
                    <op>6</op>
                    <rhs>1</rhs>
                </Condition>
            </ConditionList>
        </Action>
    </Task>
    <Task sr="task46">
        <cdate>1658764707914</cdate>
        <edate>1658765118823</edate>
        <id>46</id>
        <nme>Dont Screen On On Power</nme>
        <Action sr="act0" ve="7">
            <code>548</code>
            <Str sr="arg0" ve="3">%SCREEN</Str>
            <Int sr="arg1" val="0"/>
            <Str sr="arg10" ve="3"/>
            <Int sr="arg11" val="1"/>
            <Int sr="arg12" val="0"/>
            <Str sr="arg13" ve="3"/>
            <Int sr="arg14" val="0"/>
            <Int sr="arg2" val="0"/>
            <Str sr="arg3" ve="3"/>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Int sr="arg9" val="1"/>
        </Action>
        <Action sr="act1" ve="7">
            <code>248</code>
            <on>false</on>
            <Int sr="arg0" val="0"/>
            <Int sr="arg1" val="0"/>
            <ConditionList sr="if">
                <Condition sr="c0" ve="3">
                    <lhs>%SCREEN</lhs>
                    <op>2</op>
                    <rhs>off</rhs>
                </Condition>
            </ConditionList>
        </Action>
    </Task>
    <Task sr="task48">
        <cdate>1658765152954</cdate>
        <edate>1658767756538</edate>
        <id>48</id>
        <nme>Display Uptime</nme>
        <pri>6</pri>
        <Action sr="act0" ve="7">
            <code>547</code>
            <Str sr="arg0" ve="3">%STARTED</Str>
            <Str sr="arg1" ve="3">%TIMES</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
        </Action>
        <Action sr="act1" ve="7">
            <code>548</code>
            <on>false</on>
            <Str sr="arg0" ve="3">started %STARTED</Str>
            <Int sr="arg1" val="0"/>
            <Str sr="arg10" ve="3"/>
            <Int sr="arg11" val="1"/>
            <Int sr="arg12" val="0"/>
            <Str sr="arg13" ve="3"/>
            <Int sr="arg14" val="0"/>
            <Int sr="arg2" val="0"/>
            <Str sr="arg3" ve="3"/>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Int sr="arg9" val="1"/>
        </Action>
        <Action sr="act2" ve="7">
            <code>549</code>
            <Str sr="arg0" ve="3">%STOPPED</Str>
            <Int sr="arg1" val="0"/>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
        </Action>
    </Task>
    <Task sr="task50">
        <cdate>1658766071199</cdate>
        <edate>1658769148172</edate>
        <id>50</id>
        <nme>Reset Screen Uptime</nme>
        <pri>6</pri>
        <Action sr="act0" ve="7">
            <code>547</code>
            <Str sr="arg0" ve="3">%STOPPED</Str>
            <Str sr="arg1" ve="3">%TIMES</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
        </Action>
        <Action sr="act1" ve="7">
            <code>548</code>
            <on>false</on>
            <Str sr="arg0" ve="3">Stopped %STOPPED</Str>
            <Int sr="arg1" val="0"/>
            <Str sr="arg10" ve="3"/>
            <Int sr="arg11" val="1"/>
            <Int sr="arg12" val="0"/>
            <Str sr="arg13" ve="3"/>
            <Int sr="arg14" val="0"/>
            <Int sr="arg2" val="0"/>
            <Str sr="arg3" ve="3"/>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Int sr="arg9" val="1"/>
        </Action>
        <Action sr="act2" ve="7">
            <code>547</code>
            <on>false</on>
            <Str sr="arg0" ve="3">%UPTIME</Str>
            <Str sr="arg1" ve="3">0</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
        </Action>
        <Action sr="act3" ve="7">
            <code>549</code>
            <Str sr="arg0" ve="3">%STARTED</Str>
            <Int sr="arg1" val="0"/>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
        </Action>
    </Task>
    <Task sr="task52">
        <cdate>1650476952536</cdate>
        <edate>1658769822832</edate>
        <id>52</id>
        <pri>100</pri>
        <Action sr="act0" ve="7">
            <code>548</code>
            <on>false</on>
            <Str sr="arg0" ve="3">%STOPPED</Str>
            <Int sr="arg1" val="0"/>
            <Str sr="arg10" ve="3"/>
            <Int sr="arg11" val="1"/>
            <Int sr="arg12" val="0"/>
            <Str sr="arg13" ve="3"/>
            <Int sr="arg14" val="0"/>
            <Int sr="arg2" val="0"/>
            <Str sr="arg3" ve="3"/>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Int sr="arg9" val="1"/>
        </Action>
        <Action sr="act1" ve="7">
            <code>547</code>
            <on>false</on>
            <Str sr="arg0" ve="3">%STOPPED</Str>
            <Str sr="arg1" ve="3">%TIMES</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
            <ConditionList sr="if">
                <bool0>And</bool0>
                <Condition sr="c0" ve="3">
                    <lhs>%STOPPED</lhs>
                    <op>13</op>
                    <rhs></rhs>
                </Condition>
                <Condition sr="c1" ve="3">
                    <lhs>%SCREEN</lhs>
                    <op>2</op>
                    <rhs>off</rhs>
                </Condition>
            </ConditionList>
        </Action>
        <Action sr="act2" ve="7">
            <code>547</code>
            <Str sr="arg0" ve="3">%DOWNTIME</Str>
            <Str sr="arg1" ve="3">%TIMES-%STOPPED</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="1"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
        </Action>
        <Action sr="act3" ve="7">
            <code>547</code>
            <Str sr="arg0" ve="3">%DOWNTIME</Str>
            <Str sr="arg1" ve="3">0</Str>
            <Int sr="arg2" val="0"/>
            <Int sr="arg3" val="0"/>
            <Int sr="arg4" val="0"/>
            <Int sr="arg5" val="3"/>
            <Int sr="arg6" val="1"/>
            <ConditionList sr="if">
                <Condition sr="c0" ve="3">
                    <lhs>%STOPPED</lhs>
                    <op>13</op>
                    <rhs></rhs>
                </Condition>
            </ConditionList>
        </Action>
        <Action sr="act4" ve="7">
            <code>548</code>
            <on>false</on>
            <Str sr="arg0" ve="3">Downtime %DOWNTIME</Str>
            <Int sr="arg1" val="0"/>
            <Str sr="arg10" ve="3"/>
            <Int sr="arg11" val="1"/>
            <Int sr="arg12" val="0"/>
            <Str sr="arg13" ve="3"/>
            <Int sr="arg14" val="0"/>
            <Int sr="arg2" val="0"/>
            <Str sr="arg3" ve="3"/>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Int sr="arg9" val="1"/>
        </Action>
        <Action sr="act5" ve="7">
            <code>806</code>
            <on>false</on>
            <Int sr="arg0" val="216"/>
            <ConditionList sr="if">
                <Condition sr="c0" ve="3">
                    <lhs>%DOWNTIME</lhs>
                    <op>6</op>
                    <rhs>2</rhs>
                </Condition>
            </ConditionList>
        </Action>
        <Action sr="act6" ve="7">
            <code>248</code>
            <Int sr="arg0" val="1"/>
            <Int sr="arg1" val="1"/>
            <ConditionList sr="if">
                <Condition sr="c0" ve="3">
                    <lhs>%DOWNTIME</lhs>
                    <op>7</op>
                    <rhs>1</rhs>
                </Condition>
            </ConditionList>
        </Action>
        <Action sr="act7" ve="7">
            <code>548</code>
            <on>false</on>
            <Str sr="arg0" ve="3">%DOWNTIME</Str>
            <Int sr="arg1" val="0"/>
            <Str sr="arg10" ve="3"/>
            <Int sr="arg11" val="1"/>
            <Int sr="arg12" val="0"/>
            <Str sr="arg13" ve="3"/>
            <Int sr="arg14" val="0"/>
            <Int sr="arg2" val="0"/>
            <Str sr="arg3" ve="3"/>
            <Str sr="arg4" ve="3"/>
            <Str sr="arg5" ve="3"/>
            <Str sr="arg6" ve="3"/>
            <Str sr="arg7" ve="3"/>
            <Str sr="arg8" ve="3"/>
            <Int sr="arg9" val="1"/>
        </Action>
    </Task>
</TaskerData>

```

# Answer
> -2 votes
I had a similar issue and fixed it by first turning on "Developer mode" then deselecting "Stay awake" under Settings / Developer Options. Turn on developer mode by going to Settings / About Device, then touch/tap on "Build number" seven (7) times. Once developer mode is on, go to Settings / Developer Options, and deselect "Stay awake".

This resolved the problem for me. Keep in mind that each Android phone is slightly different in where "About Device" is located, but it is in the Settings section. Go there and tap "Build number" seven times to turn on Developer mode.

---
Tags: charging, screen
---


title: Clear Data of Package for Single User

text:
# Question
Title: Clear Data of Package for Single User
I am trying to clear the data for a few apps on a work profile without clearing the data on the main user account for my android phone.

What I'm trying for example is :

```
pm clear com.Microsoft.teams

```

Is there a way to clear just on the work profile and not my main account?

From my research, you can't seems to specify a user for this command unlike a few other commands: pm documentation

# Answer
> 2 votes
Thanks to the commenters, I was able to figure it out.

I used Termux with root privileges, I typed the following:

To be super user

```
su

```

Then list the users

```
pm list users

```

The number in front of UserInfo{ is what you want

ie. in my case is 12

```
UserInfo{0::24} running
UserInfo{12:Work profile:35} running

```

Last enter the clear command

```
pm clear --user 12 <package to clear>

```

---
Tags: adb, shell, command-line, data
---


# Question
Title: How can one play every music in a folder 2 times (or a specific number of times)
I have a lot of music files (such as mp3) in a folder.

I am looking for a way to play every file 2 times (or a specific number of times) then going to the next file and playing it 2 times, and so on.

Motivation: When listening to short length educational musics (for example for language learning), listening to the music two times greatly improve understanding of the topic. The ability to automatically play every files 2 times would be really helpful, especially when playing during driving in a car.

# Answer
> 0 votes
Normally I'd say that's easy, just create a "playlist", but it seems to not be as straight forward as it once was.

Most ways to create a playlist require the installation of an app, but there are other ways to do it too that can make things complicated for a novice user.

One way seems to be to install VLC for Android, browse to the files you want on the playlist, then click on the 3 dots on each file and add to playlist. I would presume that if you add an individual file to the playlist more once it would therefore play as many times as you've added to the playlist.

---
Tags: music-player, media-player
---


# Question
Title: Turn on screen without using any button on the phone
**All buttons on the device are broken, device is on but the screen is off.**

Is there any way to turn on the phone using USB or any other way?

My phone is a moto e20 with no removable battery and no removable case. I need to use my phone once before sending it to repair and since Google's "Find my device" tool lets you play sounds, lock your screen and erase all data, it might be possible to send the power button signal from external sources.

**Edit:** Fingerprint sensor won't work either since the device doesn't have any finger registered.

# Answer
> 0 votes
**Warning:** This solution only works if your phone is already on. Otherwise, your device will get locked and you'll have more difficulties.

After 2 hours of trial and error I discovered that using the Lock With Password" otion on this link will activate your screen once. Don't forget to inmediatly unlock your device or it will get locked since it logs out from your Google Account.

---
Tags: buttons, motorola, remote-access
---


# Question
Title: How to make an invisible (transparent/blank) app icon in Nova Launcher?
In Nova Launcher Prime 6.x, how does one make an app's icon invisible (completely transparent / blank)?

I can try to find (or create) an icon pack that contains a blank icon (preferably on F-Droid), but I'm hoping there is a faster solution.

# Answer
> 2 votes
Took me a bit, but I figured it out:

1. Download and install Pocket Paint from F-Droid: https://f-droid.org/en/packages/org.catrobat.paintroid/
2. Create a completely empty (and transparent) `.png` file, which is currently the default image for Pocket Paint.
3. Save the `.png` file.
4. In Nova Launcher Prime, long press the desired app, click `Edit`, and then click the existing icon.
5. In Nova Launcher Prime, select `Gallery apps`.
6. Select the image saved in step 3.
7. Voilà!

---
Tags: launcher, app-icons, nova-launcher, hidden, icon-packs
---


# Question
Title: Open PDF files directly in Chrome for Android
I am writing from my Android. On my laptop, it's pretty simple to choose to open a PDF file directly in the browser rather than opening it in an external program.

The problem comes when I try to open it on Android. I am usually asked to download it and it will open with PDF Viewer. I would like it to open directly in Chrome because - moreover -- I'd like to get a link to the PDF file.

Usually, on Android, you can link the website and then the receiver will have to download the PDF so that he can view it. I would like to be readable directly in the browser.

# Answer
You can use a Google Docs page to view PDF files in the browser. To do this, visit the page https://docs.google.com/viewerng/viewer?url=http://yourfile.pdf, where `http://yourfile.pdf` is the path to the PDF file you want to view (credits to this answer).

Unfortunately, there is as far as I know no way to do this automatically in Chrome (you can always paste the URL manually every time you want to open a PDF file but that's not very practical). However, if you use a browser that supports extensions, it's possible to use an extension to automatically redirect PDF files to this URL. Unfortunately, you can't do this on any well-known browsers (Chrome and Edge for Android don't support extensions at all, and Firefox for Android only supports a very limited set of extensions), but there are less well-known browsers where you can do this. The one I use is Kiwi (I have no association with its author).

Once you've installed Kiwi (or another browser that supports Chrome extensions), install the Redirector extension (I have no association with its author). Next, click on the three dots on the top right, scroll down, click "Redirector", then click on the "Edit Redirects" button, and then click on "Create new redirect":

That will open a popup with five text boxes and two checkboxes. Enter the following information:

1. The first box is just a description, you can enter whatever you want, for example `Open PDF in browser`.
2. The second box is an example URL to a PDF file, you can enter the URL to whatever PDF file you want.
3. In the third box, enter `(^https?://[^?]+\.pdf($|\?).*$)`. This is a regular expression that matches URLs of PDF files. If you know regular expressions, you may want to note that the parentheses that enclose the whole regular expression are necessary to capture the whole URL so that the `$1` in the next box works as expected.
4. In the fourth box, enter `https://docs.google.com/viewerng/viewer?url=$1`. This is the URL that PDF files will be redirected to, `$1` represents the URL of the original PDF file.
5. Check the box labelled "Regular Expression".
6. The last box is just another description Again, enter whatever you want, for example, `Redirects PDF files to a Google docs page that shows the PDF in the browser`.

When you're done entering all that, it should look like this:

Now click Save and you're done. Now all PDF files will be opened in the browser like this:

To get a link to the original PDF file, copy the URL from the title bar and remove the `https://docs.google.com/viewerng/viewer?url=` part from the beginning.
> 5 votes

# Answer
Another implementation of this idea is to use a Tasker profile I created. Instructions and profile import are available here. The instructions are also copied below.

Google Drive Viewer allows files to be viewed (without downloading) in Google Chrome for Android.

Setup

* The following apps are required: Tasker, AutoShare, and AutoTools
* Set up the AutoShare command
+ Open AutoShare
+ Main Menu - Manage Commands - plus sign
- New Command = View File
- Browsing for files = Direct URL
- URL = https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Google\_Drive\_icon\_%282020%29.svg/1280px-Google\_Drive\_icon\_%282020%29.svg.png
- Priority = 1

+ Main Menu - Share Targets - ensure “AutoShare Command” is checked

* Import the project into Tasker using the button below (this page must be viewed on your Android device for the button to appear)

Usage

* Long-tap a file link in Chrome
* Tap “Share link” - “AutoShare Command” - “View File”
* If a file can’t be natively previewed in Google Drive, you may be able to connect an app that can preview the file

Settings

* By default, the file will open in a new tab. To adjust this setting, open the “Google Drive Viewer” task in Tasker and set %newtab (line 1) as follows:
+ true: file will open in a new tab
+ false: file will open in the same tab currently being used
> 3 votes

# Answer
I just installed opera on the phone, make it the default browsing app, now whenever i have a link with pdf it asks me gently whether to open it from within or download it.
> 0 votes

---
Tags: chrome-for-android, pdf
---


title: Editing TiddlyWiki files on Android

text:
# Question
Title: Editing TiddlyWiki files on Android
I just started using TiddlyWiki, I appreciate very much its technology agnostic paradigm and am convinced it is the right tool to manage my notes. I need to access my notes from both my computer (Linux) and my phone (Android).

I have successfully created Wiki files with Firefox and TiddlyDesktop on my computer, that are being automatically synchronised to a ownCloud server. On my phone the ownCloud client synchronises these files correctly and I am able to open them with the browser. However, I am unable to edit the TiddlyWiki files with either Firefox or Chrome on the phone (none of the buttons functions).

How can I edit on Android these TiddlyWiki files synchronised from ownCloud?

# Answer
> 0 votes
You can use Tiddloid, an app to work with locally stored TiddlyWikis, both local file and webdav are supported.

Or use Termux and start a Node.js server on it, but I personally recommend using Tiddloid, it works well.

---
Tags: owncloud
---


# Question
Title: Is there a way to disable notification for WhatsApp except from specific people?
Someone told me there's a way to disable all notifications from WhatsApp except for messages from specific people.

How can I do this? (I own a Pixel 3)

# Answer
> 3 votes
The only way to achieve it is the following:

1. Open WhatsApp
2. On the main screen, long-press to select a contact
3. After the first contact is selected, tap on all the contacts you don't want to receive notifications from. You will have to select the contacts one by one because there is no "Select all contacts" button (if there are hundreds or thousands, then good luck selecting them)
4. Press the muted speaker icon. A pop-up will appear asking for how long the contacts should be muted. Select the time (don't enable "Show notifications" just in case).

The selected contacts will be muted, their notifications won't be shown except only those that were not selected. Note that if a muted contact calls, you will still receive the notification.

# Answer
> 4 votes
One workaround only to not hear sounds from all contacts except from a specific contact is to set the notification tone as "None" in whatsapp notification settings. Now go to the specific contact on whatsapp and change their notification sound from default (none) to a required sound. This will not stop showing notifications on your display though.

# Answer
> 1 votes
If you want to disable notifications for specific group except from specific people:

1. Navigate to a group or person.
2. Select group/person by long-press.
3. Press three dots menu.
4. Press *Group info* (if you have selected group) or *View contact* (if you have selected person).
5. Press *Custom notifications*.
6. Tick the *Use custom notifications* checkbox and start customising the notifications for this specific group/person.

You should set *None* sound for *Notification tone* for the group to effectively disable notifications for the group and then you should set custom sound for all persons in the group whom you want to receive notifications for.

# Answer
> -1 votes
Unfortunately, this is not possible.

The basic M.O. of any "social media" including WhatsApp is that you are not supposed to be free to choose when and with whom you want to communicate even if you get the illusion of that.

---
Tags: notifications, whatsapp-messenger
---


# Question
Title: Nokia C01 Plus - only 3 icons allowed in Quick Settings/Swipe Down Icons
This is Nokia C01 Plus running Android version 11 (as per what's shown in About Phone).

Quick Settings (swipe down icons) - when you swipe down from the top of the screen, you get these icons which allow you to toggle several settings (WiFi, Airplane Mode, Mobile Data, Flashlight, Bluetooth, Hotspot, Data Saver, Battery Saver, etc).

On all Android phones I have used, there are multiple rows of these icons visible when you swipe down. But on this phone, I can just have 1 row with 3 icons - most icons are available when I try to edit the swipe-down icons list, but I can only have 3 in total available at all times.

Image courtesy of 91Mobiles

Is there a way to have more?

# Answer
> 1 votes
This may or may not work without root dependant upon multiple factors. Download a settings .db editor such as SetEdit, then follow the instructions provided in the app's description in it's Play market description to grant it additional permissions through ADB. Open the app and search for any keys that begin with or contain "sysui\_qs..."; these pertain to the QuickSetting tiles. If you find a key for "sysui\_qqs\_count", try modifying the value to, e.g., "5" and see if that works. Otherwise, you can try straight ADB modifications (e.g., here's an XDA thread on the topic). If it doesn't work, you might require root access.

EDIT: Instructions for ADB permissions:

---
Tags: android-11, quick-settings, android-go, nokia
---


# Question
Title: How do you show a phrase or sentence in full screen?
Previously there was a menu option in Google Translate to show the translated text in full screen so it's easy to read from a distance. You could also use english as the visibility was the main feature useful in like a noisy nightclub or if one was temporarily or permanently mute.

However that feature in the latest update has disappeared.

I tried internet searching for "full screen" google translate for tens of minutes but couldn't find any answers.

What's the easiest way now to show large text, preferably though not necessarily using pre installed apps (such as Google translate) for availability?

See screen cast recording for further details.

# Answer
> 1 votes
If I'm understanding your question correctly, you're likely looking for a signboard app. Just be warned, I haven't vetted any of these myself, so if you're wary of malicious apps (becoming more prevalent these days despite Google's mitigation efforts) you'll want to take your own precautions and research before settling on one. For additional features such as preventing touch, etc., you may want to search for "kiosk" apps instead.

---
Tags: accessibility, google-translate
---


title: scrcpy access problem with Linux

text:
# Question
Title: scrcpy access problem with Linux
I have 2 Android devices: a tablet from Denver and a cell phone from Xiaomi (Redmi 9C), I installed scrcpy on my MX Linux pc, I have no problem to access tablet through `scrcpy`, but when I tried with Redmi 9C, I can only see it, the mouse does not work, did I miss some settings? The developer option is enabled (is there any other options inside developer options that I need to change/enable? I only enabled developer options). note:

1. I've tried enable file transfer when plugin the USB cable, seems to make no difference and `adb device` command can see this device.
2. adb version 1.0.41

# Answer
This is the solution given by alecxs.

Add Mi account and enable USB debugging (Security settings) option under Developer options.
> 1 votes

---
Tags: linux, usb-debugging, developer-options, scrcpy
---


# Question
Title: Different vibration sounds for different contacts
I would like to have different notification "vibrations" based on who messages me. Ideally, this would be done on any of the main messaging apps (Facebook Messenger, WhatsApp, Snapchat, Signal, etc.)

Currently, Facebook Messenger does have a different vibration sound than WhatsApp (it has a lighter vibration), so I know that I am getting a notification from Facebook Messenger rather than WhatsApp. That being said, I don't know who is messaging me.

The Nothing Phone (1) aims to solve this problem by having a different array of light based on the notification, but can the same be implemented on any Android phone via vibrations (which has more functionality too since you can use it while in your pocket).

I am using a Samsung Galaxy S20 5g unlocked without root.

# Answer
> 1 votes
The BuzzKill app will give custom vibrations for specific notifications or contacts.

It also has other powerful features such as

* Cooldown - Only get buzzed once even if there are multiple notifications in a short space of time
* Batch - Save notifications until a certain time.

Is there any free alternative Of buzzkill ? : androidapps

>

---
Tags: notifications, vibration
---


title: My Samsung phone just keeps restarting

text:
# Question
Title: My Samsung phone just keeps restarting
I have never been in a situation like this. I was developing some widget app on my Samsung A12 with Android 12 and all of a sudden, while building and running the app, the system just shut off. It restarted, then after I typed the PIN code, while trying to load the home screen, it does it again. Then it loads again, this time it shuts off just in the lock screen. And it keeps doing this forever. I cannot even shut it down, I tried hard booting it with volume down and power button but it only goes as far as to the home screen (after PIN). It restarts again

This phone has a few months, it is not rooted, battery is at 70%, never did this to me before. I was setting an attribute for a widget `android:maxResizeWidth="@dimen/widget_min_width"`, then when testing it this started happening.

I am watching the wretched thing doing restart after restart. Is there anything I can do before trying to remove the (unremovable) battery?

*New info*: I managed to get in Safe Mode and it looks like it works, so it's some app, I guess

# Answer
> 0 votes
Looks like I figured it out. First, that Samsung is the worst at developing software.

Secondly, yes, indeed, using `android:maxResizeWidth="@dimen/widget_min_width"` sent One UI into a crazy coma. I had to remove the app and rebuild it without that line

---
Tags: samsung, reboot
---


# Question
Title: Rescind 'find my device' location permission in Google account
I had lost my phone somewhere in the same room I was in. To make it ring in Google's find my phone feature, I had to give it full permission to process it's location data. How do I rescind these permissions?

# Answer
> 0 votes
On your device, go to your Google services and preferences found in your device settings, and under Find My Device toggle the option off. For the device-level, you will want to go to App Permissions and toggle off location permissions for the Find My Device application, then also disable it as a Device Administrator app from your Security settings. This should disable both app-based and browser-based permissions for the device to be pinged.

---
Tags: privacy, location-services
---


# Question
Title: Error while unlocking bootloader | FAILED (remote: 'Unlock failed - Err:0xffffffff')
I was trying to unlock the bootloader of an old Redmi Note 4x, Downloaded fastboot and adb. I first enabled developer option and turned on USB debugging. I tried finding OEM unlock option which was not present on the phone. After few hours of searching about it online, I finally concluded it is not available for the phone. So I went on and fired up my terminal \[in administrator mode\];

```
$ adb devices
> List of devices attached
> 8H4DZP69S44DQOEM        device

```

then I rebooted my device in bootloader (fastboot)

```
$ adb reboot bootloader

```

My Phone restarted in bootloader, then I went back to my terminal and checked if the fastboot was working or not;

```
$ fastboot devices
> 8H4DZP69S44DQOEM        fastboot

```

After confirming that the fastboot is running, I tried unlocking OEM;

```
$ fastboot oem unlock
> (bootloader) Start unlock flow

> FAILED (remote: '
> Unlock failed - Err:0xffffffff
> ')
> fastboot: error: Command failed

```

which.. well... failed and I don't know why. I tried searching this very error code online but failed to find anything close to it.

My other attempts like unlocking flashing failed in similar fashion;

```
$ fastboot flashing unlock
> (bootloader) Start unlock flow

> FAILED (remote: '
> Unlock failed - Err:0xffffffff
> ')
> fastboot: error: Command failed

```

```
$ fastboot flashing unlock_critical
> (bootloader) Start unlock flow

> FAILED (remote: '
> Unlock failed - Err:0xffffffff
> ')
> fastboot: error: Command failed

```

Nothing seems to be working, Please help!

# Answer
I solved mine when I enter in MI website and put my phone number and verified it on the website. After this, I tried again, and then something happens differently.

However, in the next step, you are going to have to unlock something in developer options. It required internet from a SIM card, not WiFi. After this, enable OEM unlock in the developer options to run the program, and then you have to wait for 200 hours.
> 0 votes

---
Tags: adb, bootloader, fastboot, custom-roms
---


title: How to open Microsoft Excel files?

text:
# Question
Title: How to open Microsoft Excel files?
I would like to read my Microsoft Excel files on my Android device. Is there anything built-in natively? Is there an application for viewing and editing Excel files on Android?

# Answer
You can try Documents To Go. You can create, edit, and view MS Word, Excel, PowerPoint, and even PDF docs.

As a free alternative, you can upload your Excel docs to Google Docs and use the free GDocs app.
> 6 votes

# Answer
Here are two ideas:
> 3 votes

# Answer
My favorite app for this is OfficeSuite Pro but I got it when it was the free app of the day, so I can understand not wanting to pay $14.99... it is a great program though!
> 0 votes

# Answer
OfficeSuite is a great app for viewing and editing documents. There are two versions one as a Viewer (free), the other as a Pro (payable) version. There is also a trial version of the Pro version, so you could try it out if you decide to buy it.

What you get:

* File browser
* Text document module
* Spreadsheet module
* Presentation module
* PDF Reader
* Email reader

Supported formats:

* Text format - DOC and DOCX, DOCM, RTF, TXT, LOG
* Spreadsheet - XLS, XLSX, XLSM and CSV
* Presentation - PPT, PPTX, PPS, PPSX, PPTM and PPSM
* Other formats - PDF, EML, ZIP

Bonus:

* OfficeSuite Pro is the only Android mobile office application that allows opening of password protected documents (*taken from the Google Play site*)
> 0 votes

# Answer
You could try WPS Office. It's free and I find it very useful.

Here is a list of features highlighted on official page:

**Spreadsheets**:

* Fully compatible with Microsoft Excel
* Includes dozens of formula and function shortcuts
* Supports pivot tables, freeze frames, sorting, table styles and more
* Insert charts, including bar, pie, line and column
* Edit cell categories (number, text, percentage, etc.)
> 0 votes

# Answer
Is AndrOpen Office any good?

Supposedly its OpenOffice made for Android.
> 0 votes

# Answer
If merely viewing is your requirement, something like XODO Docs would do the best for you

For both editing and reading, the official Microsoft Excel for Android would be the best choice
> 0 votes

---
Tags: microsoft-excel
---


title: How to use a firewall AND a VPN?

text:
# Question
Title: How to use a firewall AND a VPN?
I'm using the only open source firewall for Android: NetGuard and would like to use a VPN in addition. Is this possible? If so: *how*?

Both types of apps typically use virtual VPN tunnels. NetGuard has network settings too. Many adblockers use such as well which is why I'm only using a Firefox AddOn.

# Answer
There's many ways to go about this (sorted from easiest to most complicated):

* Use Adhell 3, the Samsung KNOX based content-blocker that doesn't require root and also allows you to use a VPN app at the same time.
* Use AFWall+ (root required) instead of NetGuard. That way you can use a VPN app "normally".
* **Install a VPN app and a SOCKS5 proxy server in the Android work profile, and then connect to this SOCKS5 proxy from the main profile using NetGuard.**
* Use a VPN provider that already offers a SOCKS5 proxy (like Mullvad), and then connect to this SOCKS5 proxy from NetGuard (Not recommended due to Netguard leaking UDP by not routing it through the SOCKS5 proxy. Also SOCKS5 is not encrypted)
* Self-host a VPN-to-SOCKS5 server (Not recommended due to Netguard leaking UDP by not routing it through the SOCKS5 proxy. Also SOCKS5 is not encrypted)

I've only ever used the highlighted option, so that's what I'll describe here.

**Pros**:

* It doesn't require root
* You don't have to pay for a specific VPN (you can use Proton VPN)
* You don't have to run/pay for any servers

**Cons**:

* NetGuard leaks the UDP packets to the clearnet. An alternative solution is to use RethinkDNS instead of Netguard, or use **only** a browser that has HTTP/2 & HTTP/3 disabled through about:config, or use **only** the Tor Browser (because Tor doesn't use nor support UDP). Any other traffic **will** be leaked.
* The work profile has to be enabled constantly for the VPN to stay running, and that uses considerable battery
* A work profile uses a about 398.53MB of storage
* The VPN service doesn't fully work on *some* Android devices: It's known not to work in some LG devices running Android 9, but it does work in a *Moto e6 Plus* running Android 9

Steps:

1. Install personalDNSfilter
2. Install Island or Shelter (Preferibly Shelter, because it's FOSS and has no trackers)
3. Setup Island/Shelter
4. Setup personalDNSfilter to your liking
5. Install "Every Proxy" in the work profile
6. Install a VPN app (such as Proton VPN) in the work profile
7. Disable battery optimizations for all of the apps you just installed (personalDNSfilter, Every Proxy, Proton VPN, and Island/Shelter)
8. Configure "Every Proxy" to run a SOCKS5 proxy on the 10.1.10.1 interface, and set a username and password (Warning: do not make the password 126 characters long, that causes a crash. I recommend making the password 40 characters long.)
9. Make sure NetGuard is running
10. Start the SOCKS5 proxy in "Every Proxy"
11. Set personalDNSfilter in Netguard as "unmanaged" (untick the "apply rules and conditions" box)
12. In Netguard set the DNS servers to any WAN servers (for example: 94.140.14.14, and 94.149.14.15) (nothing will be sent to these servers)
13. Create TCP and UDP forwarding rules for 127.0.0.1:53 -\> 127.0.0.1:5300 to personalDNSfilter in NetGuard. *Note that this isn't possible if you downloaded NetGuard from the google playstore. You must download netguard from either Github or from F-Droid*
14. Configure Netguard to use a SOCKS5 proxy server (10.1.10.1:1088, and input the same username and password as you did in "Every Proxy")

Done!

Here's a flow chart of how/why this works:

I made a **much** more detailed guide on my blog. It's linked below:

> How to use NetGuard + personalDNSFilter+ Any VPN, without root, without external self-hosted servers.

https://itsignacioportal.github.io/netguard-pdnsf-any-vpn-combo/
> 4 votes

# Answer
Quoting the NetGuard FAQ on that topic (emphasis added):

> **(2) Can I use another VPN application while using NetGuard?**
>
> If the VPN application is using the VPN service, then no, because NetGuard needs to use this service. Android allows only one application at a time to use this service.
>
> NetGuard is a firewall application, so there is no intention to add VPN support. However, NetGuard supports a SOCKS5 proxy to chain VPN applications. **You can find one possible community contributed solution here.**

So the answer is: Yes you can!
> 3 votes

# Answer
If you have no-root like me, the only way to tunnel traffic with NetGuard for me was using it with Orbot. You can also route your DNS traffic through the Tor network. I also would be interested to know other ways to get NetGuard to work with VPN-alike applications.
> 0 votes

# Answer
One way might be to use two devices, your main device running the firewall (eg.NetGuard) & tethered to another Android device acting as a router which is running the VPN.

One downside is many Android devices won't let another device tether to use their WiFi Internet connection, but only allow tethering to access a Mobile Data connection.

I don't know if the tethered traffic would get routed via the VPN running on the routing device ? Will need to try it.
> 0 votes

---
Tags: privacy, vpn, firewall
---


# Question
Title: How to connect 2 Bluetooth audio headsets to an Android phone?
How can two people listen to audio on an Android phone over Bluetooth? I.e. they have two Bluetooth headsets and want to pair both at the same time?

# Answer
> 3 votes
As in most things, it depends. In this case, since you do not state your device, I will demonstrate from mine, a Samsung 8, running Android 9 (One UI). It explicitly allows dual Bluetooth through settings. If this is your device, click through to it at

`Settings > Connections > Bluetooth > Advanced > Dual Audio > ON`

The setting allows sound to two different Bluetooth devices.

If your device is different, look for the capability along a similar setting path.

# Answer
> 1 votes
Most Android phones do not have the feature that allows more than one device to connect concurrently, but it's probably possible to send audio to two Bluetooth devices with extra hardware.

If your phone has an audio jack, that signal can be split into two using an adapter. That would then have two wired headphones working. You could probably buy the wired splitter for $10 or so.

If your phone has an audio jack and would like to connect two Bluetooth devices, you can buy a *multi-point Bluetooth Transmitter*, also called *Bluetooth transmitter splitter sender*, which allows two devices to pair with it, and you connect the transmitter to the audio out jack of the phone. eBay has them for under $20.

If your phone doesn't have an audio jack, There are many small, rechargeable Bluetooth receivers that can receive audio from your phone. They output on an audio jack, and you could proceed as above. If you need just audio, it would probably be fine, but if you want audio synced with a video you're watching, there would probably be a latency issue with receiving and retransmitting the signal.

It's possible that some company has produced or will produce a single device that offers two Bluetooth connection points for a reasonable price, and that might even address the latency problem.

# Answer
> 0 votes
Apart from soldering 1 Bluetooth receiver output to two Bluetooth transmitter inputs, I cannot see a way to do it with the current Android Bluetooth setup. It only allows one device paired at a time. Could be an interesting hardware project if you are into that kind of thing. Your phone connects to the Bluetooth receiver, while your two Bluetooth headsets each connects to one of the transmitters.

# Answer
> 0 votes
If budget is not a constraint, and you just want to connect multiple headsets in a fixed location, check out the Plantronics Savi 7xx or 8xxx line of headsets. They are intended to allow monitoring of telemarketing calls, but we use it when my wife and I want to talk on the same mobile phone call.

---
Tags: bluetooth-audio, bluetooth-pairing
---


# Question
Title: Pixel 6a does not show available Android security updates
On a Pixel 6a device, Android seems to have trouble finding the latest security updates.

On the one hand, it warns me under Settings-\>Security like this:

> (!) Update this device
> This device hasn't had a security update in 90 days
> (Check for updates)

Fair enough, but when I do check for updates Android tells me:

> Your system is up to date
> Android version: 12
> Android security update: 5 April 2022
> Last successful check for update 13:55

(which matches the device's current time)

The expectation is that there is at least one more recent security system update available.

Especially, since a Pixel 3a device I have access to update to the 5th of May 2022 system security update, a few weeks ago.

What gives?

Is there some trick to persuade Android to check - let's say - more thoroughly for system updates?

# Answer
Statements from Google regarding their update procedures such as

> These bulletins supplement the Android Security Bulletins with additional security patches and functional improvements on supported Google Pixel and Nexus devices (Google devices). \[..\] Google devices start receiving OTA updates on the same day the monthly bulletin is released.

(source)

should be taken with a grain of salt.

Clearly, the Pixel 6a is a supported Google Pixel device but didn't receive any OTA updates for May and June updates, even in late July, as reported by tech sites:

According to these reports, such a delay of security updates is common with newly released Google devices, and happened with past models, as well, in a similar fashion.

---

FWIW, my Pixel 6a device (bought directly from Google, from Germany) received its first monthly security OTA update on 2022-08-05 - and that's the June 1st update.
> 1 votes

---
Tags: updates, security, android-12
---


# Question
Title: How can I list which TCP Congestion Control Algorighm my Android device is using?
How can I enumerate the complete list of TCP Congestion Control Algorithms that my Android device supports? And how can I see which apps are using which algorithm?

I'm trying to figure out why some open-source apps suck so bad at uploading and downloading on networks with bad Goodput (eg high packet loss, jitter, and latency).

One thing that can be done to drastically improve Goodput on poor networks is to modify the TCP Congestion Control Algorithm. Doing so requires both the server and the client to support a given algorithm. So the first step is to determine which algorithms are available, which are provided by the OS (Android).

How can I get a list of all the TCP Congestion Control Algorithms that my Android device supports?

# Answer
> 2 votes
To list available TCP Congestion Control Algorithm (CCA):

```
adb shell sysctl net.ipv4.tcp_available_congestion_control

```

To list allowed TCP CCA:

```
adb shell sysctl net.ipv4.tcp_allowed_congestion_control

```

To display which TCP CCA is currently used:

```
adb shell sysctl net.ipv4.tcp_congestion_control

```

Example on a stock Pixel 3a:

```
sargo:/ $ sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = cubic reno

sargo:/ $ sysctl net.ipv4.tcp_allowed_congestion_control
net.ipv4.tcp_allowed_congestion_control = cubic reno

sargo:/ $ sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = cubic

```

---

References:

---
Tags: applications, networking, downloading, uploads
---


# Question
Title: Route some traffic via VPN while the rest routed as usual (non-VPN)
I manage some servers where VPN is the only access for maintenance. On Linux, we use xl2tpd, strongswan-starter, and ip-route. I want to gain access to my phone (Pixel 3, Android 12) such that traffic for the servers routes via the VPN, and all else remains routed as usual, not via the VPN.

How may this be done on Android 12?

# Answer
> 0 votes
You don't give a lot of detail for understanding your situation thoroughly, but perhaps take a look at split tunneling. I use ProtonVPN's Split Tunneling function for this purpose. Excluding IP-addresses thus does NOT require root, except when having to use ip-tables. https://docs.strongswan.org/docs/5.9/howtos/forwarding.html

---
Tags: networking, vpn, android-12, google-pixel-3-xl
---


# Question
Title: How can I enable VPN only for a specific app?
I want a spesific app to be only connected through a VPN all the time, while everything else remains normal and not connected through VPN. How can I achieve this?

Moto C Plus | Android 7 | Rooted.

# Answer
ProtonVPN has a split tunneling function and destination access/non-access.
> 0 votes

---
Tags: root-access, security, vpn
---


# Question
Title: Why did Chromecast stop working on my Android?
I have a Samsung Galaxy Note 10 Plus smartphone and recently I stopped being able to cast anything to my TV nor my speakers, whether YouTube or Hulu or even just sound/music apps like Spotify. It seems I can't connect to either Chromecast video nor audio devices. The devices I can cast to at home do appear on my list of possible casting destinations, but then the content won't display. The attempt to connect from my phone seems to fail every time! Other people at home are able to cast fine. I have already also tried wiping the cache and data storage on the Google Home, Android System Webview, Chrome, and YouTube apps. No improvement!

# Answer
> 0 votes
Somehow I remembered that I had recently turned on my Avast VPN. It never turned itself back off! The VPN connection seems to prevent my phone from casting audio and video to my home devices. Turning my VPN off manually on the phone corrected the problem!

# Answer
> 0 votes
Checking for VPNs or other networking issues could help, it's usually something silly that gets in the way but occasionally they are unrecoverable but it's rare.

Try using it on a direct connection if possible.

Good luck!

---
Tags: chromecast
---


# Question
Title: Can a hacker unlock the bootloader of an android device remotely?
Is it true that you can not unlock the bootloader of an android device remotely and the only way you can infect the firmware or bootloader is to have physical access to the device.

What about rooting? Can a hacker root your device remotely?

So if it is true does that mean that no matter what kind of malware your device is infected with you can remove it by simply performing a factory reset?

# Answer
If you can dream it up, it can be accomplished ;) I do not know of any PUBLIC methods to do this at the moment, but I assure you it's possible.

For example, there is a malware called "xHelper" and also matryoshka. You'll see that in this particular example, the kit abuses root privilege to silently install xHelper by directly copying malicious package files to the system partition (/system/bin folder) after re-mounting it in the write-mode.

It also has a sister-kit called Triada. These kits take the extra steps of making their core files immutable, and overwrites to system library `/system/lib/libc.so`.

This means that you would need to enter into Recovery mode, `chattr` the `libc.so` to mutable, delete and replace it with a good version, then re-image. Did I mention this malware family removes your root access? ;) You can get very evil with Android or any OS if you want to.

As far as your second question, factory resets are usually enough to shake malware infections, but if you have an advanced adversary, it can enter parts of the boot process that would be extremely difficult to detect and remove. That said, we're talking government-level attackers.

Most phone malware can be shaken by uninstalling the offending app and/or even rebooting. If you look at 'Exploit Brokers' that buy malware professionally, one of the biggest and most expensive things they pay for is PERSISTENCE. That's because maintaining the malware on the device is increasingly difficult these days.
> 2 votes

---
Tags: rooting, factory-reset, bootloader, malware, device-firmware
---


# Question
Title: How to block the installation of a particular app from Google Play?
I wish to block and disable the installation of a couple of applications such as social media applications of Instagram, Reddit and Discord.

Is there a particular way that the user is unable to install the application even after going to Google Play?

Is there a thing like add to Block-List? If there is a parental control feature to do this, how do you select particular applications only?

# Answer
> 0 votes
Unfortunately, there is no such thing in Google Play Store (aka `com.android.vending`).

---
Tags: applications, google-play-store, installation, instagram
---


title: Which soc is redmi note 3 snapdragon?

text:
# Question
Title: Which soc is redmi note 3 snapdragon?
I have a redmi note 3 snapdragon 650(which is supposed to be msm8956) variant.CPU-Z is showing my soc as msm8952 which is name for snapdragon 617.

# Answer
> 2 votes
I have faced something similar with my MTK G85 and this happens when your vendor (in your case xiaomi) does things in a hurry and uses some generic code/config files with SoCs similar to your one. For instance, my MTK G85 was detected as some MTK P series chip.

If you're already on the latest software version, try raising an issue in Xioami/redmi forums

Also, make sure you're not having Redmi Note 3 Pro which actually runs on an msm8952.

---
Tags: hardware, arm-processors
---


# Question
Title: Avoid re-downloading files with Termux in its own downloads folder
I have some files for which I don't have any app to open them with, but whenever I try to open them, instead of the "try looking in the Play Store for an app to open your file" dialog, I get this from Termux:

And I don't want to copy the file into a second "downloads" folder, because I already have it in `~/storage/shared/Download`

# Answer
> 1 votes
Solution that doesn't work:

1. Go to your homescreen
2. Press and hold the termux icon
3. There would be an icon which looks like an 'i'. Tap on it
4. Scroll down and clear defaults

But you'll mostly end up seeing no such options and even if there exists one, it wont be helpful in this case.

I can confirm since I reproduced your issue on my device using the stock Android file manager.

The only possible fix is installing an application that can open such extensions, in your case for xlsx files, the official Microsoft Excel android app or Xodo docs would do the trick.

---
Tags: internal-storage, file-system, file-management, terminal, termux
---


title: Dark Mode glitch on Vivo v23 Pro

text:
# Question
Title: Dark Mode glitch on Vivo v23 Pro
Why is the Dark mode in my Vivo v23 pro like this? It's bit transparent in darker areas, I'm able to see my phone's background and icons. Its very weird. Any solutions?

# Answer
> 0 votes
It looks like a burnt-in screen to me.

# Answer
> 0 votes
That's a display defect. This forum is mostly intended for software support.

---
Tags: android-12, vivo, dark-mode
---


# Question
Title: Google Sign-in not working in new Huawei devices: "There was a problem communicating with google servers"
Between the 11th and the 13th of September 2020 something has changed around the method used to log into Google accounts from new Huawei devices after installing Google Mobile Services (GMS).

Before, the method involved installing GMS-related apps and signing into the relevant Google accounts using browser sign-in (a legacy sign-in method kept for old android versions). However, it seems like just after Huawei announced Harmony OS, that backdoor was closed.

**Is there any way to sign into Google accounts for GMS from a new Huawei device (such as a P40 pro)?**

> **Disclaimer 1:** I hope no one gets offended by this question being asked... I think that from a consumer perspective it is legit to try to find solutions to the side effects of what effectively seems to be a trade war.
>
> At the end of the day, there are hundreds of thousands of users affected by this situation and they are not the ones to blame for any conflict between governments and/or companies.

> **Disclaimer 2:** The consequences of the ban get to an absurd level, is not just not having Google Play Store, but for example not being able to log into your Google account from your browser to sync passwords, history and bookmarks... Hope this helps people not experiencing the ban understanding the extent of it.

# Answer
> 1 votes
You should change your phone identification to any other smartphone brand and to change IMEI codes as well but let me tell you that it's against the law and I do not encourage it.

But in your place, I will simply sell it on any online platform and buy another smartphone with not a banned brand such as Samsung or Nokia.

# Answer
> 0 votes
It's not just that. Google will eventually close every door you open. It's not some startup company you dealing with. If you manage to find a way, small group of people will make use of this opportunity. After that, many users will not be able to install GMS. And you are back to square one.

# Answer
> 0 votes
With root, you can fake your device as something else using MagiskHide Props Config and bypass this.

---
Tags: google-account, google, huawei
---


# Question
Title: Stop GMS Firebase Indexing from collecting all of the personal data
When I was playing with settings on my Nokia 6.1 Plus running a stock ROM Android 10 with bootloader unlocked and rooted with Magisk v21+, I noticed that **Firebase App Indexing** that comes under **Google Account Preferences** was collecting all of my *personal* data. Of course, **GMS** was the culprit.

Here's the proof: This was the message that I received from the bank for the transaction that I made yesterday.

Every message that I sent and received had been collected in this given format. Also, many apps that use Firebase API sent these kinds of information.

I'm a guy who thinks about user privacy all-day, so I've used:

* Nuked\_Script Magisk script that is used to disable trackers and ad services.
* AFWall+ for Firewall (root).
* Bouncer - Temporary App Permissions.
* AdAway for nullifying ads (root) - ads on Gmail, Twitter, Instagram still exist though
* Bromite webview and browser (Webview Switcher module).

When I turned the developer options off, Firebase App Indexing options also turned off (*I mean **hidden***). So, does it mean that it stopped collecting my data? I still doubt that.

How can I stop this from happening?

P.S: I'm used to using Google Apps. But I don't want to give them such personal data.

# Answer
> 1 votes
You can add stronger measures , since your device is rooted

By turning developer options off, you are only *hiding* what's happening w.r.t Firebase.

In addition, see answer here How can I make an Android app "forget" that it installed on my phone before?

# Answer
> 1 votes
as you are rooted why not to try old brute way: block all Firebase through /etc/hosts? I think that Firebase now is one of the hotest hole in mobile security.. this channel actively used not only for leaking personal data but also for C2 connections. yes, you should clearly understand that by this way you are blocking although debug and performance monitoring streams from your device..

---
Tags: google, privacy, google-play-services, google-apps, data-monitoring
---


# Question
Title: How can I disable the warning "Using high brightness for long periods increases battery consumption." so that I don't see it ever again?
I use Android 10 with Samsung Galaxy S9. Whenever I set the brightness to be high, I get the warning:

> Using high brightness for long periods increases battery consumption.

How can I disable this warning so that I don't see it ever again?

# Answer
> 0 votes
The page https://forum.xda-developers.com/t/mods-samsung-not-android-mods-collection-exynos.3772017/page-81 (mirror) seems to discuss how one can disable the warning "Using high brightness for long periods increases battery consumption.".

Here's below a mod from wlryss:

> Hi.. Compared to Android 10 with warning about turning on high brightness and harm to the eyes in Android 11 there is a warning about the dangers of high brightness for charging the battery. `SystemUI/smali/com/android/settings/ToggleSliderView.smali`
> method `.method private showUsingHighBrightnessDialog()` has a string

Code:

```
.method private showUsingHighBrightnessDialog()V
    .locals 3

    iget-object v0, p0, Lcom/android/systemui/settings/ToggleSliderView;->mUsingHighBrightnessDialog:Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    if-nez v0, :cond_0

    new-instance v0, Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    iget-object v1, p0, Lcom/android/systemui/settings/ToggleSliderView;->mContext:Landroid/content/Context;

    invoke-direct {v0, v1}, Lcom/android/systemui/statusbar/phone/SystemUIDialog;-><init>(Landroid/content/Context;)V

    iput-object v0, p0, Lcom/android/systemui/settings/ToggleSliderView;->mUsingHighBrightnessDialog:Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    iget-object v0, p0, Lcom/android/systemui/settings/ToggleSliderView;->mContext:Landroid/content/Context;

    invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

    move-result-object v0

!!!    sget v1, Lcom/android/systemui/R$string;->sec_brightness_using_high_brightness_dialog_message:I  !!!

    invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

    move-result-object v0

    iget-object v1, p0, Lcom/android/systemui/settings/ToggleSliderView;->mUsingHighBrightnessDialog:Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    invoke-virtual {v1, v0}, Landroid/app/AlertDialog;->setMessage(Ljava/lang/CharSequence;)V

    iget-object v0, p0, Lcom/android/systemui/settings/ToggleSliderView;->mUsingHighBrightnessDialog:Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    sget v1, Lcom/android/systemui/R$string;->sec_brightness_using_high_brightness_dialog_button:I

    const/4 v2, 0x0

    invoke-virtual {v0, v1, v2}, Lcom/android/systemui/statusbar/phone/SystemUIDialog;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)V

    iget-object v0, p0, Lcom/android/systemui/settings/ToggleSliderView;->mUsingHighBrightnessDialog:Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    new-instance v1, Lcom/android/systemui/settings/ToggleSliderView$4;

    invoke-direct {v1, p0}, Lcom/android/systemui/settings/ToggleSliderView$4;-><init>(Lcom/android/systemui/settings/ToggleSliderView;)V

    invoke-virtual {v0, v1}, Landroid/app/AlertDialog;->setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)V

    iget-object p0, p0, Lcom/android/systemui/settings/ToggleSliderView;->mUsingHighBrightnessDialog:Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    invoke-virtual {p0}, Landroid/app/AlertDialog;->show()V

    :cond_0
    return-void
.end method

```

SystemUI/res/values/strings.xml

Code:

```
<string name="sec_brightness_using_high_brightness_dialog_message">Using high brightness for long periods increases battery consumption.</string>

```

You need delete this toast alert with this string and button OK..
Look at .method public constructor \<init\>(Landroid/content/Context;Landroid/util/AttributeSet;I)V in this class
You find such code

Code:

```
check-cast p1, Lcom/android/systemui/util/SettingsHelper;

    invoke-virtual {p1}, Lcom/android/systemui/util/SettingsHelper;->isUsingHighBrightnessDialogEnabled()Z

    move-result p1

    iput-boolean p1, p0, Lcom/android/systemui/settings/ToggleSliderView;->mUsingHighBrightnessDialogEnabled:Z

```

In class SystemUI/smali\_classes2/com/android/systemui/util/SettingsHelper.smali in method
.method public isUsingHighBrightnessDialogEnabled()Z - change 0x1 for 0x0

Code:

```
.method public isUsingHighBrightnessDialogEnabled()Z
    .locals 1

    iget-object p0, p0, Lcom/android/systemui/util/SettingsHelper;->mItemLists:Lcom/android/systemui/util/SettingsHelper$ItemMap;

    const-string v0, "shown_max_brightness_dialog"

    invoke-virtual {p0, v0}, Lcom/android/systemui/util/SettingsHelper$ItemMap;->get(Ljava/lang/String;)Lcom/android/systemui/util/SettingsHelper$Item;

    move-result-object p0

    invoke-virtual {p0}, Lcom/android/systemui/util/SettingsHelper$Item;->getIntValue()I

    move-result p0

    if-nez p0, :cond_0

    const/4 p0, 0x0  ###  previously it was 0x1  !!!

    goto :goto_0

    :cond_0
    const/4 p0, 0x0

    :goto_0
    return p0
.end method

```

And finally in SystemUI/smali/com/android/systemui/settings/ToggleSliderView$4.smali in method
.method public onDismiss(Landroid/content/DialogInterfaceV - change value

Code:

```
.method public onDismiss(Landroid/content/DialogInterface;)V
    .locals 2

    iget-object p1, p0, Lcom/android/systemui/settings/ToggleSliderView$4;->this$0:Lcom/android/systemui/settings/ToggleSliderView;

    const/4 v0, 0x0

    invoke-static {p1, v0}, Lcom/android/systemui/settings/ToggleSliderView;->access$1402(Lcom/android/systemui/settings/ToggleSliderView;Lcom/android/systemui/statusbar/phone/SystemUIDialog;)Lcom/android/systemui/statusbar/phone/SystemUIDialog;

    iget-object p1, p0, Lcom/android/systemui/settings/ToggleSliderView$4;->this$0:Lcom/android/systemui/settings/ToggleSliderView;

    const/4 v0, 0x0

    invoke-static {p1, v0}, Lcom/android/systemui/settings/ToggleSliderView;->access$902(Lcom/android/systemui/settings/ToggleSliderView;Z)Z

    iget-object p1, p0, Lcom/android/systemui/settings/ToggleSliderView$4;->this$0:Lcom/android/systemui/settings/ToggleSliderView;

    invoke-static {p1}, Lcom/android/systemui/settings/ToggleSliderView;->access$1100(Lcom/android/systemui/settings/ToggleSliderView;)I

    move-result v0

    const/4 v1, 0x1

    add-int/2addr v0, v1

    invoke-virtual {p1, v0}, Lcom/android/systemui/settings/ToggleSliderView;->setValue(I)V

    iget-object p0, p0, Lcom/android/systemui/settings/ToggleSliderView$4;->this$0:Lcom/android/systemui/settings/ToggleSliderView;

    invoke-static {p0}, Lcom/android/systemui/settings/ToggleSliderView;->access$2100(Lcom/android/systemui/settings/ToggleSliderView;)Landroid/content/Context;

    move-result-object p0

    invoke-virtual {p0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object p0

    const-string/jumbo p1, "shown_max_brightness_dialog"

    const/4 v0, 0x0  ###   previously it was  -0x2  !!!

    invoke-static {p0, p1, v1, v0}, Landroid/provider/Settings$System;->semPutIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z

    return-void
.end method

```

---
Tags: android-10, samsung-galaxy-s-9, screen-brightness
---


# Question
Title: Can I recover notes from before I factory reset my phone?
I have a Poco X3 NFC and did a factory reset just yesterday, but apparently lost a very important password and I can't seem to get it any other way. It was stored as a note from the "notes" app by Xiaomi and I don't even know which type of file to look for or if there's any software for that task.

Thanks in advance

# Answer
If your password was in a .txt file, maybe you can root your device and use third party software, the only downside is you'll have to pay a lot only to begin with if it even finds the file, maybe the software will let you view the password if it finds it,therefore it will be most likely that if it wasn't in a text format, no software can restore the password data unless it was a screenshot that was deleted. I'm sure you may have found a way, if not, the password is long gone. The only fix is if you written it somewhere safe beforehand or have it somewhere deep in your brain. I highly recommend you use a password manager that you can link to your Google account.
> 0 votes

---
Tags: applications, root-access, data-recovery, notes
---


# Question
Title: Micro SD cards work on phone with Android 8 but corrupted in phone with Android 11?
I have two SanDisk micro SD cards, a 8GB one for storing my photos and files in a Sony Xperia XA1, which runs Android 8.0 as the OS, the other one is a 128GB used in a Sony Xperia L3 phone, running Android 8.1. Since both of them had problems after years of usage, I bought a new phone, which is a Motorola e40, which runs Android 11.

When I transferred the micro SD card to the Motorola e40, it said the micro SD card is corrupted and asked for re-formatting. It happened to both of the micro SD cards. But the cards were actually working when I put them back to the Sony phones.

I wonder if the problem is on the OS. Does Android 11 use a micro SD card with a file system format different from that used by Android 8? Or is it the problem of the different phone brands?

I recall that both cards had not been formatted by me before when I used them for the Sony phones, so they should be pre-formatted by the manufacturer.

Also, the Motorola phone asked whether I would like to format the card as internal or portable storage (I did not choose either of them because the cards actually can work in the Sony phones and they contain data). But this option never appeared in my old Sony phones. So is it a property of the phone or Android 11?

# Answer
> 0 votes
Is your SD card encrypted? I'm going to assume it's not, but there may be an update you can install that fixes the problem. If the device is different, use the device the SD card works on and copy all the files to your computer as a backup, usually this is a sign that your phone's SD reader is corrupted or going bad, either that or it's the SD card. Hearing you have two different devices, I will go with my chance and say the problem is with the SD card, prepare a backup while you can.

---
Tags: sd-card, file-system, android-11, formatting
---


# Question
Title: Does the One Plus 8 Pro's IR camera work with Open Camera?
I'm trying to figure out whether or not, the One Plus 9 Pro's IR camera

* Is exposed as any other camera?
* Is a special device that is not exposed as a camera, but only a proprietary feature of the special One Plus Camera app?

Was this IR camera ever exposed as a stand-alone camera?

# Answer
No, at least not currently the Camera is not exposed through the official Camera1 or Camera2 API. It's only available in GCam and GCam clones (like LMC 8.4) (or other apps which use CameraX and JetPack), as the functionality is provided by a high-level extension to `com.qti.chi.override.so`. It amounts to OpenCamera and other camera apps not being a JetPack app and relying on lower-level Camera 1 and Camera 2 APIs. And, GCam being CameraX, which gets the IR camera functionality through the higher-level CameraX extension that OP provides.

For more information see my follow-up *"What is CameraX and JetPack? "*
> 1 votes

---
Tags: oneplus, ir-camera, oneplus-8-pro
---


# Question
Title: Can the OnePlus 8 Pro IR camera be re-enabled with LineageOS?
OnePlus got into some heat providing an infrared camera. They subsequently had to disable it,

> Therefore, we are already working on an OTA that we’ll push out in the coming weeks to offer the Photochrom filter while limiting other functionality that may be of concern.

Can this be re-enabled with LineageOS? Has this feature been hardware-removed in new devices?

# Answer
> 1 votes
# Re-enabled on March 4, 2022.

The LinageOS device name for the OnePlus8 Pro is `instantnoodlep`. From that repo we can see `instantnoodlep` is is based on OnePlus `sm8250-common`. This repo is the `android_device_oneplus_sm8250-common` which you can find on GitHub in it you'll see a patch named *"sm8250-common: Unlock gc5035 camera"*. The gc5035 is the IR camera, (camera without an IR filter).

> **sm8250-common: Unlock gc5035 camera**
>
> This change lets us use gc5035 camera, which was blocked by OnePlus long time ago after people discovered its *magic* capabilities. By default only `com.oem.autotest` can use it, however if we replace the first character with a NULL byte, then `strncmp` returns 0, and thus we pass the check and allow everyone to use it.

All ROMs based on LineageOS should have this patch, if they're newer than the March 4, 2022 date.

---

Note: keep in mind you **MUST** use an Camera app based on GCam. Stock Apps and OpenCamera will not work.

---
Tags: lineageos, oneplus-8-pro, ir-camera
---