# Question
Title: Show touch point with S-Pen as well (instead of just finger)
Samsung's android shows a cursor while using the S-Pen but hides it when you actually start touching.

In the Developer Options there are 2 relevant options, one shows a nice white circle where you touch, but does not react to the pen, and the "cursor Position" setting does react to the pen, but is in my opinion a bit too much on the screen, especially with the path and all.

So is there some way to get a simple touch indicator that also works with the pen, e.g. for screen recordings?

I am using a Galaxy Tab S6 Lite with Android 13.

# Answer
The Samsung support page mentions behavior close to what you're describing:

> Maybe you’d like to see a pointer displayed on the screen to show the path of your S Pen.

But neglects to describe the setting that would enable this. They do say, however, that it should be found at `Settings > Advanced Features > S Pen`.

The Verizon support page seems to call it `Show pointer`. Additionally this video shows an S Pen causing different display responses when screen recording that are available via the screen recording settings through the Samsung floating Screen Recording menu (shown in the video) and further customizable from `Settings > Advanced Features > Screenshots and screen recordings`.
> 0 votes

---
Tags: s-pen, samsung-galaxy-tab-s-6
---


# Question
Title: Possible to use the same Google accounts on 2 exact same phones?
I'm trying to find out if I can use my Google accounts on 2 exact mobile phones?

I've only been able to find that you can use Google accounts on multiple devices, but can the devices be the same make & model?

# Answer
**Yes, it is possible to use the same Google account on 2 exact same phones, even both same make and model.**

No specific source or reference, but Google doesn't really put any restrictions on how their account is used on Android, including on many Android emulators having the "same" make and model.
> 1 votes

# Answer
Apparently you can't use the play store on both of then. I have two of the same device and the play store only recognizes one of them. The play store won't even let me install the store. I had to stop the ad blockers on chrome browser and use the link to the play store app.Then I found only one listed.
> -1 votes

---
Tags: google-account, multiple-devices
---


title: Bulk uninstall applications

text:
# Question
Title: Bulk uninstall applications
I like to try out lots of apps. Often a site like Lifehacker or Droidlife will feature several that are similar in functionality and I will install them all in order to compare features.

That leaves me with lots and lots of applications that I end up not wanting to keep. Unfortunately, I can only uninstall one at a time.

Is there an app or method that would allow me to uninstall a bunch at a time?

# Answer
> 6 votes
There are tons of apps that do batch uninstalling but here's a simple free one that I know works: Uninstaller Pro

A lot of the more full featured app managers also have a batch uninstall option. I like to consolidate functions into as few apps as I can. Now I use SmartBar which has a good app manager with batch uninstall.

# Answer
> 2 votes
**Scripted via adb & pm (package manager)**:

If the SDK is installed and you like to use the commandline, that's about the quickest way I know of:

Downside: you only get to see the package names, not the friendly application names (There's seemingly no easy cli way. For programmers: get application name from package name)
Downside 2: Be sure what you do, you might uninstall every app on your phone if you don't edit the list.

```
 # Use android's package manager 'pm'
 # list all 3rd party pkgs (using the '-3' parameter)
me@local:~$ adb shell pm list packages -3 > /tmp/pkg.list
 # Use whatever editor you like (grep, vi, GUI) to edit the list
me@local:~$ vi /tmp/pkg.list
me@local:~$ cat /tmp/pkg.list | sed 's,.*:,,' | while read a; do adb uninstall $a;done

```

**Maybe also an improvement for a limited number of apps:**

Google's Play Store now offers improved per device management (since around Google I|O 2012):

Go to My Android Apps (login required) and you see "Apps installed on \[Device Model\]". Per app you have an:

* Update button (if there's an update)
* Uninstall button (except for system apps)

Using this you can easily uninstall apps on specific phones or tablets using your internet browser.

See also this accepted answer: Remotely uninstall apps?

# Answer
> 1 votes
It's been awhile since I used it, but AppBrain's app will let you sync to your AppBrain account... so it should uninstall apps you remove from your AppBrain account, but I can't verify that since I don't use it anymore.

Not a batch uninstall, but in LauncherPro you can drag and drop apps to the trash can, hover for a few seconds, and then drop to uninstall it (instead of removing it from the homescreen). Works from the app drawer too. This is the method I usually use.

# Answer
> 1 votes
There are a ton, aren't there?

One I'm looking at is Apps Uninstall.

A nice feature it has is the ability to mark apps to protect them from accidentally bulk uninstalling.

# Answer
> 0 votes
The problem with his method and most other methods I have seen (at least on my CentOS 6 and Ubuntu 10 machines) is that CRLFs were at the end of each line of the `/tmp/pkg.list` file, so the uninstaller instead of uninstalling `com.google.chrome`, was actually attempting to uninstall 'com.google.chrome^M' ... notice the CR return character. By doing dos2unix, there is 'Success', not 'Failure'. His sed script may have originally been a substitute for dos2unix, but was mangled when posted.

```
[CentOS6]# adb shell pm list packages > /tmp/pkg.list.txt
[CentOS6]# adb push /tmp/pkg.list.txt /tmp/
[CentOS6]# adb shell
android:/root # dos2unix /tmp/pkg.list.txt
android:/root # for f in \`cat /tmp/pkg.list.txt\`; do echo $f; pm uninstall $f; done;

```

The 'Failure' problem has more to do with the ADB shell appending a DOS line ending ^M (on CentOS Linux anyway).

Since I did everything from CentOS 6, I was surprised to be bitten yet again by 1980s technology that was never as good as the technology from 1969. I guess Google wanted to make things easier for Windows users of the ADB shell.

(I had edited (appended) to ce4's answer, but apparently that did not take.)

# Answer
> 0 votes
For Windows users, after generating the list packages like this

```
adb shell pm list packages -3 > pkg_third.txt

```

Open and edit this file, leave only packages that will be REMOVED.

In **PowerShell**, execute this script

```
Get-Content '.\pkg_third.txt' | ForEach-Object {

    $packageNameCleaned = $_ -replace '.*:', ''
    Write-Host "Removing $packageNameCleaned"
    & adb uninstall $packageNameCleaned
}

```

---
Tags: uninstallation, applications
---


# Question
Title: What does the button labeled "intelligent Wi-Fi" do?
My Android cellphone has a drop-down menu with four options:

* Wi-Fi Direct
* Intelligent Wi-Fi
* Advanced Settings
* Contact Us

It is Android 13 (Tiramisu). Additional information from the "about phone" menu:

> Software information
>
> One UI version
>
> Android version
>
> Google Play system update
> November 1, 2023
>
> Baseband version
> A546USQS5AWJ1
>
> Kernel version
> 5.15.78-android13-3-27100863
> #1 Tue Oct 3 10:39:23 KST 2023
>
> Build number
> TP1A.220624.014.A546USQS5AWJ1
>
> SE for Android status
> Enforcing
> SEPF\_SM-A546U\_13\_0001
> Tue Oct 03 10:49:29 2023
>
> Knox version
> Knox 3.9
> Knox API level 36 HDM 2.0 - 7
>
> Service provider software version
> SAOMC\_SM-A546U\_OYN\_CCT\_13\_0019
> CCT/CCT,CCT/CCT

# Answer
> 3 votes
According to reporting from SamMobile, it allows for more detailed settings about Wi-Fi connectivity to help create a more seamless transition between various Wi-Fi networks and cellular data. Samsung's feature announcement from 2022 has some good details although a no-longer-working video, and their Knox documentation page has some more technical information. It implements features like:

* Grey area detection
* Preference tracking
* Suspicious hotspot detection
* Prioritizing preferential traffic (like video calls)
* Preemptive switching to cellular data if Wi-Fi is likely to be unstable

Here is an example of some of the settings that may be present (as Andrew T. mentioned, this is Samsung only and may vary among Samsung devices):

---
Tags: samsung, wi-fi, settings
---


# Question
Title: Q1: When one instance of Termux is running, how to launch a second instace? - Q2: If two instancies running, is there a way to merge the two shells?
My installed Termux is currently blocked, not working due to problems of a process the shell is executing and additionally because the shell itself is in the SIGSTOP state.

On the one hand I would like to continue the current work by the second instance of Termux. The existing data could be used.

On the other hand I would easily raise the SW blockade if I would be able in one shell to read the PID and to kill the PID in/of the other instance's shell. I.e. as if the shells of the two Termux instances would be the shells of two windows under Konsole in KDE.

How to do?

Regards

# Answer
> 0 votes
This is quite easy, once you find out how. The Termux Wiki's User Interface page has the details.

To summarise, there's a "navigation drawer" which allows you to create multiple sessions and switch between them. Swipe inwards from the left edge of the Termux window to access it. It shows you a list of the current sessions, whose default names are `[1]`, `[2]`, `[3]` and so on, along with two controls. `KEYBOARD` toggles the on-screen keyboard on and off, and `NEW SESSION` creates a new session.

From within a Termux session, `ps` will list the processes of that session, `ps -e` lists the processes in all the Termux sessions, and `ps -ef` shows more complete information about the same set of processes. There's also `top` available, which may well help your find out which process to kill.

---
Tags: termux
---


# Question
Title: Stuck on Recovery Mode 3.0 screen in Redmi Y2
My Redmi Y2 phone was working fine for long time but suddenly I found that "VOLUME UP" key is not working so I tried to restart the phone but it got stuck into Recovery 3.0 screen. It only gives 3 options:

* Reboot
* Wipe Data
* Connect with MIAssistant

Pressing on "Reboot" displays two option:

* Reboot to System
* Go back to Main Menu

Pressing "Reboot to System" reboots device and again goes back to "Recovery 3.0" screen, this keeps going on. I don't want to loss data so I didn't try "Wipe Data" option. Its not moving out of this screen no matter how may times I reboot it. I tried FAST BOOT by pressing (VOLUME DOWN + POWER) button, but it has no effect, it shows logo for a moment and ended up to same "Recovery 3.0" screen.

# Answer
Volume Up button is for recovery mode. Repair the button.
> 2 votes

---
Tags: recovery-mode, boot-loop, xiaomi, miui, volume-control
---


# Question
Title: Notifications randomly stop being shown from Telegram
I recently bought an Android 13 phone *(Ulefone Armor 24 if that matters)*, and I stumbled upon a problem that oftentimes I stop getting notifications from Telegram about new messages.

Judging by my research that might affect other apps. But I don't have any other app whose notifications I heavily rely upon to confirm or disprove that.

Further research showed that most of the times when that happens, if I go `Settings → Applications → Telegram`, I see that the `Stop` button is grayed out, which implies the Telegram background service got stopped.

At first I was blaming `Duraspeed`, which is default-enabled on this phone and presumably might cause such problems. But after I added Telegram to `Duraspeed` exceptions nothing changed. So apparently that is not it.

Today that problem got repeated, so I tried to peek at system logs with `adb logcat`, and found this hint:

```
12-16 03:01:01.577  1458  1489 I ActivityManager: Start proc 27895:com.pri.morning.kill/1000 for service {com.pri.morning.kill/com.pri.morning.kill.service.MorningKillService}
12-16 03:01:01.616  1458  2488 V ActivityManager: New death recipient com.android.server.am.ActivityManagerService$AppDeathRecipient@ffe6c1f for thread android.os.BinderProxy@33fab6c
12-16 03:06:58.537  1458  2790 D CompatibilityChangeReporter: Compat change id reported: 171306433; UID 1000; state: ENABLED
12-16 03:06:58.537  1458  2790 D CompatibilityChangeReporter: Compat change id reported: 218533173; UID 1000; state: ENABLED
12-16 03:06:58.541  1458  2790 V SettingsProvider: packageValueForCallResult, name = null, value : Bundle[{_track_generation=android.util.MemoryIntArray@bd, value=null, _generation_index=3, _generation=825}]
12-16 03:06:58.563  1458  1487 W UsageStatsService: Unexpected activity event reported! (ru.perekrestok.app/ru.perekrestok.app.presentation.MainActivity event : 23 instanceId : 37428045)
12-16 03:06:58.564  1458  2488 D WindowManager: setParent old=Task{a725e80 #844 type=standard A=10182:ru.perekrestok.app U=0 visible=false visibleRequested=false mode=fullscreen translucent=true sz=0},new=null,this window=ActivityRecord{a4602 u0 ru.perekrestok.app/.presentation.MainActivity} t844 f}},callers=com.android.server.wm.WindowContainer.removeChild:772 com.android.server.wm.TaskFragment.removeChild:2592 com.android.server.wm.Task.removeChild:1499 com.android.server.wm.Task.removeChild:1482 com.android.server.wm.WindowContainer.removeImmediately:828 com.android.server.wm.WindowToken.removeImmediately:350
12-16 03:06:58.567  1458  2488 D WindowManager: setParent old=DefaultTaskDisplayArea@84346286,new=null,this window=Task{a725e80 #844 type=standard A=10182:ru.perekrestok.app U=0 visible=false visibleRequested=false mode=fullscreen translucent=true sz=0},callers=com.android.server.wm.WindowContainer.removeChild:772 com.android.server.wm.TaskDisplayArea.removeChildTask:359 com.android.server.wm.TaskDisplayArea.removeChild:350 com.android.server.wm.WindowContainer.removeImmediately:828 com.android.server.wm.TaskFragment.removeImmediately:2672 com.android.server.wm.Task.removeImmediately:2587
12-16 03:06:58.578  1458  1478 I ActivityManager: Killing 23027:ru.letobank.Prometheus:pushservice/u0a184 (adj 920): remove task
12-16 03:06:58.579  1458  1478 I ActivityManager: Killing 22707:ru.letobank.Prometheus/u0a184 (adj 910): remove task
12-16 03:06:58.595  1458  2488 D ActivityManager: Calling pid 27895 killed pid 26945
12-16 03:06:58.601  1458  2488 I ActivityManager: Force stopping org.telegram.messenger appid=10181 user=0: from pid 27895
12-16 03:06:58.602  1458  2488 I ActivityManager: Killing 24470:org.telegram.messenger/u0a181 (adj 700): stop org.telegram.messenger due to from pid 27895
12-16 03:06:58.610  1458  2488 W ActivityTaskManager: Force removing ActivityRecord{8102054 u0 org.telegram.messenger/.DefaultIcon} t846 f}}: app died, no saved state
12-16 03:06:58.611  1458  1487 W UsageStatsService: Unexpected activity event reported! (org.telegram.messenger/org.telegram.ui.LaunchActivity event : 23 instanceId : 221610919)
12-16 03:06:58.613  1458  2488 D WindowManager: setParent old=ActivityRecord{8102054 u0 org.telegram.messenger/.DefaultIcon} t846 f}},new=null,this window=Window{1ea58b4 u0 org.telegram.messenger/org.telegram.messenger.DefaultIcon},callers=com.android.server.wm.WindowContainer.removeChild:772 com.android.server.wm.ActivityRecord.removeChild:4475 com.android.server.wm.ActivityRecord.removeChild:388 com.android.server.wm.WindowContainer.removeImmediately:828 com.android.server.wm.WindowState.removeImmediately:2514 com.android.server.wm.WindowState.removeIfPossible:2704
12-16 03:06:58.617  1458  2488 D WindowManager: setParent old=Task{ded0031 #846 type=standard A=10181:org.telegram.messenger U=0 visible=false visibleRequested=false mode=fullscreen translucent=true sz=0},new=null,this window=ActivityRecord{8102054 u0 org.telegram.messenger/.DefaultIcon} t846 f}},callers=com.android.server.wm.WindowContainer.removeChild:772 com.android.server.wm.TaskFragment.removeChild:2592 com.android.server.wm.Task.removeChild:1499 com.android.server.wm.Task.removeChild:1482 com.android.server.wm.WindowContainer.removeImmediately:828 com.android.server.wm.WindowToken.removeImmediately:350
12-16 03:06:58.620  1458  2488 D WindowManager: setParent old=DefaultTaskDisplayArea@84346286,new=null,this window=Task{ded0031 #846 type=standard A=10181:org.telegram.messenger U=0 visible=false visibleRequested=false mode=fullscreen translucent=true sz=0},callers=com.android.server.wm.WindowContainer.removeChild:772 com.android.server.wm.TaskDisplayArea.removeChildTask:359 com.android.server.wm.TaskDisplayArea.removeChild:350 com.android.server.wm.WindowContainer.removeImmediately:828 com.android.server.wm.TaskFragment.removeImmediately:2672 com.android.server.wm.Task.removeImmediately:2587
12-16 03:06:58.625  1458  2488 I ActivityManager:   Force stopping service ServiceRecord{ec3cd7a u0 org.telegram.messenger/.NotificationRepeat}

```

So apparently some `MorningKillService` appears and just kills everything on left and right. And there is no matches on the internet for that word ATM. Any idea what is this about?

# Answer
> 0 votes
That is unfortunately a quite common problem with cheaper brands - they're gaming the battery life metrics by very aggresively terminating apps in background and preventing them from receiving messages. They usually have some kind of allowlist for most known messaging apps, but Telegram commonly doesn't make a cut.

There's even a website dedicated to that problem: https://dontkillmyapp.com/

Usually it's possible to allowlist Telegram by finding an option related to smart battery savings, "app killer", "app suspend" or "app blocker".

In case of Ulefone, **it's probably called "Duraspeed"**, here's Threema's entry on how to allowlist it - for Telegram it will probably be the same: https://threema.ch/en/faq/push\_ulefone\_armor\_8

---
Tags: applications, notifications, background-process, android-13, telegram
---


# Question
Title: adb daemon started but no device detected
I need help with adb. I'm using rooted Xiaomi Redmi 6A (Android 9). Recently, I flashed the Magisk ADB Root module, which is used to access `adb root` command (`adb push`, `adb pull`). This module utilizes the adbd daemon running on your phone with root rights. It did actually work, but with one problem - now I can't use adb outside of TWRP recovery.

Since I already did what I wanted to do with adb root, I uninstalled this module - but it didn't do anything. Every time I'm trying to use adb, the daemon is started successfully, but adb doesn't see any devices attached. This isn't a problem with the cable or PC - before using this module, it all worked without issues. Inside the module file, I found a `setpolicy.rule` file:

```
allow adbd adbd process setcurrent
allow adbd su process dyntransition
allow su * * *

```

I'm looking for a way to reset adb/adbd settings to default, which hopefully would fix my problem. (I did try to contact them via their Telegram, but it seems inactive).

# Answer
> 0 votes
After seeing the module, I think the module only replaces `adbd` daemon on Android with the patched `adbd` binary. If you have any problems after installing this module, you can uninstall them, and reboot, since the Magisk module doesn't affect your system permanently.

You can restart adb daemon on a Windows PC with `adb kill-server` and then relaunch with `adb devices`.

And make sure you activate adb on developers mode.

If you want to automatically turn on adb on boot and allow adb root, try my Magisk module: Adb-Root-Enabler

---
Tags: adb, root-access, xiaomi
---


# Question
Title: No audio on Facebook, YouTube Android app when on 4G
My Pixel 5 audio is working while on WiFi at home.

When I'm not on WiFi and using 4G, any video on Facebook or YouTube has no audio.

On Facebook I can turn the audio off and on for each video, doing so makes no difference.

I can't see volume controls anywhere in the YouTube app, either on each video, or in the app settings.

In Android Settings \> Audio, all audio levels are high.

Why would audio not work on any Facebook or YouTube videos while on 4G?

The problem has followed me to a new Pixel 6a too.

# Answer
> 1 votes
I think I found the cause of the problem.

Both phones were paired via Bluetooth to the car's sound system whenever I was in the car.

The car will only play audio from the phone when the car's sound system is specifically set to do so (-vs- playing FM or AM radio).

So the solution is to either:

* unpair the phone from the car
* or switch the car's audio system to play via Bluetooth.

---
Tags: audio, mobile-data, google-pixel, 4g
---


# Question
Title: Obtain package name AND common name of apps via ADB
I'm looking for a possibility to retrieve **both**, the package names **and** the common names of apps installed on an Android device via ADB – or at least to retrieve the common name if the package name is known. A quick search on our site brought up two related questions, but they don't solve my issue:

I'm looking for a way to retrieve the information *directly from the device,* if possible – not "any" way (including "web lookups" or "via an app") as those two questions have it.

I know there are multiple tools available to obtain package details:

* `adb dumpsys package`: While this lists all packages with a bunch of details, the "common name" is not shown
* `adb shell pm list`: only gives the package names
* `aapt` would be able to obtain the common name, but would require to first pull the `.apk` file from the device, which is not really convenient (and obviously will be pretty slow with many and/or large apps installed)

Did I miss something? I know the information must be on the device (how else could it show the app names in the GUI? I doubt Android parses the `.apk` file each time the GUI need the "common name"). So is there a way to get hold of it, using ADB directly?

---

## TL;DR

**Background** (if somebody's curious): I want to be able to quickly obtain a list of user-apps from any of my devices, without having to revert to acrobatics. A list of their package names I can retrieve using `adb shell pm list -3`, but as those are package names only, recognizing apps is a guess-work. So if there were some ADB command to retrieve the common name for a given package name, I could simply use a loop like `for pkg in $(adb shell pm list -3); do echo "- $(adb <whatever_the_command_is> $pkg) ($pkg)"; done` – and get a listing of all the installed user-apps in a "human readable format" together with their package names.

**Use-cases:**

* See what "superflous" apps are installed (which I could remove)
* Cross-check lists from multiple devices
* Documentation ;)
* and probably more (but the above 3 are what I need it for)

# Answer
> 7 votes
This is not a final answer, as it is not generic (only works on some devices) – but it's a start at least:

As we've figured out, at least CM based ROMs with Kitkat (Android 4.4) and above ship with the `aapt` binary available in `/system/bin`1. If your ROM doesn't have it, and installing the binary on the device is an option, you can find it here.

Using `aapt`, retrieving the app name is possible with

```
aapt d badging <path to apk> | grep "application: label" |awk '{print $2}'

```

The output will be something like `label='Funny App'`, which you then easily can parse for the app name, e.g.

```
aapt d badging <path to apk> | grep 'application: label' | sed -n \"s/.*label\='\([^']*\)'.*/\1/p\"

```

(not good if the app name contains single quotes, but that might count as cosmetics – or you figure how to improve the sed part to deal with that).

---

**1:** we didn't find this in the Kitkat-and-above stock ROMs we've checked, so it might be CM based ROMs only

# Answer
> 12 votes
Here is my solution for a non-rooted phone which needed some slight changes from above which I ran on a Moto G 2nd gen running Android 5.0.2.

I didn't have `aapt` binary in `/system/bin`, so I first tried downloading from https://android.izzysoft.de/downloads

but when I tried to run it, I got an error saying:

```
error: only position independent executables (PIE) are supported.

```

So then I searched for a PIE version and found: https://github.com/Calsign/APDE/blob/fdc22eb31048862e1484f4b6eca229accda61466/APDE/src/main/assets/aapt-binaries/aapt-arm-pie

and this worked by copying binary to `/data/local/tmp`:

```
adb push aapt-arm-pie /data/local/tmp
adb shell chmod 0755 /data/local/tmp/aapt-arm-pie

```

So then:

```
adb shell pm list packages -3 -f

```

gets a list of 3rd party apps (apps you have installed, not system apps) and then you can use the package from the command above in `aapt` to get information on the package - example:

```
adb shell /data/local/tmp/aapt-arm-pie d badging /data/app/com.facebook.katana-3/base.apk

```

So, below is a script (for a Linux client) to get just "common" name for 3rd party apps:

```
for pkg in `adb shell pm list packages -3 -f | awk -F= '{sub("package:","");print $1}'`
do
  adb shell /data/local/tmp/aapt-arm-pie d badging $pkg | awk -F: '
      $1 == "application-label" {print $2}'
done

```

If you want package and version too, then change last but one line from:

```
$1 == "application-label" {print $2}'

```

to:

```
$1 == "package" { split($2,space," ")
name=space[1];version=space[3]}
$1 == "application-label" {print name, version, $2 }'

```

Example output:

```
name='com.ultimarom.launchnavigation' versionName='1.28' 'Navigation'
name='com.enhanced.skineditorstudio' versionName='3.3' 'Custom Skin Creator'
name='com.mojang.minecraftpe' versionName='1.2.6.60' 'Minecraft'
name='org.videolan.vlc' versionName='2.5.13' 'VLC'
name='com.jrustonapps.myauroraforecast' versionName='1.7.2' 'My Aurora Forecast'
name='de.j4velin.wifiAutoOff' versionName='1.7.6' 'WiFi Automatic'
name='com.facebook.katana' versionName='153.0.0.54.88' 'Facebook'
name='com.metago.astro' versionName='6.0.5' 'ASTRO File Manager'
name='za.co.hardrive.smartinfo.parkrun' versionName='2.0.2' 'My 5krun'
name='com.PYOPYO.StarTrackerVR' versionName='1.0.1' 'StarTracker VR'
name='cz.aponia.bor3.offlinemaps' versionName='1.1.19' 'Offline Maps'
name='com.groupon' versionName='16.11.63973' 'Groupon'
name='com.ebay.mobile' versionName='5.16.1.2' 'eBay'
name='com.runtastic.android' versionName='8.1.1' 'Runtastic
name='com.google.android.diskusage' versionName='3.8.3' 'DiskUsage'

```

# Answer
> 4 votes
This can be achieved with Android Java API:

```
import android.app.ActivityThread;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Looper;

public class Main {
  public static void main(String[] args) {
    Looper.prepareMainLooper();
    PackageManager pm = ActivityThread.systemMain().getSystemContext().getPackageManager();
    for (ApplicationInfo appInfo : pm.getInstalledApplications(PackageManager.MATCH_UNINSTALLED_PACKAGES)) {
      System.out.println(appInfo.uid + " " + appInfo.packageName + " " + pm.getApplicationLabel(appInfo));
    }
  }
}

```

Compile the code to a `dex` file, push it to `/data/local/tmp/list_app_labels.dex`, and run from ADB shell:

```
CLASSPATH=/data/local/tmp/list_app_labels.dex app_process / Main

```

It should print the UID, package name and app label of installed apps like this:

```
10099 com.android.packageinstaller Package installer
1002 com.android.bluetooth Bluetooth
1073 com.android.networkstack.permissionconfig com.android.server.NetworkPermissionConfig
10230 com.topjohnwu.magisk Magisk
10087 com.android.providers.blockednumber Blocked Numbers Storage
10176 com.termux.widget Termux:Widget
...

```

If you don't want to compile the code, here are convenience methods:

## Option 1

Download the pre-compiled executable (for arm64 or arm), extract the zip file, push the binary to Android device, and run:

```
adb push list_app_labels /data/local/tmp/ && adb shell 'cd /data/local/tmp/ && chmod a+x list_app_labels && ./list_app_labels'

```

## Option 2

Push the given script to Android device and run:

```
adb push list_app_labels.sh /data/local/tmp/ && adb shell sh /data/local/tmp/list_app_labels.sh

```

Tested on Android 7-13.

**Note:**

* Do not change the script. `tail` extracts the `dex` from a hard-coded line number.
* If you are on Windows, run `dos2unix` on the shell script before executing.

`list_app_labels.sh`:

```
#!/system/bin/sh

export CLASSPATH=/data/local/tmp/list_app_labels.dex
trap 'rm $CLASSPATH' EXIT
tail -n +10 "$0" | base64 -d >$CLASSPATH

app_process / Main
exit

ZGV4CjAzNwAEZ8DOwPQFGurk/iOA5Ry9+z0tMCP1fzNMCAAAcAAAAHhWNBIAAAAAAAAAAKwHAAAx
AAAAcAAAABQAAAA0AQAADwAAAIQBAAADAAAAOAIAABMAAABQAgAAAgAAAOgCAAAkBQAAKAMAAFoE
AABdBAAAZQQAAGgEAABrBAAAbwQAAHMEAAB7BAAAmQQAALQEAADPBAAA9QQAABoFAAAvBQAAQQUA
AFgFAAByBQAAhgUAAJoFAAC1BQAAyQUAAN8FAADxBQAA/AUAAP8FAAADBgAABgYAABsGAAAfBgAA
JwYAAC0GAAAyBgAARwYAAGEGAAB0BgAAhgYAAI8GAACZBgAAnwYAAKUGAACqBgAAtwYAALsGAADO
BgAA1wYAAOMGAADtBgAA8gYAAFkHAAACAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0A
AAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABcAAAAZAAAAGgAAAAMAAAACAAAAAAAA
AAMAAAADAAAAAAAAAAMAAAAGAAAAAAAAAAUAAAAKAAAANAQAAAMAAAALAAAAAAAAAAMAAAAMAAAA
AAAAAAQAAAANAAAAPAQAAAUAAAANAAAARAQAAAUAAAANAAAATAQAAAMAAAAPAAAAAAAAAAQAAAAQ
AAAAPAQAABcAAAARAAAAAAAAABgAAAARAAAATAQAABgAAAARAAAAVAQAABkAAAASAAAAAAAAAAUA
DAAoAAAABQAAAC4AAAAOAAkAJwAAAAEACwABAAAAAQANACUAAAACAAEAIgAAAAIAAAAsAAAABAAC
ACEAAAAGAAMAHwAAAAYACgAgAAAABwALACoAAAAIAAsAAQAAAAkADAArAAAACwALAAEAAAANAAsA
AQAAAA0ABgAcAAAADQAHABwAAAANAAgAHAAAAA0ABQAtAAAADwAOACMAAAAPAAQAJgAAABAACQAk
AAAAAQAAAAEAAAALAAAAAAAAABYAAAAAAAAAkQcAAAAAAAAIAAAAEQAAAAsAAAAAAAAA/////wAA
AACfBwAAAAAAAAEAAQABAAAAEAQAAAQAAABwEAoAAAAOAAkAAQACAAAAFAQAAFMAAABxAAcAAABx
AAMAAAAMAG4QAgAAAAwAbhAEAAAADAETAgAgbiAGACEADAJyEBIAAgAMAnIQEAACAAoDOAM1AHIQ
EQACAAwDHwMFAGIEAgAiBQ0AcBALAAUAUjYBAG4gDABlAAwFGgYAAG4gDgBlAAwFVDcAAG4gDgB1
AAwFbiAOAGUADAVuIAUAMQAMBm4gDQBlAAwFbhAPAAUADAVuIAkAVAAoyA4AAAABAAEAAQAAAAAA
AAAEAAAAcBAKAAAADgAHAA4ACgEeDjyIAwAfBUwDASoHARYPAwMcBgEsDwUDHgAAAAABAAAABQAA
AAEAAAAAAAAAAQAAAAsAAAABAAAADAAAAAEAAAATAAEgAAY8aW5pdD4AAUkAAUwAAkxJAAJMTAAG
TE1haW47ABxMYW5kcm9pZC9hcHAvQWN0aXZpdHlUaHJlYWQ7ABlMYW5kcm9pZC9hcHAvQ29udGV4
dEltcGw7ABlMYW5kcm9pZC9jb250ZW50L0NvbnRleHQ7ACRMYW5kcm9pZC9jb250ZW50L3BtL0Fw
cGxpY2F0aW9uSW5mbzsAI0xhbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZU1hbmFnZXI7ABNMYW5k
cm9pZC9vcy9Mb29wZXI7ABBMY29tL21pcmZhdGlmL1I7ABVMamF2YS9pby9QcmludFN0cmVhbTsA
GExqYXZhL2xhbmcvQ2hhclNlcXVlbmNlOwASTGphdmEvbGFuZy9PYmplY3Q7ABJMamF2YS9sYW5n
L1N0cmluZzsAGUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsAEkxqYXZhL2xhbmcvU3lzdGVtOwAU
TGphdmEvdXRpbC9JdGVyYXRvcjsAEExqYXZhL3V0aWwvTGlzdDsACU1haW4uamF2YQABVgACVkwA
AVoAE1tMamF2YS9sYW5nL1N0cmluZzsAAmFpAAZhcHBlbmQABGFyZ3MAA2N4dAATZ2V0QXBwbGlj
YXRpb25MYWJlbAAYZ2V0SW5zdGFsbGVkQXBwbGljYXRpb25zABFnZXRQYWNrYWdlTWFuYWdlcgAQ
Z2V0U3lzdGVtQ29udGV4dAAHaGFzTmV4dAAIaXRlcmF0b3IABG1haW4ABG5leHQAA291dAALcGFj
a2FnZU5hbWUAAnBtABFwcmVwYXJlTWFpbkxvb3BlcgAHcHJpbnRsbgAKc3lzdGVtTWFpbgAIdG9T
dHJpbmcAA3VpZABlfn5EOHsiYmFja2VuZCI6ImRleCIsImNvbXBpbGF0aW9uLW1vZGUiOiJkZWJ1
ZyIsImhhcy1jaGVja3N1bXMiOnRydWUsIm1pbi1hcGkiOjI0LCJ2ZXJzaW9uIjoiMy4zLjgzIn0A
Nn5+fnsiTE1haW47IjoiNzg1NDY5ZTYiLCJMY29tL21pcmZhdGlmL1I7IjoiNjExMjVkMjEifQAA
AAIAAIGABKgGAQnABgAAAQAIgoAE+AcAAAANAAAAAAAAAAEAAAAAAAAAAQAAADEAAABwAAAAAgAA
ABQAAAA0AQAAAwAAAA8AAACEAQAABAAAAAMAAAA4AgAABQAAABMAAABQAgAABgAAAAIAAADoAgAA
ASAAAAMAAAAoAwAAAyAAAAIAAAAQBAAAARAAAAUAAAA0BAAAAiAAADEAAABaBAAAACAAAAIAAACR
BwAAABAAAAEAAACsBwAA

```

# Answer
> 2 votes
None of the suggestions were particularly good for me, so after some fiddling, here's my 100% on-device solution using Termux:

Get Termux and install `adb` and `aapt` through its package manager:

```
pkg install android-tools aapt

```

You need to be connected to a Wi-Fi network - any network will do - to pair Termux's ADB to your phone for "wireless" debugging.

Now here's the script I've made, with comments to make it easier to read and tweak (and also for me to understand as I've never been that good at shell scripting):

```
# ,- list all packages including APK path, in the format: package:/data/.../path/to.apk=com.package.name
# |  note that the path to the APK includes equals signs
# |
# |                                              ,- replace the last "=" (before the package name) with a ":"
# |                                              |
# |                                              |                       ,- remove leading "package:"
# |                                              |                       |                              ,- parse into shell vars $apk and $pkgname
# |                                              |                       |                              |
adb shell cmd package list packages -f | sed -e 's/=\([^=]*\)$/:\1/' -e 's/^package://' - | while IFS=: read -r apk pkgname; do
  # get label using aapt and filter out just the label with sed
  label=$(aapt dump badging $apk | sed --quiet --expression='s/^application-label://p')
  echo "pkgname: $pkgname"
  echo "apk: $apk"
  echo "label: $label"
  echo ""
done

```

Save this to a file somewhere in the termux home folder for easy access (e.g. `~/list.sh`), and run it with `sh list.sh`

It takes about a second per app for `aapt` to process the apk, but it doesn't need to copy it anywhere - it accesses the apk directly where it is. The output is easily tweakable in the script as it's just a few `echo` commands. You can also change which files get listed by changing the arguments of `adb shell cmd package`, e.g. by adding `-3`, but be sure to keep the `-f` flag.

This may not be useful for the original question asker, but I do hope it would be useful to others!

---
Tags: adb, system-info
---


# Question
Title: Does gboard have a key to switch keyboard apps?
I am looking for a way to quickly switch between keyboard apps while using gboard. My phone is a redmi 5.

For e.g if I am writing a message I prefer gboard. But when I have to write code I want to quickly switch to hackers keyboard app.

Incidentally on the latter I have the option to jump back to gboard...

I want to be sure that there is no option on gboard to do the same.

# Answer
You can press and hold the spacebar while using Gboard to switch languages and keyboards.
> 2 votes

# Answer
I was wondering the same thing, because I don't like going into my settings all the time, so I searched and downloaded Keyboard Switcher app from F-droid.
> 0 votes

---
Tags: keyboard, gboard
---


# Question
Title: How to log in to a hacked Google account without phone?
I'm trying to log into my Google account, and it won't let me get past the verification steps because I don't know what they changed the password to, and obviously I no longer have access to the number because they stole the phone.

# Answer
There are some solutions that Google suggests, you should try them first.

> **Forgot your password**
>
> 1. Follow the steps to recover your Google Account or Gmail.
> 2. Reset your password when prompted. Choose a strong password that you haven't already used with this account. Learn how to create a strong password.
>
> **Forgot the email address you use to sign in**
>
> 1. To find your username, follow these steps. You need to know:
>     * A phone number or the recovery email address for the account.
>     * The full name on your account.
> 2. Follow the instructions to confirm it’s your account.
> 3. You’ll find a list of usernames that match your account.
>
> **Someone else is using your account**
> If you think someone is using your Google Account without your permission, follow the steps to recover a hacked or hijacked Google Account or Gmail.
>
> **Can’t sign in for another reason**
> If you have another problem, get help signing in.
> 3 votes

---
Tags: google-account, lost-phone
---


# Question
Title: Prevent app from reversing the screen and mouse movement on BlissOS
I have installed the latest BlissOS on QEMU VM. The app which I'm interest in works, but it reverses the mouse (dragging up will move the mouse to left, dragging down will move to right) and the screen.

Disabling auto-rotation didn't work.

Is it possible to avoid this app from reversing the screen?

# Answer
> 1 votes
Solution found by changing Android's "set orientation" to landscape.

---
Tags: screen, android-x86, auto-rotation
---


# Question
Title: Google two-step verification doesn't want to work. Pops up, I approve and nothing happens
Phone is a Samsung Note 9 SM-960F model. The phone is running Android 10. And I never experienced this problem on any other phone, model or Android version before.

Basically I am logged into my Google account. Every Google service works great. Except two-step verification.

* I get the "notification" in Chrome for example when I sign in on a new PC. All great.
* The phone makes a notification sound, the two step verification pops up.
* I tap "Yes", I get a toast notification "Approved".... and nothing happens.

What could cause this and how could I fix this?

# Answer
I've encountered this issue before and in the end it turned out to just be a server-side outage / traffic. Either wait it out after submitting or try again in a bit if it times out, but don't spam requests as it'd likely contribute to the delays. Feel free to confirm it's not an network/carrier/ISP connectivity issue on your end first (e.g., switch to mobile data or vice versa), but when it last occured I was quite peeved there was no mention anywhere on Google's end in support resources regarding ongoing outages.
> 1 votes

# Answer
I just had it now: Clicking yes has absolutely 0 impact on the button, as if the screen is frozen (no button vfx).

For me, the solution was to either reboot the phone and/or disable VPN: One of these two did the trick **immediately** after the reboot was done!
> 0 votes

---
Tags: samsung, google-account, google, samsung-galaxy-note-9
---


# Question
Title: How do I keep speech-to-text active in Gboard even during silences?
I often use Gboard's speech-to-text to do voice typing. However, every time I pause speaking for a few seconds, I have to reactivate this feature by clicking the microphone on the keyboard.

How do I keep it active for longer?

# Answer
> 0 votes
With Android 12 with a Google Pixel 6, one has to double tap on the microphone button:

# Answer
> 0 votes
I've been pressing and holding the voice button on gboard and letting go when I'm done speaking. It works flawlessly for me this way. Pixel 7.

I think it even goes into offline mode when you do this, so no lag.

---
Tags: gboard, voice-typing
---


# Question
Title: Problem sharing internet via WiFi Hotspot (tethering) while in foreign country roaming
I noticed, whenever I am in foreign country (i.e. DATA ROAMING) I can connect other devices to my android phones via its hotspot, but they (devices) have restricted access to internet.. In other words: My phone, where I would like to share internet via operator's data in foreing country roaming DOES have internet access, but devices connected to it via WiFi hot spot do NOT. As soon as I return to home country, the problem disapears and tethering works normally. This I've noticed on 2 Android phones I owned and tried: Nokia 6.1 and Motorola G10.

Vendors claim they do not have a fix for it, operator also claims he is innocent. Does it look more like a problem of Andorid OS, foreign operators, or my home operator ?

**Edit:** (based on Robert's suggestion)

**My home country:** Slovakia (Not to be confused with Slovenia)

**My home operator:** 4ka

**Foreing countries traveled:** Austria, Czech Republic, Germany, Netherland, Belgium, France, Luxemburg

**Foreign operators:** Any one I encountered. Really do not know their names.

Can anyone help to identify the source of the problem, please ?

# Answer
> 1 votes
Solution found!

**TL;DR**: Add `default,supl,dun` to the `APN type` field in your APN.

**Long story**:

I was experiencing the same problem with the 4ka operator (see my previous comment).

After a few hours of debugging, reading, and multiple try-error tests with several options in APN settings, I am able to access the internet on my Mac laptop via a Wi-Fi hotspot from my Android phone (OnePlus 8T) while I am roaming.

Evidence can be found here:

All setting of the APN used are here:

I hope it helps! :)

# Answer
> 1 votes
Recently operator 4ka started to distribute warning sms after a mobile station crosses country borders. In essence it gives the message: "For proper functioning of your internet access, please set your APN NAME to 'internet'"

So I did and interestingly enough it DID help !

Hence, there is a good chance they have likely started to investigate after many complaints of annoyed clients and automatically distribute this sms. Can't believe it took +-5 years to fix this problem.

---
Tags: wifi-hotspot, internet, wifi-tethering, roaming
---


# Question
Title: How to Add Google Account Without Syncing Contacts on android
I was looking to add a second account to my Android phone running Android version 12. The issue that I keep running into is that as soon as I sign in the contacts from that account are synced and my call records get all messed up.

There are some tutorials on the web that suggest that I turn the wifi (Internet) off as soon as I sign-in and then go to settings and disable contact sync.

I did try it but it does not work as the contacts are synced before I can turn off the interent.

I am looking for a permanent way and not a work around.

Thank you

# Answer
> 1 votes
Before adding the account, simply disable or take away contact permissions from the apps which are getting *messed up*. You can then go on to disable contact sync settings and enable or give the apps their permissions back.

---
Tags: contacts, sync, google-contacts
---


title: How to see the developer of an app?

text:
# Question
Title: How to see the developer of an app?
I have a Galaxy S21+ running Android 14. In the App Info, I don't see a way to tell which apps were made by which company. I'm especially interested in the pre-installed apps. Is there a way to do this?

# Answer
> 3 votes
"Developer info" is not something that is usually shown inside Android OS, but mostly only related to the app store.

---

On recent Android versions, in the App Info screen, there may be a menu to see the app entry in the app store:

* Samsung: App details in store
* Pixel: App details

Selecting it should open the app directly in the store. From there, the developer of the app can be found.

---

Otherwise, as stated in Izzy's comment, apps may provide in-app about page where the developer may also be mentioned.

---
Tags: applications
---


# Question
Title: How to force factory reset Samsung Galaxy S21 with low battery?
My Samsung Galaxy S21 phone is damaged so the battery won't charge when the charger is plugged in. However, the charger still supplies power to the phone. It's been plugged in and sitting happily at 5% all day. I want to do a factory reset, but it says I need at least 10%. There is no possibility of that. I want to reset the phone before I get a new one from insurance and have to send in this one.

How can I force it to reset, or if not, still ensure I wipe all my PII before sending it to Samsung?

# Answer
I used a free 3rd party app "Fast Factory Reset" that warned about the battery but still let me do it. It worked fine.

I was not able to get my hands on a low watt charger to test. FWIW, I plugged my standard charger into a Kill A Watt and it registered 1/1.3 W. If I am able to get a low watt charger before I send it in to insurance, I'll update the answer.
> 1 votes

---
Tags: samsung, battery, factory-reset
---


# Question
Title: How to backup the Android calendar file (is there such a file)?
Does anybody know which files I need to save in order to have a simple backup?

Reason for my question is, that my Galaxy Android smartphone lost all calendar data without any interaction. I found tons of apps, tons of sync stuff, but NO simple list of files to save. I do NOT want to save my data remotely on Google.

There must be at least one local file (database?) on my phone containing the synced calendar file (on my server, using ICSSync)

# Answer
> 6 votes
Android stores calender data (and contacts as well) into a SQLite database in the system. The format of that SQLite database differs between ROMs -- so at least for "normal users" it's not that good an idea to "simply" copy that SQLite file. Rather use a good backup app for this. A good example would be iCal Import/Export, which allows you to export your calendar to an .ics file -- and also to import from .ics files, e.g. for a restore.

This is just an example. As especially on Google Play apps happen to be unlisted, please refer to my continuously updated app list for existing solutions.

# Answer
> 3 votes
The app Mark mentions iCal Import/Export, has been forked and development restarted. The fork is called Calendar Import/Export (ics) and is available on the Play Store and on F-Droid. New features and a cleaner UI have already been implemented.

The app is FLOSS and development happens on GitHub, if anyone wishes to contribute.

# Answer
> 1 votes
Unfortunately, iCal Import/Export doesn't work on all Droid phones/OS versions. It's unclear why this is the case, but when I try to run it on my phone (HTC Rezound, Android 4.0.3) the app's initial screen displays for a brief fraction of a second, and then it reports, "Unfortunately, iCal Import/Export has stopped." Reviews on various webpages (e.g. http://www.androlib.com/android.application-comment.at-aichbauer-ical-qjjAD.aspx?p=2) are all either 5-stars or 1-star. People who can get the program to run on their phone love it. Virtually everybody who rated it 1-star got the same error I got, and could never get it to run.

When you go to the Google Play Store to download it, the app's author has put the following in the Description section, "*Attention* The application is currently NOT under development because of lack of spare time. The license is open source, so feel free to fork the app, or work as a contributor. Just write a mail to me!"

The evidence suggests that this is a pretty good program in search of a maintainer, and that it probably ran into some incompatibilities in later versions of Android that would be fixed if someone volunteered to maintain it.

# Answer
> 0 votes
Here is a well-supported and up-to-date solution on F-Droid:

and this is the project on GitHub:

---
Tags: calendar, backup
---


# Question
Title: How do you sync from one calendar account to another?
I am trying to migrate from a broken calendar account (no remote sync access, but the phone has all the data cached locally) to a self-hosted CalDAV calendar (connected to by DAVx). Both calendar accounts are in DAVx, and both are visible in calendar apps.

Question: How do you export an existing calendar to another calendar on the device? I have both the "Google Calendar" app and the default Calendar app that comes with LineageOS, but neither appear to support export/import---or at least I cannot find the option. There are *lots* of calendar events, so we need to do it in bulk.

With contacts, it is simple: you can export a .vcs to a file and import the .vcs to another contact account with the "Contacts" app. But with I can't figure out how to do the same thing with a calendar account.

Ideas?

# Answer
> 0 votes
Here is a well-supported and up-to-date solution on F-Droid:

and this is the project on GitHub:

See also this related question:

---
Tags: sync, lineageos, calendar, google-calendar, caldav
---


# Question
Title: Virtual device in android studio virtual device manager is not play protect certified
I downloaded Android Studio yesterday, so it should be fairly new.

I created 2 virtual devices using latest SDK, version 14 something.

Both device is not play protect certified when I check in:

Play Store --\> Profile --\> Settings --\> About

We can never certify any virtual device in android studio?

How can I certify my virtual device in android studio?

# Answer
I have never used Android studio but I am aware of `MEETS_VIRTUAL_INTEGRITY` field in apps testing for integrity

Quoting from Integrity protection for Google Play Games on PC for PC:

> The `deviceRecognitionVerdict` field contains a single value, `deviceRecognitionVerdict`, that represents how well a device can enforce app integrity

It goes on to describe the different types and relevant to your question

> `MEETS_VIRTUAL_INTEGRITY`: The app is running in a **virtual** Android environment with Google Play services, **currently limited to Google Play Games on PC**.

(Emphasis supplied)

Screen shot from TB checker, which I use for checking device integrity, just as FYI
> 0 votes

---
Tags: android-studio, play-protect, google-play-protect
---


# Question
Title: Home app: cast my screen without all the confirmation steps
I find the Home app the simplest and hassle-free way to mirror phone screen to a videoprojector or tv running Android tv, and the screen-mirroring the simplest way when casting video from a phone (given the limitations of casting directly from a video player, namely subtitles etc).

But I use this very often, devices are all connected to the same wifi, I expect it to start
with one click, and avoid all the confirmation steps I see each time. After opening the app (1st click), selecting "Devices" (2nd click) and then my device (3rd click), another 3 more clicks are needed:

6 in total!

Can that be changed?

---

As you may have suspected, my Samsung lacks the quick settings (drawer) button for casting.

# Answer
> 2 votes
Looking on Google play store for apps that would add a desktop/home cast icon/shortcut, I have found the Cast Menu Widget.

In order to get the quick settings button, the (under 1 euro) paid version of the above tool can be used - or, as said here, one can install Nugat/Oreo Quick Settings.

Both buttons (1st click) will first show the list of available devices (2nd click to select one), then the last confirmation option, "Start now" (3rd and last click).

---
Tags: android-tv, chromecast, screencast, screen-mirroring, google-home
---


# Question
Title: How to quickly factory reset an Android phone
Let us assume I am working/living in a potentially hostile environment and want to minimize the risk that somebody can access the data stored on my Android phone. The recommended way is to force-lock the phone to ensure that it cannot be accessed without the password, but this does not fully protect against data extractions applied directly on the phone. And going through the multi-step approach of resetting the phone via Settings is obviously not feasible under pressure.

So I am looking for ways to quickly factory reset on an Android phone. Something like "press one icon, confirm with one button = reset Android phone to factory settings".. with no passwords, no PINs... just quick wipe.

How can I accomplish this?

PS: I am aware that this may also lead to unexpected data loss in case the function is triggered by mistake. That is a risk I am willing to take.

# Answer
Each OEM (and likely individual model) will have their own custom MMI codes, which IMO would be among the fastest methods. For example, here's the applicable codes for OnePlus 8T+ 5G:

**Reset Your OnePlus Device**

> OnePlus lets you instantly wipe all data and restore your device to factory settings by inputting a variety of dialer codes, depending on how much information you want to preserve. For instance, you can enter \*#\*#7780#\*#\* to remove your Google account and all the apps you've installed, along with all data associated with them, but keep all other files like photos and other media files.
>
> \*#8778# ...............Resets device, can be canceled
> \*#\*#7780#\*#\* ..........Erases Google account, third-party apps, & all associated data. Can be canceled
> \*#\*#947322243#\*#\* .....Instant Data Wipe, BEWARE!!! Get out by booting into fastboot
> \*2767\*3855# ...........Completely wipes device & reinstalls firmware
>
> Be careful of what code you input however, as \*#\*#947322243#\*#\* will instantly reboot your device in preparation for a factory data wipe and reset, as opposed to \*#8778# and \*#\*#7780#\*#\* that can be easily canceled by hitting the back button.

This can be saved as a contact, then added to home screen as a widget. In my experience, it may not directly launch when invoked as a contact, so you may have to omit, e.g., the last asterick and manually input it instead, etc. This can likely be circumvented using some other automation tool, e.g., MacroDroid, etc., to implement a true one-touch solution.
> 1 votes

# Answer
There are many apps that will remotely wipe the data from your phone. I am using Kaspersky (for many things). Some of the features, on theft, is to locate teh device, lock the device, take a mugshot, wipe data...

But I have used Wheres my droid in the past. One of the many features is to wipe personal data when the phone is stolen.

Wipe Remove all personal data from the device.
> 0 votes

---
Tags: applications, factory-reset
---


# Question
Title: Replacing Android OS on Android phone with Linux OS
I'd like to entirely replace Android on my phone, which I plan to eventually root. I've learned so far that Linux Deploy can be used to run a full Linux distro alongside the Android OS, but really I want to replace Android OS. I'm willing to put Mobian (mobian-project.org) on there or just pure Debian. Is this possible yet in 2021?

# Answer
Ubuntu Touch from UBPorts is basically at a daily driver state if you have the right hardware.

I've run it on a Pixel 3a as a "weekend driver" and the performance is impressive, especially considering where this project was started in December 2022.
> 3 votes

# Answer
Short answer: NO.

Reasons:

* Hardware drivers are proprietary
* Building them without the source is extremely difficult
* Requires a lot of expertise and time
* Not possible unless you have low-level access to your device hardware (Meaning being able to flash without fastboot or EDL)

So yeah, stick to the answer that, NO, you can't replace Android entirely with Linux.

Something you can do is:

You can of course try using other AOSP-based OS like Lineage OS which are built on AOSP, so it is compatible with the default kernel for your device (This is also only possible if it is already built for your device)

If you want to run Linux alongside Android, there are a few ways:

* As you said, you can use Linux Deploy. (I have personally not used this)
* Or you can use PRoot with Termux which is a user-space implementation of chroot thus you can a virtualized Linux environment (similar to using chroot) but without the need for a rooted device. You can either use PRoot with scripts created by others via AnLinux or Andronix.
* Or you could always learn how it works and manually set it up :\>

And no, as time goes on, things won't change. You won't be able to install Linux on an Android device. This is not due to hardware incapability but rather it is how the smartphone industry works.
> 2 votes

# Answer
I could be entirely wrong, but here I go.

With postmarketOS and in recent years, people have worked hard to bring Linux to phones. One of the examples is OnePlus 6 - one maintainer worked hard to get it running. But here we are. It's not yet really in a daily-driving state where one can replace it, but for example, calling works.

So to answer your question, you could but would you be happy with this yet buggy state of Linux?
> 0 votes

---
Tags: rooting, root-access, linux
---


# Question
Title: How to connect mouse to Android phone via ADB?
I want to play an Android game on my PC but since my phone can play it better, I've hooked it up to my PC using USB with scrcpy and a bluetooth keyboard, however unfortunately, I don't have a bluetooth mouse. I also want to charge my phone with my computer while playing the game.

I use Mantis Mouse Pro to run the game with my keyboard but the scrcpy mouse doesn't appear natively so it can't be mapped. Maybe if possible, I'd even connect my USB PS2 Joystick.

Therefore, I wish to forward the mouse input directly via adb to my phone instead of using scrcpy's Windows mouse. Exactly how you would connect a wi-fi adapter to an Ubuntu VM installed in Windows.

How do I forward mouse input so it appears natively on my phone (with a black cursor)?

Thanks in advance.

# Answer
I figured a way out how to do it with https://github.com/Genymobile/scrcpy/blob/master/doc%2Fhid-otg.md#physical-mouse-simulation:

* Get scrcpy from your package manager
* Connect adb
* `scrcpy --hid-mouse` or `scrcpy -M`  for short
> 1 votes

# Answer
ADB can't do that. It has no protocol for redirecting USB connections. It can redirect TCP/IP connections, but a USB mouse does not use TCP/IP. A Bluetooth mouse seems to be your easiest solution.
> 0 votes

---
Tags: adb, scrcpy
---


# Question
Title: How do I update my LineageOS installation?
I have a Motorola Moto E LTE 2nd Generation Android phone (`surnia`) running LineageOS 14.1.20170303-NIGHTLY-surnia.

I installed LineageOS by following the instructions in the wiki: unlocking the bootloader, writing TeamWin's recovery program, wiping the partitions and installing LineageOS and OpenGApps Pico from the zip files.

Now that I have my phone running smoothly, I'd like to keep it up-to-date and secure.

* How do I update LineageOS?

Is there a setting on the phone that I need to enable to have passive updates? Or is there an option I can activate to update to the latest build when I've backed up my data and I'm ready to proceed?

I can't find any information on the LineageOS wiki regarding updates.

I could update LineageOS by going back into TeamWin and writing the latest .zip, but that seems a bit drastic.

# Answer
If you go to your phone’s settings, then “About phone”, you’ll see the phone’s status with an entry at the very top called “LineageOS updates”. In there you can configure how often your phone should check for updates, and you’ll also see a list of available updates. You can tap the “Download” button to download an update, and once it’s finished downloading, the button will say “Install” and tapping that will reboot your phone to TWRP and install the update.
> 0 votes

# Answer
Since other answers were correct but are now outdated, on my Lineage 19, I went to ⚙ **Settings \> System** and found the **Updater** in that menu.

More instructions can be found in LineageOS.org's Wiki.
> 0 votes

---
Tags: lineageos
---


# Question
Title: What is the difference between ‘used’ and ‘visited’ an app on google Activity page?
I’ve seen these two entries whilst looking at my google Activity page and just wanted to know the difference? I assume ‘used’ means I actually opened the app and used it so what would ‘visited’ an app mean?

# Answer
> 3 votes
"Used" means you opened and used the app, which implies you had it installed at the time.

"Visited" means you went to the app's page on the Play Store, or, presumably, another app store. This can be of interest to parents who want to keep track of their children's apps and usage, as described here.

---
Tags: google-play-store
---


# Question
Title: Backup Android to PC over P2P WiFi connection
I want to automatically backup my Android (at least the media files) to my PC over a WiFi connection when both the Android & PC is connected to the same WiFi home network. It should probably be possible to transfer the files directly P2P without needing to store them on some unknown server somewhere. Preferably, I want it to happen fully automatically when it connects to my home WiFi & I have my PC running, so I don't even have to think about doing backups anymore.

I have been searching for the solution, but the closest solution I have found so far is some apps that create a local FTP Server on the phone, where I potentially can manually pull the media files out of the phone from my PC, but I haven't managed to establish a working connection with any of the apps so far.

Is it possible to backup Android to PC over P2P WiFi connection automatically?

Edit\_1:

Android 8.0.0 (not rooted)

Windows 7

# Answer
I was looking for the answer to this and found this question. I went with a simpler method compared to most of the above and it seems to work well. I already use Syncback FREE for my home computers to back up everyone's machines to a central media computer I use as a semi-NAS.

By installing SyncbackSE on the media computer and putting "Syncback Touch" on my phone, I'm able to choose my phone as a source device in the Synckback profile and use it as a backup system just like with my computers. The only differences are that SyncbackSE isn't free (but it's cheap) and all the configuration and management is done on the computer, not the phone (bonus for me, but maybe not for someone using a NAS without an OS and GUI.
> 0 votes

---
Tags: backup, wifi-direct
---


title: File does not be sent in KDE connect

text:
# Question
Title: File does not be sent in KDE connect
I have galaxy J7 and lineageOS 17.1. When I send a file with KDE connect from my phone to another device (another phone or a laptop) I am successfull, but in reverse not. For example when I try to send a file with KDE connect from my laptop to my phone a notification appears saying "failed receiving file from ...".

# Answer
1. Ensure that the phone KDE Connect app settings are set for this. Go to the phone's Settings, then to the settings for Apps, select KDE Connect, and then set "Storage Access For This App" to 'Allow'.
2. Ensure that, in the phone KDE Connect app, you click on the device (e.g., a laptop) you're connecting to -- and then set the 'Share and receive' settings *for that device*. Without this device-specific setting, the file transfer attempts may fail.
> 0 votes

---
Tags: networking, lineageos, connection-issues, file-transfer, files
---


# Question
Title: How to disable bloatware for secondary users?
I have a rooted Samsung A7 Lite tablet. I rooted it and installed Ice Box from Google Play store. It is given root access in Magisk and I use it to disable some Samsung bloatware.

However I realize that these apps are installed on the secondary user that I created. In the secondary user, Magisk app does not detect root status and Ice Box cannot obtain root access either. Non root mode of Ice Box doesn't work either because that requires that there is no additional users (according to its doc) so that defeats the purpose.

I wonder if there's a way to disable the bloatware in the secondary user from the owner user, or delete them completely.

# Answer
> 1 votes
To enable root on the secondary user:

* In Magisk settings → multi user mode, select *user-independent*.
* Install Magisk Manager *only* on secondary user (in case, it's not present) , optionally reboot and check if secondary user has root.

You can then use Ice Box to debloat.

---
Tags: root-access, samsung-galaxy-tab, magisk, bloatware
---


# Question
Title: Possible to use h264_mediacodec hardware encoder in Android?
Is it possible to use hwaccel h264\_mediacodec encoder in Android?

Here is the error I get in Termux:

```
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_mediacodec))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help                   [swscaler @ 0x7493629240] deprecated pixel format used, make sure you did set range correctly
    Last message repeated 3 times
[h264_mediacodec @ 0x73933efe40] Use 1 as the default MediaFormat i-frame-interval, please set gop_size properly (>= fps)                             [amediacodec_ndk @ 0x73633f47d0] Encoder configure failed, -10000                                   [h264_mediacodec @ 0x73933efe40] MediaCodec configure failed, Generic error in an external library
[vost#0:0/h264_mediacodec @ 0x73833f5b10] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.           Error while filtering: Generic error in an external library                                         [out#0/mp4 @ 0x73333f9070] Nothing was written into output file, because at least one of its streams received no packets.                             frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=00:00:01.02 bitrate=   0.0kbits/s dup=1 drop=0 speed=2.94x
[aac @ 0x73933f20c0] Qavg: 5968.975
Conversion failed!
~ $

```

# Answer
> 1 votes
The default h264 codec shipped with ffmpeg in termux seems to be broken (also mentioned here: Hardware accelerated ffmpeg using MediaCodec on Android? )

Meanwhile, you can use the software libx264 encoder with `-c:v libx264` as mentioned in this comment on the packages repo: https://github.com/termux/termux-packages/issues/18023#issuecomment-1741926145

---
Tags: hardware-acceleration
---


# Question
Title: Checking via a script whether a given app is prohibited from installation on a given device?
(NOTE: the text of this question has been updated to make it much clearer than before as to what I'm actually looking for).

I'm running stock Android 11 on one device and stock Android 13 on another device.

I'd like to write a command-line script (not a Java-implemented app) that can run on both of these systems and on many other Android devices/OS's, and which can check whether or not a given app would be prohibited from installation via the Play Store on the specific device where the script is running.

To be clear, I am not simply interested in whether the app *exists* in the Play Store on the web. I'm looking for something more specific:

Some apps that exist in the Play Store on the web for general installation might be prohibited for installation on a specific, particular device. This could be for security reasons (*e.g.*, DEVICE integrity is not being reported on the device), or it could be because the device's Android version is too low, or there could possibly be other reasons. In these cases, the app does not even show up in the device's Play Store when searching for it to be installed, although the same app will indeed show up in a Play Store search on other devices that do not have these kinds of issues.

I want to be able to somehow query the current device's Play Store installation (not the generic, web-accessible Play Store pages) to see whether the given app might be prohibited for installation on the current device.

One example is the Netflix app. If the phone does not report DEVICE-level integrity, the user will not even see Netflix as existing when searching it in the Play Store on that particular device.

This is the case I'm trying to find a solution for.

For example, let's assume for the purpose of this discussion that the app happens to indeed be Netflix. That particular app's package name is "com.netflix.mediaclient". If my proposed script is named "app-in-playstore.sh", I'd like to be able to do the following, and have the script print either "false" or "true" to stdout, depending on whether or not this Netflix app is prohibited from installation via the Play Store on the device upon which the script is running, or whether its installation is indeed allowed on that particular device ...

```
/system/bin/sh app-in-playstore.sh com.netflix.mediaclient

```

(or perhaps preceded with "su -c" on a rooted device).

If the current device is reporting DEVICE integrity at the moment this script is being run, the script should print "true", because Netflix would indeed show up in the device's Play Store as installable.

If the current device is not reporting DEVICE integrity at the moment this script is being run, the script should print "false", because Netflix would not show up in the device's Play Store as installable.

To be clear, this isn't solely related to Netflix. I'm just using it as an example here, because I happen to know that it indeed will not show up in the Play Store if the phone is not reporting DEVICE integrity. I'm sure there are other apps that are treated similarly, and I want my script to be able to identify these other apps in the same way.

Is writing such a script possible? And if so, how could it be accomplished?

Thank you very much in advance.

# Answer
Based on the helpful comment by @Robert, it looks like the only way I could automate the checking of whether or not Google will prohibit the installation of a given Web-store-resident app on a given device of a given user would be to make use of "uiautomation"-based interaction with the Play Store screen on the device itself.

This could be done via the `uiautomation` utility itself, or also via `Tasker` working with `AutoInput`.

I was hoping to avoid that kind of solution, but perhaps I'm stuck with it.

In any case, I'll leave this question open, in case some new information might come this way in the future that could possibly help with this.
> 0 votes

---
Tags: applications, google-play-store, scripts
---


# Question
Title: How can I connect my Samsung Galaxy S23 Ultra with my Divoom Timebox Mini?
How can I connect my Samsung Galaxy S23 Ultra with my Divoom Timebox Mini?

I turned on both of them, and tried to pair the Bluetooth from the S23 but that doesn't work:

# Answer
> 0 votes
It turns out that another device was paired via Bluetooth with the Divoom Timebox Mini: disconnecting that other device allowed the Samsung Galaxy S23 Ultra to successfully pair with the Divoom Timebox Mini.

---
Tags: bluetooth-pairing, samsung-galaxy-s-23
---


# Question
Title: How many tabs are open in chrome browser? (Above 100)
When the number of tabs reaches 100, the tab counter turns into a smiley face like so :D

I wish to know how many tabs are open, without doing the manual count. Is there a way?

# Answer
> 2 votes
A more technical approach is to use `adb` and `chrome_devtools_remote` to get a list of ALL open tabs

Short how-to:

1. Install an Android SDK, we only need the `adb`.
2. Connect your phone to your computer via a cable.
3. In a terminal, run this to get a list of connected devices:

```
./adb devices -l

```
4. Run this:

```
./adb forward tcp:9222 localabstract:chrome_devtools_remote

```
5. Open http://localhost:9222/json/list on your computer to get a JSON list of your open Chrome tabs.
6. In short, the count of the `{` characters in the JSON is the number of tabs open in your Android Chrome.

Read how to do this in full at "When you never close tabs on your mobile Chrome browser" by Marcin Piczkowski, in Dev.to

# Answer
> 11 votes
This is an Easter egg coded 4 years ago

From this XDA post\- you need a *rooted device* ( you can't access `/data/data/` without root )

> 1. Download a root explorer capable app such as ES file explorer
> 2. Navigate to chromes profile directory, mine was at /data/data/com.android.chrome
> 3. Open the app\_tabs folder
> 4. You should now see a single folder labeled "0"
> 5. Select it and open its properties, under file count deduct 1 and that will be how many tabs you have open currently, deduct 1 because 1 file in there is only an overall tab state file

Verified on my device ( Moto X Play, 6.0.1, Chrome `52.0. 2743.91`) when the tabs open are 4 = `Files` (5) minus one

# Answer
> 11 votes
Google Chrome on a Galaxy Z Fold4 (as of April 20th, 2023):

1. Tap the "Switch or close tabs" button (i.e. the ":D" button)
2. At the top right, tap the vertical ellipses button "⋮"
3. Tap the "Select tabs" menu item
4. Tap the "⋮" button again
5. "Select all"

At the top left, look at one of the shocks of your life:

# Answer
> 6 votes
There is actually a way to see how many tabs you have open without rooting the device or doing any other things people are suggesting

Just simply, enable Talkback mode in accessibility features. Then when you hover (if you have Bluetooth mouse enabled) or tap the tab icon (with your finger) (the :D), it will tell you how many tabs you have open. Like on mine, it said 713 tabs open.

(warning, with grouped tabs (more than 1 tab in group) it counts that as 1 tab it doesn't count them all. so if you have 7 groups of 100 tabs open it will only say 7(show too))

# Answer
> 2 votes
## How to count your open Chrome tabs in Android by looking at your synced Android tabs (done from a computer)

This is really dumb that Google won't just show the number in Chrome on the phone instead of showing `:D` past `99` tabs, but this is the best I can come up with. (GOOGLE, PLEASE FIX THIS!)

Note: if someone knows how to use the Google APIs I wonder if they can script this and count this automatically!

1. On a *computer*, NOT on a phone, go to your "other devices" Chrome history, and find your phone device (for me it is "Pixel 2"). Note: for this to work, you must be signed into the same Google account on both your computer's Chrome browser as well as in your phone.
    1. In your Chrome browser, press `Ctrl` \+ `H`, then on the left side, click "Tabs from other devices"
    2. OR, in your computer's Chrome browser, just navigate straight to here: `chrome://history/syncedTabs`
2. You'll see something like this:
3. Find the location to the left of the first icon next to the first link in the list. This location is marked in yellow in the image below. Left click on this location and drag right to highlight a word or two, as shown here:
4. Now manually scroll down the page until you find the *last link* in the list for this device (where this device is your phone, or course). Once there, `Shift` \+ `Click` at the end of the last row to highlight all the way down to the last row, as shown here. I clicked at the location marked in yellow: .
5. Now, use `Ctrl` \+ `C` and `Ctrl` \+ `V` to copy-paste all of this into your favorite text editor/code editor which shows line numbers. I like Sublime Text 3. I think it's great!
6. Voilá! The number of lines you have is equal to the number of tabs you have open in Chrome on this device--which is my Google Pixel 2! I have `494` open tabs: . Indeed, this is way too many. Next question I have: how do I mass-close them?: How do I close all, or many at once, Chrome tabs on Android on a phone?

If someone can script this process, please do! You may even be able to make it a Javascript bookmarklet or something which is runnable in Chrome on a PC or phone? I don't really know Javascript, but here are some of my favorite bookmarklets I use regularly in GitHub code review, for example, if this helps get you started writing bookmarklets to solve this problem: https://gist.github.com/ElectricRCAircraftGuy/0a788876da1386ca0daecbe78b4feb44.

# Answer
> 2 votes
Beside the answer of Mat, if you have a stylus (like Samsung Galaxy Note), you can also hover on the tabs \[:D\] button to see your open tabs count.

##### Update 2022-10-01

This now shows "Switch or close tabs", it doesn't show the tab count anymore.

# Answer
> 1 votes
With some experimenting, swiping and manual counting, I've found that swiping will move a max of 25 tabs each time (depending on how strong you swipe). I think this is a programmed constant, although I haven't checked if the code is available to confirm the number.

My shortcut for counting tabs has become to swipe from one end to the other, counting the number of swipes, and multiplying by 25, giving a good enough approximation.

# Answer
> 1 votes
There's a new way to find number of tabs now - that doesn't require complicated steps or connecting to a computer:

1. Select top right action
2. Click on the select tabs
3. Then click on select all from top right menu again

You get the total tab count

# Answer
> 0 votes
Another way u can use on every operating system you want, is to check google account sync review. It will show you how many tabs you have opened on all devices you have this account on (if more than one device). Shows you bookmarks and some other information.
Anyway i don't know why but i think it doesn't count chrome tab folders because i used another way before (from answers here, using google select all tabs.) And it was different from that. Anyway i hope it helps but the better a easier way is what Mohammad Badrah said up there in answers.

---
Tags: chrome-for-android, browser-tabs
---


# Question
Title: Adding a total in a cell when a checkbox is ticked in an adjacent cell
On my budget spreadsheet, in the 'amount' column is the different direct debits going out each month, then I tick the checkbox in the 'gone out?' column when it goes from my account. I'm wanting to add up the the different amounts in the 'amount' in the highlighted cell when a checkbox gets ticked. I'm using Google sheets on android

# Answer
> 1 votes
If your amounts are in the range B3:B23 (for example - I can't see the range from your screenshot), then you could use:

```
=sum(filter(B3:B23,D3:D23))

```

We are generating an array corresponding to all amounts where the corresponding *gone out* tickbox has been ticked, then summing them.

---
Tags: google-sheets
---


title: HTTPS filtering breaks some apps

text:
# Question
Title: HTTPS filtering breaks some apps
I have enabled HTTPS filtering in AdGuard. I installed AdGuard's certificates, and the Magisk module that moves the certificates to the system store. Nevertheless, some apps don't work. Why is this? If the certificate is in the system store how can they tell the difference? Also is there a way to tell which apps actually use HTTPS?

# Answer
> 7 votes
Most likely this happens because the apps not only perform certificate validation but also **certificate pinning**.

For certificate validation the validity of the server certificate and the certificates of the certificate chain (this is what you can bypass by installing the custom root CA certificate).

In addition, apps can do certificate pinning: The app includes a check if the used root CA certificate is the expected one. As the companies are buying their server certificate, they exactly know which CA certificate the connection should use. If the app then finds the AdGuard root CA certificate, the connection is rejected. A certificate pinning check cannot be bypassed without modifying the code of the app.

I know that Google (e.g. Play Store) and Facebook (various apps) use this certificate pinning to prevent breaking HTTPS connections.

Bypassing certificate pinning is possible on rooted devices, if the app is not too obfuscated. Those tools are usually based on LSPosed/Xposed or Frida. If AdGuard breaks all HTTPS connections, you could use TrusteMeAlready or JustTrustMe and enable it only for problematic apps (note that those modules not only try to disable pinning but also disable TLS security completely, so it is important that AdGuard intercepts those connections).

For Frida, there are various scripts that can disable pinning in some apps. A nice article about Frida and certificate pinning can be found here: Defeating Android Certificate Pinning with Frida

# Answer
> 2 votes
I use Adguard but haven't come across any problematic apps. To supplement Robert's answer, Adguard knowledgebase What is HTTPS filtering says

> However, HTTPS filtering has its drawbacks. The *most important one is that it hides from the browser the actual certificate of the website. Instead, the browser sees the certificate issued by AdGuard.*

(Emphasis supplied)

While it talks of web based Adguard, the concept remains the same for Android apps. The only solution I see for such apps is to exclude those apps from Adguard using the app management icon in the center of icons displayed at bottom.

Maybe the latest version of the app (4.3) addresses this issue? Though from the release notes I don't see anything related, except for one specific app, which this release fixed.

You may as well raise the issue of the problematic apps in the Adguard forum for them to address, just as they did for the app linked above.

---
Tags: certificates, ads, https, android-14
---


# Question
Title: Android 4.0.3 has virtual keyboard with Y key in wrong place?
Why the virtual keyboard of Android 4.0 has a different qwerty virtual keyboard? It seems the Y is in the wrong place.

Is it some configuration? Where it is?

Screenshots (click images for larger variants)

# Answer
> 12 votes
Are the Y and Z keys switched?

It sounds as if you have the wrong language set for your keyboard (or your system, as it defaults to the systems language). Some European keyboard layouts, possibly German, have a QWERTZ layout instead.

Settings \> Language & input \> Android keyboard (Settings icon) \> Input languages

# Answer
> 3 votes
Had the same problem. Go to Settings -\> Applications -\> Manage applications -\> All -\> Your keypad (Samsung Keypad for me). Force stop and then clear data. Solved the issue for me.

# Answer
> 2 votes
I solved installing Hackers keyboard of Android Market.

# Answer
> 1 votes
I had the same issue, and solved it by doing this:

* Open keyboard and click the settings icon
* Click input language
* Uncheck any languages you don't need

This fixed the problem for me.

# Answer
> 0 votes
I solved this problem here in the UK by changing the language to English (Ireland) keyboard and it was fine, the mic icon said EN again too, not DE which it had changed itself to. After that, I changed back to the UK and it was fine too. Weird glitch.

# Answer
> 0 votes
* Open Settings
* Go to "Locale & Text"
* Then "Samsung keypad"
* Then "Input languages"
* Only tick mark on English US (note: unmark all other languages if it's ticked).

# Answer
> 0 votes
Hold the spacebar in and swipe left or right to quickly change languages you have it set to English Canadian atm.

# Answer
> 0 votes
I was having the same issue with the W and Z being in the wrong place and was going into the keyboard settings under my phone setting and still was not finding how to fix it. Doing what was suggested here, it did indeed change the letters but I was using Swift keyboard, so when I was changing my phones keyboard, it was not changing the Swift keyboard settings. I finally found a language option within the actual keyboard itself! Ah ha! Once I tapped the language option I found that you can choose from many different layouts on the actual keyboard. This is how I fixed it:

If you're using Swift keyboard, go in like you're sending a new text, from here tap the settings icon (sprocket, found on the top bar of the keyboard), then the sprocket+ icon on the right. You should see the 4 boxes that you can change for the keyboard (Languages, Themes, Typing, Account). Tap languages and then tap the language that you have set up under Your Languages. This will give you the option that you have now, but if you swipe to the left, it will show all of the different options you can choose from. Find QWERTY (or whatever you want to use) and tap on that keyboard. You will see a check mark, showing that you will now use this option. Now go out and try the keyboard again and you will see that your keyboard is what you wanted it at..... then do a happy dance.

# Answer
> 0 votes
For Samsung phone with Samsung Keyboard:
Work On Android 14 (!!!)

1. Open "Settings" app
2. General Management (near the bottom) \> Samsung Keyboard setting \> Languages and types \> Upper right corner (3 dots menu ⋮) \> Check for updates
3. Update English (US) with refresh/update button

---

Possible cause:
Using Smart Switch which restores old and outdated setting to new phone

---

Steps with screen capture:
How to Add, Change, and Manage Language in Samsung Keyboard - TechWiser

---
Tags: 4.0-ice-cream-sandwich, settings, keyboard
---


# Question
Title: Create a complete backup of the Whatsapp "Media" folder by deleteing all the .nomedia files in all the subfolders
WhatsApp stores all ***sent*** and ***received*** **images**, **documents**, and **videos** in the following file structure:

Internal memory \>\> Android \>\> Media \>\> com.whatsapp \>\> Whatsapp \>\> **Media** ------ **(A)**

This **Media** folder has folders named

* WhatsApp Audio
* WhatsApp Documents
* WhatsApp Images
* WhatsApp Video
* WhatsApp Voice Notes

Now, each of the above five folders has two sub-folders:

* Private
* Sent

These two sub-folders have **.nomedia** files inside them.

I have manually deleted all the .nomedia files from all these sub-folders and sub-sub-folders before backing up the chats using Chat backup in WhatsApp settings. However, these .nomedia files are getting re-created every time I tap "Back up now".

---

To go into a little more detail as to the **steps** I have followed, they are, in chronological order:

1. Clear all apps from my Android phone RAM (OnePlus 7 Pro).
2. Open app WhatsApp.
3. Go to Settings \>\> Chats \>\> Chat backup (but do not tap anything).
4. Tap the center circle (Home button) so that WhatsApp is **not exited in the usual manner**.
5. Open a file explorer app (Solid Explorer) and go to the Whatsapp **Media** location mentioned in **(A)** above.
6. Delete all the .nomedia files in all the folders, sub-folders and sub-sub-folders inside this location.
7. Tap the center circle (Home button) so that Solid Explorer is not exited in the usual manner.
8. Tap the recent apps button and go to WhatsApp. Now, I am on the same screen on WhatsApp as I had left it in Step 4 above (Settings \>\> Chats \>\> Chat backup screen).
9. Tap "Back up now"
10. Wait on the same screen till the backup is complete.

---

After following the above steps, I see that .nomedia files have been created inside all the folders that I had deleted them from, with the timestamp on each equal to the exact time when I tapped "Back up now" in Step 9 above.

This would mean that the data in the Private and Sent folders inside each of WhatsApp Audio, WhatsApp Documents, etc. have not been backed up.

Can anyone suggest a way so that the data inside those folders are also backed up?

Or if possible, share a different method so that I can have the data inside those folders in my backup?

# Answer
* When you make a backup to Google drive from the chats option or schedule it, *everything* (including all media) is backed up and the same when restored on a new device.
* IMO, the purpose of that `.nomedia` is only to prevent those images etc showing up in your gallery app or videos showing up in video player,etc. Edit: See this WhatsApp FAQ (which is probably not updated since you say `.nomedia` files are automatically created on deletion)

> You can also create a `.nomedia` file in the WhatsApp images folder. Please note this will hide all your WhatsApp photos from your phone's gallery.

* In no way do these `.nomedia` files hamper backing up and restoring from Drive backup.

This exercise of yours in deleting those `.nomedia` files is pointless,when your aim is to create a backup that can be restored on a new device as you clarified in comment.

I've backed up to drive and restored to new devices/old devices several times without messing with `.nomedia` files. Only point to note is that while restoring text messages are restored first, and media restored when you are connected to a Wi-Fi.
> 1 votes

---
Tags: applications, backup, whatsapp-messenger
---


# Question
Title: How do I determine frida-server version on device?
I did not push and frida-server manually on device but I can connect to rooted device with frida-ps and adb enabled. I have magisk and shamiko and Lsposed. Some post suggests that magisk has its own version of frida installed. How do I get details of that installation with frida-tools on my computer?

# Answer
I discovered that it's possible to emulate the list of processes using `frida-ps -U` *without* running `frida-server` on the android device. Details:

Why you make frida-ps -U return all the process even if the frida-server is not running on the device ?

However you'll need frida server (or frida gadget) if you want to instrument an app

That clarifies that non of my magisk modules run frida and the only server are the ones that I install myself and the frida-boot magisk module (which I did not install either)
> 1 votes

# Answer
Magisk does not include Frida, but there is a Magisk module available which includes frida-server and starts it automatically at boot time.

I don't know if there is a way to check the frida-server version e.g. within a Frida script but you can use the traditional way via `adb shell`:

* Open a new shell via `adb shell`
* Get root permissions by executing `su`
* Check the path of a running frida-server instance via ps: `ps -Af | grep frida-server`
* Use the full path of `frida-server` shown in the ps output and execute it with the `--version` option
> 1 votes

---
Tags: adb, magisk
---


# Question
Title: Fix ownership issue with Titanium Backup creating backups with media_rw as the ownership
Normally, Titanium Backup saves backups with its ownership. For example, `u0_a252`:

```
-rw------- 1 u0_a252  u0_a252   539 2021-11-07 09:52 com.application.zomato-20211107-095236.properties

```

However, it sometimes saves backups with `media_rw` ownership:

```
-rw------- 1 media_rw media_rw 963K 2021-11-07 09:00 net.bikerouteplanner-667db7c2a87ed259454c457130013a1a.apk.bz2

```

The backup directory is in `/sdcard/`, internal storage.

These files can't be read by users or even by root. It prevents me from easily syncing the files to an external server or copying them off before doing a factory reset.

I've tried `chown` in `adb` with `su`, but the ownership isn't changed. The solution I've found is to reboot to the bootloader, boot TWRP, and change it in an `adb shell`.

I've found nothing in web searches other than to use TWRP. I found nothing going to the cause of the bad ownership other than perhaps android taking them as media files. I believe the problem started with Android 11.
I am currently running Android 11 on a Pixel 5, rooted with Magisk.

# Answer
> 3 votes
I found a workaround/solution.

Go into Titanium Backup, Preferences, Backup folder location. Change the storage provider to "DocumentProvider" storage which shows up as 'External Storage.'

It's important that 'use the current folder' be used in the selection. I let it be set to the storage root (`/sdcard/`), then set it back to my Titanium Backup folder.

# Answer
> 0 votes
I found the solution here. It's frustratingly simple:

```
$ adb shell
$ su -
# cd /sdcard/TitaniumBackup
# chgrp "$(find . -maxdepth 0 -printf '%g')" ./*

```

---
Tags: android-11, titanium-backup, android-12
---


# Question
Title: What does int, jit, fast, and portable mean in build.prop's dalvik.vm.execution-mode?
There are many build.prop tweaks on the internet, and some says `dalvik.vm.execution-mode` should be `int:jit`, and some says it should be `fast:jit` or even in a reversed order as `jit:fast` for performance. What is the difference between `int` and `fast`, and does the order matter (before and after the colon)? My phone is running Android 4.4.2 KitKat.

Edit: Just a note, ART is not supported in my device (Samsung Galaxy Note 2), even if I install the dex2oat program and libart.so, it won't work.

# Answer
### Summary

These are the values for Dalvik VM runtime:

* fast: optimized for the current platform, and might consist of hand-optimized assembly routines (default)
* portable: written in C and expected to run on a broad range of platforms
* jit: just-in-time compilation

As for the order, the base source code only recognizes `int:<mode>`.

---

According to dalvik/docs/embedded-vm-control.html,

> ## Execution Mode
>
> The current implementation of the Dalvik VM includes three distinct interpreter cores. These are referred to as "fast", "portable", and "debug". The "fast" interpreter is optimized for the current platform, and might consist of hand-optimized assembly routines. In constrast, the "portable" interpreter is written in C and expected to run on a broad range of platforms. The "debug" interpreter is a variant of "portable" that includes support for profiling and single-stepping.
>
> The VM may also support just-in-time compilation. While not strictly a different interpreter, the JIT compiler may be enabled or disabled with the same flag. (Check the output of `dalvikvm -help` to see if JIT compilation is enabled in your VM.)
>
> The VM allows you to choose between "fast", "portable", and "jit" with an extended form of the `-Xint` argument. The value of this argument can be set through the `dalvik.vm.execution-mode` system property.
>
> To select the "portable" interpreter, you would use:
>
> ```
> adb shell setprop dalvik.vm.execution-mode int:portable
>
> ```
>
> If the property is not specified, the most appropriate interpreter will be selected automatically. At some point this mechanism may allow selection of other modes, such as JIT compilation. Not all platforms have an optimized implementation. In such cases, the "fast" interpreter is generated as a series of C stubs, and the result will be slower than the "portable" version. (When we have optimized versions for all popular architectures the naming convention will be more accurate.)
>
> If profiling is enabled or a debugger is attached, the VM switches to the "debug" interpreter. When profiling ends or the debugger disconnects, the original interpreter is resumed. (The "debug" interpreter is substantially slower, something to keep in mind when evaluating profiling data.)
>
> The JIT compiler can be disabled on a per-application basis by adding `android:vmSafeMode="true"` in the application tag in `AndroidManifest.xml`. This can be useful if you suspect that JIT compilation is causing your application to behave incorrectly.

Also, according to dalvik/docs/porting-guide.html,

> ## Interpreter
>
> The Dalvik runtime includes two interpreters, labeled "portable" and "fast". The portable interpreter is largely contained within a single C function, and should compile on any system that supports gcc. (If you don't have gcc, you may need to disable the "threaded" execution model, which relies on gcc's "goto table" implementation; look for the THREADED\_INTERP define.)
>
> The fast interpreter uses hand-coded assembly fragments. If none are available for the current architecture, the build system will create an interpreter out of C "stubs". The resulting "all stubs" interpreter is quite a bit slower than the portable interpreter, making "fast" something of a misnomer.
>
> The fast interpreter is enabled by default. On platforms without native support, you may want to switch to the portable interpreter. This can be controlled with the `dalvik.vm.execution-mode` system property. For example, if you:
>
> ```
> adb shell "echo dalvik.vm.execution-mode = int:portable >> /data/local.prop"
>
> ```
>
> and reboot, the Android app framework will start the VM with the portable interpreter enabled.

---

Additional reading:
> 2 votes

---
Tags: dalvik, build.prop
---


# Question
Title: Cannot install apps or take photos after removing corrupted micro SD
I have a Moto e30 with Android 11. Around 5 months ago I inserted a 128GB micro SD card to add some extra storage, which I set in the options to be used as internal storage, not portable storage. I believe it has around 20GB of photos, as well as several apps stored on it. 2 days ago, the card registered as corrupted, and I could do nothing aside from log in and out, and open and close settings, so I took it out.

Since taking it out, I haven't been able to take photos, download files, or install any new apps, despite having only used 16 of the 32GB of storage in my phone. I have reset camera settings and cleared google play store cache, which changed nothing. Are there any ways to fix this so that my phone recognizes it still has storage.

I am aware of the option to forget the micro SD, but I would like to get an adapter and try and transfer the data on it to a computer first.

# Answer
> 1 votes
## Preparations

Read through this entire answer before you start doing any of it.

## File systems

Managing the data you store in a phone requires that some of the data capacity be used for "housekeeping" data. The housekeeping data is things like the names of files, their size, where to find them and so on. This does not take up much space, but it's absolutely vital: without it, none of the data on the phone can be used, or even found.

When we talk about the combination of your data and the housekeeping data, we call that a "file system."

When you set up the card as "internal storage," you told the phone to use the card as an extension of the built-in storage of the phone, and to extend the file system of the built-in storage onto the card. There was just one file system for all your storage.

The problem with that is that you have two separate things that can go wrong: the built-in storage and the card. Because they share a file system, if *either* goes wrong, the *whole* file system gets corrupted. And that's what's happened to you.

## Storage reliability

Storage cards are much more likely to fail than built-in storage. The main reason for this is that the cards are removable, and get handled by humans. That means that dirt and grease get on their contacts, which can spoil the communication between the card and the phone. The built-in storage has soldered contacts, made in clean conditions (Motorola is a pretty good manufacturer, and will have assembled the phone properly). The secondary reason is that cards are sold on price, which creates an incentive to make them cheaply and skimp on quality control.

## Backups

Yes, get an adaptor and see if you can recover anything from the card using a computer. You may have to wait a day or two for the adapter: Boxing Day is not a good day for buying stuff in the English-speaking world.

It sounds as if your phone is still sane, but unwilling to alter the part of the file system that it still has access to. That's the right way for it to be behaving. It is sufficiently messed up that you should *not* be trying to take pictures, install apps or download files. What you should be trying to do right now is back up all the data the phone can still see onto your computer. *You are at serious risk of losing all that data.* If the data matters to you, getting it off the phone is the important thing.

## Getting back to a working device

Your Motorola *might* have a manufacturer-specific way of resetting the built-in storage without wiping other things. If not, you're going to have to factory-reset the phone, which will **wipe the built-in storage**. Once you do that, you won't be able to recover any more data from the built-in storage. This is why you should put effort into backing up the data before you do the factory reset.

That should get it working again. Check that it does.

Next, make sure that you've got everything that you can off the card using the computer. Then put the card back in the phone and tell the phone to format it as **portable storage**. This will wipe the card, so you won't be able to recover any more data from it afterwards.

## Afterword

Now you have a working device and, hopefully, some of your data. You will almost certainly have lost a lot of it. Hopefully, you now understand that using a card as "internal storage" is a bad idea.

I'm surprised that modern Motorola phones offer the option; the last one I used, a Moto Z2 Force with Android 7, would not. My first question here was about that.

---
Tags: storage, android-11
---