title: Advanced searching in Play app store?

text:
# Question
Title: Advanced searching in Play app store?
It is not easy to find good apps. Is it possible with some other app website to only search within apps (list apps) that have at least 500k downloads and at least 10k reviews?

Something like make the Play store a database of app names with columns for reviewcount and downloadcount and do SQL commands with where clauses?

# Answer
> 48 votes
I created this.

It's an advanced Google Play search engine, I wanted to create that a long time ago. Now, it's done

Since Google doesn't have an API for Play search, I use an open source scraper.

Almost all app specs can be filtered and sorted.

I hope you'll like it, and please let me know if you find any bug or have any feature request.

It's open source : KPlaysearch

# Answer
> 11 votes
I also created a similar application (http://play.gqqnbig.me/) to KaKi87's. Source code is at https://github.com/gqqnbig/advanced-play-search

# Answer
> 3 votes
Looks like what the OP is looking for can be done at AppBrain, using the `&sort=popular` URL parameter. See e.g. this example search for file sync: First result page mosly holds apps with 10k+ downloads with a good "internal rating" (they have their own "rating number" in addition to the playstore rating). Checking some, they seem to have 10k+ ratings on GPlay as well. Additional filtering is possible for free/paid, new/updated, app2sd, reduced price.

Though not being exactly what was asked for, I guess it's pretty close. Another good result list can be obtained with the `&sort=highest-rated` variant, which seems to sort by playstore rating: "file sync" by rating.

# Answer
> 3 votes
Since Google (and other search engines) index the web version of Play Store, a massive database of every element of the Play Store has been created and searching it is totally free!

On Google, you can refine web searches like using `-` to exclude words from the search, or `..` for range search, etc.

As an example, to search for free apps that don't contain ads and in-app purchases: `site:play.google.com/store/apps/details -"Contains ads" -"in-app purchases" -Buy Free`

# Answer
> 3 votes
***App Finder*** is the most advanced search engine for Android apps.

It has 2,300,000+ apps indexed, with data for all 200+ countries/regions, many filters and search operators, and a very detailed result list with scalable screenshots.

For more information see the thread on XDA, and here. Available from Google Play here.

***Disclosure: I am from Skyica LLC, the developer of App Finder***

# Answer
> 0 votes
Couple of ways you could fine tune or eliminate this:

1. Select the option to view English (or whatever your native language is) results only. I think this is in your search preferences; you may have to view the desktop version of the results page to get it.
2. When viewing a page that seems to be from your locale, look at the & hl= and following text in the URL. Copy this to the clipboard. Then go back to the search results page and add inurl: then paste what you just copied immediately to the right of the : (colon). Make sure there aren't any spaces between the colon (:) and what you just pasted.

# Answer
> 0 votes
This isn't another website, but https://github.com/sk1122/App-Searcher-and-Keyword-Seacher is a Django project which provides the software needed to self-host a website which does roughly what is needed.

Its models include `reviews` and `ratings`.

Besides Django, its scraper depends on requests and bs4. I don't see any other dependencies.

# Answer
> 0 votes
You can use the *pub:* token to search for apps from a specific publisher. Maybe there are other supported tokens, I don't know.

Specify the full and exact publisher name, no quotes needed. It works both in the Play app and website, e.g:

*pub:Dieter Thiess*

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


# Question
Title: How to type Ctrl-C (and others) in terminal emulator
On Android 11, I tried in Terminal Emulator for Android and 'Material Emulator'. Pressing `Vol Dn` \+ `c` doesn't do anything.

For example, but not limited to, after

```
ping 8.8.8.8

```

I can't find any way to stop the ping (except exiting the emulator, of course). Tried all kinds of combinations. Similarly, typing

```
$sort
a
b
c

```

How do I stop input? On Linux I'd type `Ctrl`-`D` (=eof), but that doesn't work on Android.

In `preferences`, I have `Vol Dn` as definition for the `Control Key`

**Note**: Thanks for the suggestions! What I'm worried about is that in the `Special Keys` help item, it clearly states that `Vol Dn` should act as a `Control` key (in both terminal emulators I tried). Am I doing something wrong here?

# Answer
> 2 votes
To close this issue:

Thanks for the suggestions:

@alecxs: The hackers keyboard works great, and as it can represent a full keyboard, it feels very familiar. On screen portrait mode it's a bit more difficult to use though.

@IrfanLatif: AnySoftKeyboard looks very promising as it's easier to use in portrait mode and has better access for foreign languages.

# Answer
> 1 votes
It seems to be a bug for the recent versions of Android, I hope the developer fix it ASAP because I really loved that terminal, but I tried this one and it worked well

TermOne Plus

---
Tags: applications
---


# Question
Title: Closing/killing "Android Terminal Emulator" app
I have a Sprint LG G3 running Android 4.4.2. I'm using Android Terminal Emulator by Jackpal. It respawns after I close the app. I see the terminal process and the child shell but killing that way seems too manual.

When I closed the only window from the dropdown list at the top, it closes temporarily, then reappears in the "Recent apps" list. There is an un-swipeable notification that says "Terminal session is running". When I tap on either the thumbnail or notification, the "Window 1" comes back.

The only workaround I've found is rebooting.

Any better ideas to really close this app?

# Answer
> 1 votes
There are this ways : 1 - CTRL + D ( Volume Down + D ) 2 - Tapping The "X" Button 3 - Typing The "exit" Command

# Answer
> 0 votes
Simply tap on 3 dots and first close all Windows. When you close the last 1 window, you will be out of simulator.

# Answer
> 0 votes
Close all windows of the terminal emulator and it'll automatically quit the app and close the notifications.

# Answer
> -1 votes
There should be an "X" at the top of your screen. Just tap it.

---
Tags: terminal
---


# Question
Title: Upgrading Magisk to latest version: Boot image kernel_dtb was patched by old (unsupported) Magisk
I installed a custom ROM (MIUI Splitfire) on my phone with Magisk 23.0v.
Later I saw Magisk update, so I decided to upgrade to the latest version which is 25.0v from the app and got this error:

```
- Target image: /dev/block/sde45
- Device platform: arm64-v8a
- Installing: 25.2 (25200)
- Unpacking boot image
- Checking ramdisk status
- Magisk patched boot image detected
- Patching ramdisk
! Boot image kernel_dtb was patched by old (unsupported) Magisk
! Please try again with *unpatched* boot image
! Installation failed

```

Screenshot of the installation log

# Answer
Your issue is a known one.

Because your boot image was patched with an old Magisk you can't upgrade it. What you can do is completely uninstall the Magisk from the app and clean flash it again.

The Issue
> 0 votes

---
Tags: rooting, miui, magisk, realme
---


# Question
Title: Is there a way to permanently delete specific (phantom) alarms using adb shell?
My phone has mysteriously created a phantom alarm meaning that no GUI app or widget shows this alarm on my phone and thus nothing allows me to see to set, delete, or view this alarm.

Using `adb dumpsys alarm`, I've found the offending alarm, which goes off M-F at 0630 HRS and it's incredibly annoying.

Using `adb`, I'm able to find the alarm daily, which means I'm able to find the Alarm ID, which in my case, right now, is `ff691fe`.

Is there a way I can delete this alarm permanently using `adb`? I'm assuming that this particular ID is likely not the root ID, but perhaps someone knows how I can find that? I'll keep looking around.

I just tried (with result from command)

```
b0q:/ $ service call alarm 3 i32 ff691fe
Result: Parcel(00000000    '....')

```

and this did not work, unfortunately. One thing I suspected and confirmed is that the ID changes after a timer elapses, but I've not yet determined how to get a parent ID (probably not correctly named there) for the alarm. Moreover, it's likely I'd need that ID to successfully permanently delete alarms.

Any assistance on this would be greatly appreciated. This seems like a huge bug in the android OS.

# Answer
> 1 votes
OK, it turns out that the `service call` *did* work, as far as I can tell. I just needed to tweak the command a little.

Most important thing was to correctly determine the ID of the alarm. Using the link here, one can find the ID. Note that the ID is in a specific section of the `dumpsys alarm` command. The format of the output for that command is confusing at first, but essentially you're looking for something like:

where `###` in this is a number representing the number of alarm (not `###` literally)

```
### pending alarms:
...
...
...
    RTC_WAKEUP #88: Alarm{5d74fad type 0 origWhen 1677671101000 whenElapsed 1028621179 com.sec.android.app.clockpackage}
      tag=*walarm*:com.samsung.sec.android.clockpackage.alarm.UPCOMING_ALERT
      type=RTC_WAKEUP origWhen=2023-03-01 04:45:01.000 window=0 exactAllowReason=permission repeatInterval=0 count=0 flags=0x5
      policyWhenElapsed: requester=+7h4m50s571ms app_standby=-1m20s270ms device_idle=-- battery_saver=-55s468ms tare=-2m1s488ms gms_manager=--
      whenElapsed=+7h4m50s571ms maxWhenElapsed=+7h4m50s571ms
      operation=PendingIntent{493d673: PendingIntentRecord{4efa417 com.sec.android.app.clockpackage broadcastIntent}}
      idle-options=Bundle[{android.pendingIntent.backgroundActivityAllowed=false, android:broadcast.temporaryAppAllowlistReasonCode=302, android:broadcast.temporaryAppAllowlistDuration=10000, android:broadcast.temporaryAppAllowlistReason=, android:broadcast.temporaryAppAllowlistType=0}]
    RTC_WAKEUP #89: Alarm{e3b8930 type 0 origWhen 1677671507448 whenElapsed 1029027627 com.samsung.android.rubin.app}
      tag=*walarm*:com.samsung.android.rubin.alarm.ACTION_PENDING_INTENT
      type=RTC_WAKEUP origWhen=2023-03-01 04:51:47.448 window=+2h0m0s0ms repeatInterval=0 count=0 flags=0x0
      policyWhenElapsed: requester=+7h11m37s19ms app_standby=-1m20s270ms device_idle=-- battery_saver=-55s352ms tare=-1h17m15s404ms gms_manager=--
      whenElapsed=+7h11m37s19ms maxWhenElapsed=+9h11m37s19ms
      operation=PendingIntent{e4639a9: PendingIntentRecord{84e3864 com.samsung.android.rubin.app broadcastIntent}}
...
...
...

```

In this example, `RTC_WAKEUP #88` is the pending alarm. In that string, the output `Alarm{5d74fad type` shows the alarm ID, which is `5d74fad`.

Now, executing:

```
service call alarm 3 s16 5d74fad

```

deleted my alarm. Whether this works for others or not, I cannot say. It worked for me. The output from the command is nebulous at best. I basically just had to wait for the next day. One thing I noticed, though, was when I ran this command, my phone switched to GMT (rather than localtime). Simply going in to settings for date time and toggling on/off the automatic daylight time and automatic date time fixed that.

---
Tags: adb, shell, alarm
---


title: `fastboot` command does not show device

text:
# Question
Title: `fastboot` command does not show device
I am trying to get to the point where I can put in the Bootloader code that I have. But fastboot keeps waiting for the device in CMD and it never shows up, no matter how many times I do volume up or down and USB plugged in.

Debug active, in Mass storage, Sony ADB shows up in drivers with no errors. Any help would be appreciated.

# Answer
First, make sure you are in fastboot mode. The easy way would be connecting your phone to your PC via a USB cable with USB debugging enabled.

Then, simply open CMD from the directory where you installed ADB (or just open CMD if it's installed globally).

Then make sure ADB detected the phone via `adb devices`. If your device shows up, just type `adb reboot bootloader` and the phone will reboot to fastboot mode.

After that, open CMD and use `fastboot devices`. If you get your device, you can proceed with unlock process, but if it doesn't return anything or sits on "waiting for device", then the first thing you should do is to try to plug USB into another USB port (for some reason fastboot is a massive pain in the ass when you try to use it on USB 3.0 port, so if you have USB 2.0 port try to plug USB into it, this is trouble only on Windows). If you don't have USB 2.0 port, then you should consider using Linux live USB to unlock the bootloader. However, if you plug the phone into USB 2.0 port and still is not detected, then you should try some other USB drivers, from the manufacturer's site or universal ADB drivers. Here is the link for various phones, so check it out.

Once, I managed to solve this by manually changing drivers (it's possible on Windows 7 and probably later, I can't tell the exact process since I don't have a PC currently). I chose something like "LG USB fastboot" because my phone is LG.
> 3 votes

# Answer
I also get that "waiting for devices" on Windows 10. I try to get to fastboot manually by pressing up + volume. After I get fastboot mode, I connect with a USB cable. Then when I check the device manager, I see a yellow exclamation sign.

I search for the correct driver (Google USB driver is not enough to fix this), update the driver, and ADB finally sees my devices in fastboot mode.
> 0 votes

# Answer
Had the same problem with Xperia XZ3. Tried everything... lost hope.. then switched to USB 2.0 -\> device manager saw the phone as an Android device (WHILE PHONE OFF, which was the main issue as it turns out) -\> installed manually Google USB driver from here -\> rebooted laptop and phone and then the regular procedure with adb worked (`fastboot devices` list showed my phone while booted in bootloader). Following that, I used the command `fastboot -s <usb id from fastboot devices list> oem unlock 0x<unlock bootloader code>`.

Good luck!
> 0 votes

---
Tags: fastboot, terminal
---


# Question
Title: how do you scroll through discord servers on the discord app?
how do you scroll through discord servers on the discord app?

I figured it out for how to do it on a laptop/desktop.. On that it's a mouse wheel or touchpad or autohotkey shortcut to simulate scrolling.

But how do you do it on android in the discord app?

# Answer
> 1 votes
Swipe thought the servers icons on the left of the screen

---
Tags: discord
---


# Question
Title: Where can I find the log of bluetooth enable and disable
**Problem**

I have Samsung Note 20 and a Samsung Watch. The watch wakes me up every morning between 4:42 and 4:43 am. This is independent of the time zone. It happens in NZ and Malaysia. It happens even though I have "Do Not Disturb" on a time schedule.

I notice that the phone even disconnects from the car, while I am still sitting in the car (with it on). It also disconnects from the car and watch when the phone is showing on an advert on an app. This happens often, maybe it's related to the ad that's being played.

**Information**

The notification is `Phone disconnected`. I have this notification on, to remind me if I forget my phone.

**Assumption**

I assume that bluetooth has been turned off or disabled.

**Question**

Where can I find the logs on bluetooth enable and disable, so that I can discover what process is responsible?

# Answer
You need to turn on the "Enable Bluetooth HCI Snoop Log" option in the "Developer Settings" of your device.

The log Bluetooth log file is usually stored here: /sdcard/btsnoop\_hci.log or here: /data/misc/bluetooth/logs/btsnoop\_hci.log
> 1 votes

---
Tags: bluetooth, logging
---


# Question
Title: Is there any way to edit ODT documents on Android?
I need to edit my OpenOffice documents.

Is there any version of LibreOffice for Android?

Or

Is there any ODT texteditor app for Android?

# Answer
There is AndrOpen Office

> AndrOpen Office is the world's first port of OpenOffice for Android.
>
> You can view, edit, export office documents using full features of the OpenOffice.
>
> AndrOpen Office has 6 components:
>
> * Writer (a word processor)
> * Calc (spreadsheet)
> * Impress (presentation graphics)
> * Draw (drawing)
> * Math (equation editor)
> * Base (database)
>
> * AndrOpen Office is forked project from the Apache OpenOffice project.
>
> AndrOpen Office is not affiliated with the Apache OpenOffice project.
> 8 votes

# Answer
Strictly speaking, not really an ODT editor, but Google Docs accepts ODT and you can edit Google Docs on Android. The file would have to be converted to Google Docs internal format then exported back to ODT though.
> 4 votes

# Answer
Currently there is not a single solution on Android for *editing* ODF files. But keep your heads up: The LibreOffice team is working hard on an Android version of the entire office suite!

Though this is already "old news", and has been heard about for at least half a year, the screenshots look very promising -- at least with a tablet in mind.

Which leaves us with the question: When Libre Office will be available for Android Smartphones? If you read the information on the linked page (which hopefully will be updated with more details when available), it very much looks like the standard Debian answer: *It's ready when it's ready.*
> 3 votes

# Answer
Zoho Writer seems to support viewing & editing ODT files (only tested with a very simple document):

> ...
>
> * Supports saving of documents in different formats like doc,docx,rtf,odt,txt,html and PDF

Though it seems to work awkwardly:

* Can't directly open a file from disk, first step is importing the file.
* Can't directly save file, must find a hidden "Export" button first.
* Google Play reviewers have many strange bugs to report. After trying it for a few seconds I have noticed some strange redrawing issues.
> 1 votes

# Answer
According to LibreOffice's website, Collabora Office is considered the defacto product for iOS and Android:

> While The Document Foundation doesn’t currently offer an Android or iOS version of LibreOffice, there is a LibreOffice-based product in app stores from Collabora, one of our certified developers and ecosystem members

Find out more on the Collabora Office for Android & iOS page. A few highlights:
> 1 votes

# Answer
OpenDocument Reader is worth checking out. It will be really good but the save function doesn't work yet. They are still working on it so when that gets updated it will be far better than AndrOpen as the interface isn't cluttered so you can actually type on it easily! You will be able to then save to dropbox, Google Drive, your email or where ever...

update: not sure the programmers are ever going to fix it. They seem a bit odd.
> 0 votes

# Answer
Collabora Office, a LibreOffice derivative, works well on my tablet.
> 0 votes

# Answer
A quick note, the default app on an Android phone such as "QuickOffice" should work. Try opening the doc as 'open As' and then select QuickOffice if available on your device.
> -3 votes

---
Tags: text-editor
---


# Question
Title: How can I disable permission monitoring on Android 13?
I recently upgraded from a Samsung Galaxy S9+ to the S23 Ultra and noticed that it almost daily pushes notifications like this:

> Settings: Android System Intelligence got your location in the background. This app can always access your location. Tap to change.

When I long-press to change the notification settings, it looks like the notification is coming from "Permission controller" - and the "allow notifications" option is disabled (and on), with no options to disable notifications for subcategories either.

I granted these permissions and really dont want to see this daily, it is a bit obnoxious in my opinion.

I read this article from 2018 saying this could be disabled, however, on this phone I do not have this option. There is no "Lock screen and security" option - these were split into two different menu screens now. The Lock Screen menu screen has no such options. The Security and Privacy menu has a "Permission manager" option under the "Privacy" option, but there are no options anywhere to disable it.

**I would like to disable this without rooting the phone.** Any help is appreciated.

# Answer
> -1 votes
I have Android 13 on Note 20. I don't get those notifications.

It seems to me that you can either disable the **Permission Manager** or notifications from it, or you could change the permissions of **Android System Intelligence**

For that

* Go to Settings
* Select Apps
* Press on 3 vertical dots on top right
* Select Permission Manager
* Select Location
* Select Android System Intelligence
* Remove the Location Permission from it.

---
Tags: security, notifications, permissions, android-13
---


# Question
Title: Genymotion ARM Translation Tool Image for Android 10.0
I'm currently trying to get Genymotion up and running. I'm installing an app which requires ARM. I'm running Android 10.0 (Samsung Galaxy S10), and for the life of me, I can't find an image for Android 10.0.

I've found images for Android 8.x and below, but I believe that the images aren't compatible with the newest version.

I just need a zip image of an ARM Translation tool for Genymotion Android v10.

# Answer
Genymotion is the wrong emulator. It bases on VirtualBox and thus can not emulate a different CPU, it can only pass through the CPU, so you are limited to x86/x86\_64 if if you have an Intel/AMD CPU.

For older Android versions there seems to exist an extension that allows to run 32bit ARM (ARMv7) apps on Genymotion emulator but that tool was never officially supported and there are no releases for Android 10 and higher.

The only emulator I know that can run ARM on x86 is the one shipped with Android Studio/Android SDK. Use an ARM based image (will be a bit slow) or a Google x86 image (the latter images contains an internal ARM emulation layer).
> 2 votes

# Answer
You can try Android 11

https://github.com/niizam/Genymotion\_A11\_libhoudini

It's worked for me
> 1 votes

---
Tags: android-10, arm-processors, genymotion
---


# Question
Title: Install recovery ramdisk vs flash current TWRP: the difference?
I want to know the proper way of installing TWRP because recently I spent quite a lot of time bricking/unbricking my phones after flashing the ROMs, so I don't want spend it again. While learning the TWRP features I figured out two different ways of installing the TWRP:

So far I found many useful articles explaining ramdisk way of TWRP installation also quite a lot of beautiful questions/answers posted here on Android SE
Install TWRP to only one slot or offline boot.img file, not both
Why can't I write to recovery using fastboot on A/B device?
Can't flash custom TWRP recovery image on Motorola Moto G7 Power phone

Having read all that, I have a general understanding that newer A/B devices have no separate recovery partition where TWRP can be installed, so instead recovery is put onto the `boot` partition in some `ramdisk` section, this is how I understood the subject. Practically that means that one need to have recovery `.zip` or `.img` file in hand, and *push* that file onto the device to be able to install it on ramdisk. As opposed, with `Flash current TWRP` we don't need any files, we just make the currently booted TWRP persistent, and bootable on next and subsequent boots.

The question is: **are those two options have equivalent result?**

My understanding is that "Flash the current TWRP" is simpler as it does not require any file copy. So why we have them both in TWRP menu? Am I missing something?

# Answer
early recovery in ramdisk arrangements required the zip installer, because the other option was not available in the TWRP menu. the result is the same, installers are provided for historical reason.
> 2 votes

---
Tags: rom-flashing, recovery-mode, twrp
---


# Question
Title: How to access the App Drawer on Ulefone Note 14 Pro?
Switched to a new(ish) phone:

> Unlocked Cell Phone (2022), Ulefone Note 14 Pro Smartphone Unlocked, 4GB+64GB, 6.52" Waterdrop Display, 4500mAh Battery, 13MP Dual Camera, Android 12, Triple Card Slots, Type-C, GPS, Green

from Amazon but cannot locate the App Drawer.

Certainly, I can go to settings -\> apps to see all apps. What I'm looking for are the icons to apps which I can drag-and-drop so that they're copied to the home screen.

Where is the app drawer?

*Not all apps seem available by swiping left and right.*

# Answer
@Andrew\_T's answer was the right one, i cannot see it now any more. Long press on the home screen, then in the settings choose all apps in app drawer instead of all apps on home screen. Thanks!
> 1 votes

---
Tags: app-drawer, ulefone
---


# Question
Title: How to transfer Chrome start screen links to a new mobile phone?
On my old mobile phone (Samsung, Android 10) on the desktop, I have many folders with website links (you know, the ones you can create in Chrome when you select the "..." menu and then choose "Add to start screen").

Now I got a new mobile phone (Samsung, Android 12) and recognized that the Samsung Smart Switch tool doesn't copy the links from my old phone.

I know I could open every link separately and then bookmark it, but this is cumbersome and not an option I want to consider since I have collected many links over the years.

Is there a swift way to transfer the links from one phone to the other?

\- or -

Do you know where on the phone the start screen links are stored? (then maybe a tool like TotalCommander would be able to copy it via a WiFi connection).

# Answer
> -1 votes
Save all you homescreen links as bookmarks, then follow instructions here to sync them on all your devices: https://support.google.com/chrome/answer/165139?co=GENIE.Platform%3DAndroid&oco=1 foll

---
Tags: samsung, chrome-for-android, data-transfer, home-screen-shortcuts, hyperlinks
---


# Question
Title: "media: inaccessible or not found" error when attempting to control device volume via ADB
I'm trying to change volume on my device via ADB.

When for instance running

```
adb shell media volume --stream 15 --set 0

```

...this error is returned (regarding the volume streams):

```
/system/bin/sh: media: inaccessible or not found

```

---

Oneplus 5T, LineageOS 18.1 (Android 11)

Android documentation

# Answer
To send adb command to Android 11 or 12 devices, the syntax of controlling volume has changed:

```
adb shell cmd media_session volume --set 10

```

**This is used to set the volume at `10`** — just replace `10` with your desired value.
> 1 votes

# Answer
In Android 11 and Android 12, `media` utility no longer exists. That's why you got the error since your shell could not find the utility in locations mentioned in its PATH. That utility's commands have been moved to a service name `MediaSessionService`. To access those commands invoke this service using `cmd` command.

```
adb shell cmd media_session

```

Example:

```
$ **cmd media_session**
usage: media_session [subcommand] [options]
       media_session dispatch KEY
       media_session dispatch KEY
       media_session list-sessions
       media_session monitor
       media_session volume [options]

media_session dispatch: dispatch a media key to the system.
                KEY may be: play, pause, play-pause, mute, headsethook,
                stop, next, previous, rewind, record, fast-forword.
media_session list-sessions: print a list of the current sessions.
media_session monitor: monitor updates to the specified session.
                       Use the tag from list-sessions.
media_session volume:  the options are as follows:
                --stream STREAM selects the stream to control, see AudioManager.STREAM_*
                                controls AudioManager.STREAM_MUSIC if no stream is specified
                --set INDEX     sets the volume index value
                --adj DIRECTION adjusts the volume, use raise|same|lower for the direction
                --get           outputs the current volume
                --show          shows the UI during the volume change
        ***examples***:
                adb shell media volume --show --stream 3 --set 11
                adb shell media volume --stream 0 --adj lower
                adb shell media volume --stream 3 --get

```

The *examples* section above has not been updated in the source code to reflect new changes, that's why it still recommends using `media` or `adb shell media`.
> 9 votes

---
Tags: adb, volume-control
---


# Question
Title: Pixel 5 vibrates once when turned face down
My phone has this irritating behaviour. When I turn it face down, after a second or so it does a couple of quick vibrations.

It often confuses me into thinking that I have received a notification just after putting it down, so I pick it up, nope, put it down, it vibrates again...

Is there a way to disable this?

# Answer
> 28 votes
**This is a side effect of the "Flip to Shhh" feature.**

The setting page states,

> To turn on Do Not Disturb, place your phone face down on a flat surface. *You'll feel a subtle vibration when Do Not Disturb turns on.*

<sup>(Emphasis added)</sup>

The feature can be accessed from Settings - System - Gestures - Flip to Shhh.

---
Tags: vibration, google-pixel-5
---


# Question
Title: Continuously getting "Bluetooth share stopped working" error
I have an HTC One running Android Revolution HD (ARHD), with Android 4.4.2, and I've been getting this error that says "Bluetooth share has stopped working".

The problem is that I have *no clue* what's causing this error to appear. I think it started appearing after I clicked the "share" button in an app - but even after fully rebooting my device, I STILL keep getting this error.

Does anyone know what could cause this error? And more importantly - how do I debug what app is causing this error? I just don't even know where to start investigating.

# Answer
> 0 votes
The only way I could fix this on my HTC One V was to perform a factory reset.

# Answer
> 0 votes
Go to settings/apps/ show system apps and find any bluetooth related app and force close and wipe data of the apps, reboot and see if that clears it up. Else as mentioned factory reset.

# Answer
> 0 votes
According to OP's (now deleted) comment,

> @RossC Thanks for the ideas! I decided to try disabling apps that potentially use bluetooth one by one to see which one fixed the issue and I found the culprit (I think)! Turns out it was Automatic app (car app) that seemed to cause it. I've filed a bug and kept it disabled for now. :) Thanks guys!

---
Tags: bluetooth, htc-one
---


# Question
Title: Facebook Messenger changing names of sender
I have received several text messages from person A. The name and phone number were correct. Today, I received a text message from person A. Facebook Messenger has the correct phone number, but all text messages from person A now are listed as coming from another name. All other messages/senders in Facebook Messenger seem to be correct.

I have a Samsung Android phone. My contacts are in Google Contacts. I checked my contacts and both person A and the other person have the correct information. Facebook Messenger has permission to access the contacts. It seems to work for every other message. It seemed to work fine up until today, when it decided to change the name of the sender. I have restarted the phone, and the problem did not go away.

As far as I can tell, there is zero connection between the two contacts. Two distinct people who have no relationship with each other. Phone numbers from different area codes. They do not have the same email provider. Their names are not close/similar. They do not work at the same company. etc.

I have never heard of this type of problem, and I don't really have any ideas as to how/why Facebook Messenger changed the name of the sender, but still shows the correct phone number. Any ideas/suggestions?

# Answer
According to OP's (now deleted) comment,

> Here is how I was able to "fix" the problem. I have no understanding of what caused the problem, nor why it persisted. I deleted the contact for the other person. Then, I checked facebook messenger. The messages now showed the correct name. I re-created the contact for the other person, and it all seems fine.
> 0 votes

---
Tags: samsung, contacts, facebook-messenger
---


# Question
Title: What is this "hand with three sparkles" button on the sidebar of Motorola, and how do I get rid of it?
I have a Motorola phone running on Android 12. I have no idea what this button is with the hand with three sparkles above it is and I want to get rid of it.

Any help is greatly appreciated! Thank you.

# Answer
According to OP's own founding on Reddit - Android 12 Moto Gestures floating button problem., **this is a "Swipe to split" shortcut accessibility button on Motorola devices**,

---

DaveOJ12's reply,

> Try this:
>
> https://reddit.com/comments/tdadwe
>
> Settings
>
> Accessibility
>
> Swipe to split

phKoon (OP)'s reply

> Moments after I had posted, I managed to get rid of ir by shutting down the "Moto Actions and Gestures" (that is nowhere to be found except via the expanded windows view), by opening any of the actions menu: https://i.stack.imgur.com/4C4Q1.jpg
>
> But that hint of yours would've been so much simpler, it's spot on.

Outside\_Active\_7574's reply

> Thank you so much; this worked a treat, though I found leaving on "Use Swipe to split" and turning off "Swipe to split shortcut", is what allowed to me to keep Moto Actions but removed the floating logo. Cheers.
> 0 votes

---
Tags: android-12, motorola, overlay
---


# Question
Title: Export opened Chrome tabs to a document, or bookmark them all
Using Android phone, how can I create a list of all my opened Chrome tabs to an Excel or Word file; or save them all in a new Bookmark Folder so I can close them all, but view them later?

# Answer
Don't know how from Android.

But from a PC it's easy, with adb (Install the platform-tools package if `adb` from your terminal doesn't work):

```
adb forward tcp:9222 localabstract:chrome_devtools_remote
wget -O tabs.json http://localhost:9222/json/list

```

Look out for the popup on your phone when you run adb, and allow debugging. See the page at the platform tools above on how to do that, it's a menu setting on your phone.

Converting from it to Excel, you can do it online, or you can install Python and do it on your PC. Create a `convert.py` file with the following:

```
import pandas
pandas.read_json("tabs.json").to_excel("tabs.xlsx")

```

And run it:

```
python3 convert.py

```
> 0 votes

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


title: How to lowercase a region in gboard?

text:
# Question
Title: How to lowercase a region in gboard?
Let's say you're using voice typing, and you FORGOT THAT YOU LEFT THE CAPS LOCK BUTTON ACTIVATED AND NOW YOU GOT A WHOLE REGION OF WORDS IN CAPITAL LETTERS! IT MIGHT GO ON AND ON FOR VERY LONG WHILE DEPENDING ON HOW LONG IT TOOK BEFORE YOU LOOKED BACK DOWN and noticed what you were typing...

So okay, we select this big block of words, then what do we do to get them back into normal/mixed or lower case? Thanks.

Currently the only thing I know how to do is just delete the region and start all over again.

# Answer
> 4 votes
Gboard has a feature for the past 4-5 years that allows to select a word, then pressing the Shift key to change the word's casing. However, during my testing with multiple words or sentences, I found out that only up to seven words can be selected.

---
Tags: gboard, text-input
---


# Question
Title: Prevent music players from auto play on bluetooth connect
Whenever I connect my android device with a bluetooth device, it automatically starts spotify and starts playing.
As far as I know this also happens to other users/players (according to google)

How can I prevent this (without signing out of spotify)?

Android: 6.0.1 Spotify Version: 6.2.0.1015

# Answer
**Background**

Major part of this guide was extracted here: How to Disable Bluetooth Automatic Playback on any Android Phone

The point of this guide **isn't to disable Bluetooth music entirely,** otherwise the latter can easily be achieved by:

Disable Bluetooth Music : Settings \>\> Bluetooth \>\> Your device(Car) \>\> Settings then uncheck audio support.

..and this simply destroys the whole purpose of the guide.

It is important to know that *autoplay* is a *feature* of many Bluetooth devices, despite the fact people do see this "feature" as a problem though, which is the original reason the original author wrote the guide.

---

**Understanding Bluetooth Autoplay on Android**

* What essentially happens when you connect a Bluetooth device that sends an autoplay command is that this command is seen as a KeyEvent for toggle play/pause in Android.
* Applications with a MediaButtonReceiver broadcast receiver can then react to this Media Button event.
* Android keeps track of the last application that requests to receive Media Button events.

> Any new media application can take over to listen to Media Button key events by calling `setMediaButtonReceiver` in AudioManager, and that application will handle Media Button key events until another application requests control.

You can actually see which application is currently set to respond to these key events by entering the following ADB command:

`adb shell settings get secure media_button_receiver`

On the author’s device, this command yielded the following output:

`com.google.android.music/com.google.android.music.playback.MediaButtonIntentReceiver`

> This is the broadcast receiver set up by Google Play Music to respond to Media Button key events. So if I plug in my Bluetooth device, my phone will automatically start playback in Google Play Music.

**Disabling Bluetooth Autoplay with Tasker**

**Profile (or Trigger)**

* Goto Profiles Tab and click the "+"
* Event \>\> State \>\> Net \>\> BT Connected
* Tap back to exit from this window

**Task**

You will notice as soon as you exit, you will be prompted to link this to a Task

* Scroll all the way up the Task list select "New Task + "
* You can just keep it anonymous or give it a name
* Click "+" to add new Action
* Media \>\> Media Button Events \>\> Grab
* Tap back to exit from this task

*AFAIK root is not necessary for this task*

Once you’re done, Tasker should now automatically set itself as the Media Button Receiver in Android upon connection to your selected Bluetooth devices. This way, the play/pause action that is sent will not be received by any of your media applications, but instead by Tasker

Unfortunately I couldn’t get Spotify or Soundcloud music application to replicate the issue. **However, I retested this feature using a PC with the remote audio service (Bluetooth module on my PC supports that) to test the bluetooth autoplay feature.**

**Tests done**

1. Enabled Bluetooth audio service (to use PC speakers to listen to remote audio).
2. Open two different music apps on android and played music and play
3. Created a “media button grab” in Tasker to handle Media Button key events.
4. Retested (2) with Tasker running the previously created task.

**Results**

1. On test (2) the audio output was transferred to PC speakers indicating that the autoplay feature was still active.
2. After performing test (4), **the audio sound output came from android and was not transferred to PC speakers. Which essentially solves the issue.**

---

Alternatively..

Head to playstore and get Bluetooth connect & Play

You can tell it which app should play for each bluetooth device (or to NOT play on a given BT device)

**Acknowledgements**
> 10 votes

# Answer
Check your Bixby routines is you have a Samsung. It might be set to turn on music as soon as Bluetooth is connected.
> 0 votes

# Answer
To prevent Bluetooth playback, create a Tasker profile and associated task. For the task, choose "Music Play." I have mine set to play a 1 second clip of silence such as this. This grabs the playback and does not automatically continue to the prior app playing media.

I tested this on Android 13 (LineageOS 20) with a Pixel 4a.

I tried the solution suggesting to grab playback with Tasker or the `media_button_receiver` option (both rooted and not), but neither worked.
> 0 votes

# Answer
If you are been annoyed by your smart android phone auto starting the music when you start your car. Here is the solution I found snooping around: Open up your Google Chrome browser on he phone, click on the right upper corner bottom, click on settings, advance, site settings, media and turn off auto play. Bingo. Now you can play any media when you want. JT.
> -1 votes

---
Tags: 6.0-marshmallow, bluetooth, music-player, bluetooth-audio
---


# Question
Title: How to recover or reset "current backup password"
Yesterday there a bunch of app updates, I didn't pay much attention to which ones, there were perhaps 8 or 10. Since then my phone has shutoff and/or rebooted unexpectedly at least 8 times. 4 times it's gone through a full "optimizing apps" cycle, which take 30+ minutes. Two of those optimizing apps cycles resulted in a premature shutdown.

Today there was an Android System Update, 16.1mb, which I applied. Thankfully it seems things are more stable now, with only two shutdowns, but that's not enough of course.

I decided this is enough of a kick for me to finally do a full reset and root the device. I'm trying to do a Full Backup of non-rooted devices but am stuck. The phone asks for "current backup password" but I don't know what that is. I don't remember setting one, but I may have. I did do an adb backup about a year ago.

I tried the on-boot de-crypt password, but that's not it or at least nothing happens on the PC side after entering it and then tapping the "back up my data" button.

How do I reset the backup password?

Phone is Nexus 5, 16gb.

# Answer
My little research here indicates that the current backup password is saved in the file `/data/backup/pwhash` (no plain-text). In some earlier Android versions removing that file followed by a reboot resulted in paving a way for setting up new password since current password would default to blank then. But in Lollipop, you've to remove the file `pwversion` (in the same directory) as well.

Because the location is under `/data/` you'd get "permission denied" message if you attempt to browse into `/data/backup`, be it from a file manager or from command-line, unless root access is provided.

The only way (as it seems to me) to reset the password without root access is the factory reset.
> 3 votes

# Answer
I just wanted to check in here and report what worked for me, i just had the same problem. (Im running LineageOS on a Fairphone 3, but I think this should be pretty transferable for android in general, lmk). After seeing Firelord's answer (props, this is a great lead), I enabled developer options, debugging over usb and root debugging and connected my phone to my laptop w a usb data cable (confirm that you have a cable for data and not just power, this is important).

Install adb on your laptop. You can then connect to your phone and reset your backup password with the following cli commands (you shouldnt need a rooted phone to do any of this):

> `adb root`

> `adb shell`

This will open up a shell session on your phone from your laptop, then:

> `rm /data/backup/pw*`

Then reset your phone. Your "desktop full backup" password should now be blank, and you can set up a new one. Since youve already come this far, consider connecting w adb again and running 'adb backup' to download a backup to your laptop for future use - I personally find this to be a safer and more convienent option than juggling sd cards or ftp or whatever.
> 1 votes

# Answer
Keep the "Current password" box blank and apply your new password.
> 0 votes

---
Tags: backup
---


title: Is the Pixel 5 really EOL in october?

text:
# Question
Title: Is the Pixel 5 really EOL in october?
Iam using the Pixel 5 with original OS and currently on Android 13.

Reading here: https://endoflife.date/pixel the phone will not receive any further security updates from october on.

But Android 13 will still be supported, so is my phone really outdated and possibly unsecure from then on?

# Answer
> 1 votes
Yes,

This information is also available on Google's support page.

Your question focuses on the definitions of two things:

`Android Version Updates` : these are the updates to new numbered versions of Android, such as Android 13 you described, that usually include things like new features and design changes.

`Security Updates` : these updates are distributed on a monthly basis and are meant to provide critical improvements needed to keep the operating system secure.

You **can continue to use your phone** without either of these updates, but as you specified, your phone may be considered "less secure" than others with more recent updates. In practice, however, many people use devices for long periods of time after they're out of security update support life. In this case, the responsibility for security is yours, rather than Google's.

---
Tags: security, updates, google-pixel, google-pixel-5
---


# Question
Title: Is Samsung Knox really that great and how can I achieve near-Knox level security on a rooted device?
When I first started learning about installing custom ROMs like LineageOS, it wasn't long before I was made aware of the security implications involved, particularly with unlocking the bootloader. The rooting is not as big an issue in itself once the custom ROM installed from what I know. The ROMs come with things preinstalled and configured the way they should be. Rooting more risky for security on a non-flashed device, but in the case of installing a custom ROM, it's still important to know the implications of leaving the bootloader unlocked.

The device I had at the time was a Galaxy A20 and not officially Lineage supported. Being my first Galaxy device, I noticed this new feature set called Knox. From what I know about Knox it is a hardware-based security scheme. This sounded like something pretty fail-safe to me when I first heard about it, and something that would probably be better left alone.

When I first learned that rooting has the side affect of affecting your device's security, in the particular case of my Galaxy device, Samsung Knox was one of the first things that crossed my mind. I can only assume that rooting the device would nullify most of the benefits of the Knox security platform.

It was at this point I decided that, as much as I may want to de-Google my phone, until I upgrade to an officially supported Lineage device, a custom ROM would probably not be ideal for my case with the A20 running Samsung Knox, due to the security implications involved.

For context, I'm a longtime Tracfone user and have never invested much into my mobile device. The last couple phones I've owned have had enough limitations and missing features to persuade me to upgrade early. I finally decided to step it up and upgrade to a Galaxy S10e. This device is officially supported by LineageOS, but being a Galaxy model, it still has Samsung Knox. I am excited to finally own a custom ROM officially supported device, but again, my primary reason for upgrading was the storage space and feature set. I'm still trying to weigh the benefits between testing Lineage and giving up Knox.

Perhaps a Pixel with Graphene would be a better device to de-Google but I am new to custom ROMs so between what I learned about having an unlocked bootloader and the benefits of running Samsung Knox, I've sort of reached a point of needing more info on Knox. I don't really know the specifics of what I'd be giving up by rooting a Knox device. I am aware of some of the soft features such as secure folder and secure WiFi. That's about it though. Some reviews even indicate it might not be all it's played up to be. But this page from Samsung's website has me pretty sold on its ability to block advanced attack methods by implementing government grade-security. Reminds me of some new PC features like secure boot and core isolation.

I need to ensure my device's data is protected and safe if lost or stolen. Some of what I've read has made me wonder if this is even a use case for Knox. It seems like it according to Samsung though. It then occurred to me, "can I 're-lock' the bootloader, so to speak?" If I were to do this, would it be at all comparable to my formerly Knox-secured device? Is it even possible?

That's when I discovered that Android has something called user-settable root of trust. The problem with locking the bootloader after flashing a custom ROM is the risk of the bricking the device. From what I can tell, this is where user-settable root of trust comes in. On certain Android devices, the user can add the new ROM as a valid signature when the device boots.

So in summary it appears one thing I can be sure of is that if I root a Galaxy device, I will be giving up Samsung Knox because the Knox Warranty Bit will be tripped. But perhaps there is a way to either encrypt the device or implement user-settable root of trust, depending on the device. Would such a device keep its data secure if lost or stolen and how well would this compare to stock ROM running Knox?

# Answer
> 4 votes
First of all, rooting does not make your device insecure by design. It adds one more opportunity in the list of existing attack vectors that can be used to compromise your device with no guarantee of success. This opportunity is more intriguing to compromise because gaining root privileges as an attacker just yields more benefits than compromising the device with any other attack vector. Having knowledge of presence of root on a device is not enough to compromise it though. There is no guarantee of success here either. As much as it is hard for the attacker to gain root access, it is also as hard for you to maintain the operational security of the rooted device which is why it is not recommended to have.

Samsung Knox is a ARM's TrustZone based integrated TEE chip which is a mandatory standard in android 8+ devices. The features TEE offers are provisioned by OEMs in the form of **Trusted Apps** (TAs) inside TEE. To support android keystore system, TEE is provisioned with the same set of features that are common across android devices. These features are:

1. Storage encryption, Screen lock authentication & Biometrics
2. Cryptographic operations
3. Hardware-backed Play Integrity attestation (*previously called SafetyNet*)
4. Google Widevine L1 DRM
5. NFC payment

Because of project Treble, custom ROMs **do not have to** modify the vendor partition that contains **Hardware Abstraction Layers** (HALs) which support the hardware including TEE, so all of the features mentioned above will work fine with custom ROMs with the exclusion of Google Widevine L1 DRM and NFC payment. That is because TEE does not actually protects the OS, it protects itself from the OS and as an extension, its own security gives protection to some of the components of the OS too. As DRM contents and NFC transactions can be tampered with by a compromised OS, their trusted apps are disabled when the bootloader is unlocked or when custom AVB is set.

Samsung provisions custom trusted apps in Knox that are not covered by android specs. They have listed 5 of them in their blog. These are mobile device management and enterprise mobile management features. These will not work in an unlocked bootloader and I don't think they are of any use to you anyway. They are 2 more interesting features offered by Knox for consumer devices explained here:

> Samsung Knox adds an enhancement called Trusted Boot, which goes a step further by taking snapshots during the boot process and storing the results in the TrustZone Trusted Execution Environment (TEE). The goal of Trusted Boot is to ensure that older, trusted bootloaders that might have security vulnerabilities in them can’t be used, as part of the Rollback Prevention process. As the system is booting, TrustZone Trustlets check the snapshots. If they determine that an older bootloader was used, certain security-critical operations can be blocked.

I am not sure how it is different from embedding minimum allowed version of the bootloader into eFuse. Google Pixel did it last year.

> **Real-time Kernel Protection** (RKP) & **Periodic Kernel Measurement** (PKM)
>
> PKM is a passive check: It is software that runs in the TrustZone TEE regardless if anything is trying to touch the Android kernel. PKM periodically checks the kernel to detect if code or data have been modified by malicious software. PKM also checks the integrity of key data structures used by SE for Android to detect attempts to disable those security checks.
>
> RKP is an active security check designed to block tampering with the kernel. With RKP, critical kernel events are intercepted and inspected in the TrustZone TEE. Events that impact the kernel can be blocked or logged to indicate suspected tampering.

This will not be available when you will flash custom ROM. The real cost of flashing custom ROM is explained in this article, Samsung will let you unlock your Z Fold 3’s bootloader, but at the cost of your cameras.

> *Samsung’s Knox documentation says that, if you root your phone and flash it with an unofficial Android build, anything having to do with its Knox security will be permanently disabled, and will only be restored if you replace the phone’s hardware. This means that, if you root a Samsung phone, features like Samsung Pay and Secure Folder won’t ever work again. To be clear, this doesn’t happen if you just unlock your phone’s bootloader — it only occurs after you make changes to the phone’s OS (though doing so is the main reason to unlock your bootloader, so it’s perhaps a distinction without much difference)*.

It makes no sense for Samsung to permanently kills hardware features. TEE is designed to be tamper resistant so even with root access, it can't be tampered with. Samsung should restore Knox features after reverting the phone back to its factory state. It is understandable to permanently revoke warranty but the reason of killing other features cannot be explained by infosec and makes it look like a poor engineering design.

Near Knox level security is not possible to achieve with rooted custom ROM as you won't be able to use specific features of Knox. I also don't think that you need to have Knox fully operational in order to be secure. It depends on your threat model. As long as your purpose is achieved with common android security features of TEE and you have custom AVB enabled, a good operational security of your device is enough for you.

---
Tags: security, encryption, lineageos, samsung-galaxy-s-10, samsung-knox
---


# Question
Title: How to install Cyanogenmod / LineageOS 13 (Android 6.0.1 Marshmallow) with GApps and Signal Messenger onto a Samsung Galaxy Ace 2 GT-I8160?
This question is uncommon and may not apply to a lot of you. But I dropped two phones in a row so I needed to grab my old Samsung Galaxy Ace 2 GT-I8160 backup phone and revive it. I had it already running with a previous version of Cyanogenmod 11 (Android 4 Ice Cream Sandwich) and already saw that I could possibly run it with Anroid 4.4.4 and a custom Kernel from XDA Developers Forum (last updated Jan 30th 2023).

Although that might be sufficient for others, it turned out that the messenger application I'm using is Signal for Android, which has a minimum OS requirement of Android 5.0.

Later I discovered a more recent version of Cyanogenmod / LineageOS 13 (Android 6.0.1 Marshmallow) on XDA Developers Forum, which was referring a packed Version of SergeyL on the 4PDA forum. I downloaded lineage13.0-20180914-UNOFFICIAL-codina\_SergeyL.zip from the given link in the 4PDA forum and made sure it fits the given md5sum `dd59385470e5b41be75fcec0377fb910`.

To download Signal from the Google Play Store I opted for Open GApps ARM 32bit for Android 6.0 and the Pico variant (Ace 2 has a ARM Cortex A9, ARM v7 32bit CPU). I downloaded open\_gapps-arm-6.0-pico-20220215.zip from the Open GApps website.

Because I was certain that I can install both packages, I put them onto a Micro SD card, plugged it into the phone and booted into CWM (ClockWorkMod). Installing Cyanogenmod / LineageOS 13 went pretty well. So I rebooted and recognized, that CWM had been replaced by TWRP 3.0.2-0 (Team Win Recovery Project). When I tried to install GApps i got an *Error Code: 70*. It told me: *Insufficient storage space available in System partition. You may want to use a smaller Open GApps package or consider removing some apps using gapps-config.* To keep it short, the proposed solution of using a `gapps-config` file wouldn't work. Wiping System, Data, Cache from TWRP and installing everything again gave the same result.

So the question is: ***How to install Cyanogenmod / LineageOS 13 (Android 6.0.1 Marshmallow) with GApps and Signal Messenger onto a Samsung Galaxy Ace 2 GT-I8160?***

# Answer
> 1 votes
# Caution

Before using the solution please make sure you understood the following:

1. The proposed solution is only suitable for a clean install (a.k.a. from scratch).
2. The proposed solution modifies the patition table of the phone. You are risking a bricked phone (especially if u edit other partitions related to the bootloader). Also entering wrong numbers may lead to a corrupt partition table.
3. The proposed solution expects you to be familiar with CWM (ClockWorkMod), TWRP (Team Win Recovery Project) and ADB (Android Debug Bridge).
4. The proposed solution expects having USB-Debugging on your phone enabled.
5. The proposed solution expects having CWM or TWRP installed. If you do not know, how to do this, search for it. Basically it's using `adb` and `fastboot` to unlock your device and flash a recovery image (like TWRP) to your phone.

# Solution

While searching for a solution I tried to figure out, what size the system partition has and what is left. I used TWRP, navigated to *Wipe* \> *Advanced Wipe* \> Select *System* \> *Repair or Change File System* and discovered it beeing 590 MiB having some 100 MiB left. Obviously this was not enough. Because I had no idea how to solve it, I tried using the option *Resize File System* which didn't do anything to the partition size.

I was asking myself, if this phone has internal memory capacity of 4 GiB, would it be possible to swap space from another partition to system. While searching for a solution I discovered, that someone else had the same idea like me here on StackExchange. But unfortunately it uses custom build binaries (of `parted` and `gdisk`) for another phone which I wouldn't want to use here, because I would risk damaging my partition table. Also using `resizepart` seemed error prone to me, because the version of `parted` which my phone had installed didn't recognize ext4. Furthermore the whole description seemed like a lot of guessing to me.

My decision was to manually edit the partition table with the onboard tools of my phone, which I could've done with the command line from TWRP. Instead I plugged my phone into the USB port and used `adb` from Debian Bullseye:

```
$ uname -a
Linux MACHINENAME 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
$ adb --version
Android Debug Bridge version 1.0.41
Version 28.0.2-debian
Installed as /usr/lib/android-sdk/platform-tools/adb

```

First I checked for the partition numbers and sizes of *system* and *data* paths.

```
$ sudo adb shell df -h
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   322.6M     64.0K    322.5M   0% /dev
tmpfs                   322.6M    212.0K    322.4M   0% /tmp
/dev/block/mmcblk0p7      9.8M      4.6M      5.2M  47% /efs
df: /mnt/.lfs: Function not implemented
/dev/block/mmcblk0p8      1.1G      1.1G     10.7M  99% /sdcard
/dev/block/mmcblk0p8      1.1G      1.1G     10.7M  99% /and-sec
/dev/block/mmcblk1p1     14.8G      1.6G     13.2G  11% /external_sd
/dev/block/mmcblk0p17
                         15.5M     10.5M      5.0M  67% /ramdisk
/dev/block/mmcblk0p3    602.4M     10.0M    592.3M   2% /system
/dev/block/mmcblk0p4    301.2M      5.0M    296.2M   2% /cache
/dev/block/mmcblk0p5      1.2G     21.4M      1.2G   2% /data

```

Then I unmounted those paths and used `parted` to discover the partition's device `/dev/block/mmcblk0` and its partition table.

```
$ sudo adb shell umount /data
$ sudo adb shell umount /system
$ sudo adb shell
~ # parted /dev/block/mmcblk0
GNU Parted 1.8.8.1.179-aef3
Using /dev/block/mmcblk0
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print free
print free
Model: MMC SEM04G (sd/mmc)
Disk /dev/block/mmcblk0: 3959MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name       Flags
        17.4kB  524kB   507kB   Free Space
10      524kB   1573kB  1049kB               PIT
 6      1573kB  3146kB  1573kB               CSPSA FS
        3146kB  4194kB  1049kB  Free Space
 7      4194kB  14.7MB  10.5MB  ext4         EFS
 2      14.7MB  31.5MB  16.8MB  ext4         Modem FS
        31.5MB  32.5MB  1049kB  Free Space
14      32.5MB  34.6MB  2097kB               SBL
16      34.6MB  36.7MB  2097kB               SBL_2
 1      36.7MB  53.5MB  16.8MB               PARAM
12      53.5MB  55.6MB  2097kB               IPL Modem
13      55.6MB  72.4MB  16.8MB               Modem
15      72.4MB  89.1MB  16.8MB               Kernel
17      89.1MB  106MB   16.8MB  ext4         Kernel2
 3      106MB   748MB   642MB   ext4         SYSTEM
 5      748MB   2056MB  1309MB  ext4         DATAFS
 4      2056MB  2377MB  321MB   ext4         CACHEFS
 9      2377MB  2713MB  336MB   ext4         HIDDEN
11      2713MB  2765MB  52.4MB               Fota
 8      2765MB  3949MB  1184MB  fat32        UMS
        3949MB  3959MB  10.5MB  Free Space

(parted) unit B
unit B

(parted) print free
print free
Model: MMC SEM04G (sd/mmc)
Disk /dev/block/mmcblk0: 3959422976B
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start        End          Size         File system  Name       Flags
        17408B       524287B      506880B      Free Space
10      524288B      1572863B     1048576B                  PIT
 6      1572864B     3145727B     1572864B                  CSPSA FS
        3145728B     4194303B     1048576B     Free Space
 7      4194304B     14680063B    10485760B    ext4         EFS
 2      14680064B    31457279B    16777216B    ext4         Modem FS
        31457280B    32505855B    1048576B     Free Space
14      32505856B    34603007B    2097152B                  SBL
16      34603008B    36700159B    2097152B                  SBL_2
 1      36700160B    53477375B    16777216B                 PARAM
12      53477376B    55574527B    2097152B                  IPL Modem
13      55574528B    72351743B    16777216B                 Modem
15      72351744B    89128959B    16777216B                 Kernel
17      89128960B    105906175B   16777216B    ext4         Kernel2
 3      105906176B   747634687B   641728512B   ext4         SYSTEM
 5      747634688B   2056257535B  1308622848B  ext4         DATAFS
 4      2056257536B  2377121791B  320864256B   ext4         CACHEFS
 9      2377121792B  2712666111B  335544320B   ext4         HIDDEN
11      2712666112B  2765094911B  52428800B                 Fota
 8      2765094912B  3948937215B  1183842304B  fat32        UMS
18      3948937216B  3950000127B  1062912B
        3950000128B  3959406079B  9405952B     Free Space

```

As you can see the partitions of *system* and *data* border to each other. In the next steps I will move the border between them, which will reduce the size of *data* and give additional space to *system*.

First I deleted partition 5 (*data*), recreated it and moved the starting point from 747634688B to 947634688B (while keeping the same end) which would make it lose around 200 MiB at the beginning.

```
(parted) rm 5
rm 5
(parted) mkpart
mkpart
Partition name?  []?

File system type?  [ext2]?

Start? 947634688B
947634688B
End? 2056257535B
2056257535B
(parted) name 5 DATAFS
name 5 DATAFS

```

After that I deleted partition 3 (*system*), recreated it and moved the ending point from 747634687B to 947634687B (while keeping the same start) which would make it gain around 200 MiB at the end.

```
(parted) rm 3
rm 3
(parted) mkpart
mkpart
Partition name?  []?

File system type?  [ext2]?

Start? 105906176B
105906176B
End? 947634687B
947634687B
(parted) name 3 SYSTEM
name 3 SYSTEM

```

I then quit `parted` and back in the shell of `adb` I formatted these partitions with ext4.

```
(parted) quit
quit
~ #make_ext4fs /dev/block/mmcblk0p5
~ #make_ext4fs /dev/block/mmcblk0p3

```

As a last step I checked the partition table again.

```
~ # parted /dev/block/mmcblk0
(parted) unit B
unit B
(parted) print free
print free
Model: MMC SEM04G (sd/mmc)
Disk /dev/block/mmcblk0: 3959422976B
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start        End          Size         File system  Name       Flags
        17408B       524287B      506880B      Free Space
10      524288B      1572863B     1048576B                  PIT
 6      1572864B     3145727B     1572864B                  CSPSA FS
        3145728B     4194303B     1048576B     Free Space
 7      4194304B     14680063B    10485760B    ext4         EFS
 2      14680064B    31457279B    16777216B    ext4         Modem FS
        31457280B    32505855B    1048576B     Free Space
14      32505856B    34603007B    2097152B                  SBL
16      34603008B    36700159B    2097152B                  SBL_2
 1      36700160B    53477375B    16777216B                 PARAM
12      53477376B    55574527B    2097152B                  IPL Modem
13      55574528B    72351743B    16777216B                 Modem
15      72351744B    89128959B    16777216B                 Kernel
17      89128960B    105906175B   16777216B    ext4         Kernel2
 3      105906176B   947634687B   841728512B   ext4         SYSTEM
 5      947634688B   2056257535B  1108622848B  ext4         DATAFS
 4      2056257536B  2377121791B  320864256B   ext4         CACHEFS
 9      2377121792B  2712666111B  335544320B   ext4         HIDDEN
11      2712666112B  2765094911B  52428800B                 Fota
 8      2765094912B  3948937215B  1183842304B  fat32        UMS
18      3948937216B  3957000191B  8062976B     ext4         TEST
        3957000192B  3959406079B  2405888B     Free Space

```

After that I rebooted into recovery to make sure TWRP is detecting it and having all mount points set correctly. I installed the above mentioned archives (first `lineage13.0-20180914-UNOFFICIAL-codina_SergeyL.zip` and second `open_gapps-arm-6.0-pico-20220215.zip`), which now went fine and wiped the Dalvik/Art-Cache. After a reboot to the system and a couple of minutes waiting finally Cyanogenmod / LineageOS 13 with GApps was installed.

I configured my phone and installed Signal through Google Play Store plus F-Droid and some other apps. The GBoard (with Swype gestures) was installed by default. The phone is running fine and everything works as expected (Wifi, 3G, hotspot, bluetooth, mail, alarm clock, browsing, dialing, sms, contacts, camera, etc.). But due to the matter of low storage I couldn't install another webbrowser like Firefox. So I need to stick to the onboard browser, which is okay.

---
Tags: samsung, cyanogenmod, 6.0-marshmallow, lineageos, signal-private-messenger
---


# Question
Title: Outlook doesn't pick up that email has been moved
I have an email account that I read with Thunderbird via IMAP on my PC, and I have rules to move emails into other folders.

I also have Outlook on my Android phone, and it constantly shows all emails in my Inbox, even ones that have been moved by rule to other folders. It is as if Outlook has cached the email and doesn't check to see if it's actually still there.

How can I force the Outlook app to refresh and detect this?

# Answer
> 0 votes
First, verify via Outlook online if the emails have really moved to other folders. If not, make sure you create the rule online.

If yes, you must delete Outlook's data on your phone (Settings -\> Apps & notifications -\> Outlook -\> Storage -\> Clear storage), then re-add your account.

# Answer
> 0 votes
I finally moved my rules to the server and this seems to address the problem, I suppose because the emails never hit the original folder in the first place.

---
Tags: email, outlook
---


title: Rebuilt `super` partition won't boot

text:
# Question
Title: Rebuilt `super` partition won't boot
I'm trying to customize an Android 11 super partition, removing certain apps. I used https://forum.xda-developers.com/t/guide-ota-tools-lpunpack.4041843/ to unpack the `super` partition, mounted them as read-write using the instructions here and then repacked them as follows:

```
~/otatools/bin/lpmake \
--metadata-size 65536 \
--metadata-slots 2 \
--device super:2684354560 \
--group qti_dynamic_partitions:2680160256 \
--partition system:readonly:700383232:qti_dynamic_partitions \
--image system=./system.img \
--partition system_ext:readonly:300167168:qti_dynamic_partitions \
--image system_ext=./system_ext.img \
--partition product:readonly:68022272:qti_dynamic_partitions \
--image product=./product.img \
--partition vendor:readonly:304410624:qti_dynamic_partitions \
--image vendor=./vendor.img \
--output ./super.img

```

The command executes fine with the usual messages about invalid sparse images. But when I flash it using EDL mode, the phone won't boot. Furthermore, 7zip won't open this file like it opens the original `super` image, it detects it as a different format. It doesn't seem to be a boot verity issue. Obviously, I'm doing something wrong, but what?

# Answer
Try replacing `readonly` with `none`, and add the flag "--virtual-ab". That did it for me.
> 1 votes

---
Tags: rom-flashing, android-11, ab-partition
---


# Question
Title: What can I do to upgrade an old Android 4.0.3 tablet?
I have an **Asus Transformer TF101** that is running **Android 4.0.3**.

The tablet can connect websites in HTTP without issue but not in HTTPS. **Most HTTPS websites are totally unreachable.** Some websites (from large institutions) are reachable after accepting several certificat issues warnings, but display badly. The clock of the tablet was set correctly.

I assume the issue has to see with how the tablet is able to deal with certificates, and also with its aging native Internet browser (which is not apparently not Chrome).

**I unsuccessfully attempted upgrading the tablet firmware**, but got an error message "**Internet connection error or server busy**. Please wait and try again". I assume this issue could be caused by disabled upgrade server and/or SSL certificate issues.

**Is there still a way to upgrade such a tablet**, preferably without jailbreaking it?

# Answer
Yes, it is possible. Jailbreak to get root rights needed. Enthusiasts do wonders. A minute of searching DevicseName ROM/image/firmware and we have a range of many variants. The maximum Android 6 for Asus TF101 was found. Visit XDA forum for install manuals and image download. https://forum.xda-developers.com/t/rom-mm-6-0-1-katkiss-katshmallow-034-multiwindow.3318496/ Source Code: https://github.com/timduru/android\_device\_asus\_tf701t
> 1 votes

# Answer
No there is no way to upgrade such an old tablet. For your tablet Android 4.0.3 is already the latest update. It was released with Android 3.0 (Honeycomb) and got upgrades to 3.2 and later 4.0. Therefore there is no other update possible, especially if you exclude jailbreaking/rooting and thus custom ROMs.

Android 4.0 only supports TLS1.0 but more and more servers now require pure TLS 1.1 or even TLS 1.2 that is the reason your network connections no longer work.

Additionally Android 4 comes with outdated CA certificate list. The CA list may be updateable by manually installing all the missing root CA certificates (as far as I remember on Android 4 this require to set a device password).

The only alternative would be a web browser that has a built-in trusted root CA list like Firefox, but Firefox requires at least Android 5+.

Upgrading to a newer Android version also doesn't make much sense as the hardware is pretty weak (1GB RAM for a tablet is very low).

So there is only one really working answer: Your tablet is more than 11 years old, replace it with one that is newer.
> 0 votes

---
Tags: updates, 4.0-ice-cream-sandwich, asus-eee-pad-transformer, https
---


# Question
Title: Remap Bluetooth headset buttons on Android
I have my Bluetooth headset and it has 3 buttons:

* BACK/Volume-
* NEXT/Volume+
* PLAY/STOP

I need to map one button (any of these) to take action after pressing (e.g. turn on the flashlight, or directly make a call to a specific person).

I found Remap Bluetooth Headset's media key \[Android 9\], so I installed AutoVoice and Tasker, but I am not able to call action after the button on the headset is pressed (of course, I am pretty newbie with AutoVoice and Tasker, so maybe my fault).

Could you please help me?

# Answer
> 0 votes
For this task, you could use "Button Mapper" current version 3.09. You can not only remap the buttons to any action you want (even macros you define) but also add extra functions by defining actions for double or triple clicks.

---
Tags: bluetooth, android-10, headphones, media-button
---


# Question
Title: "The package conflicts with an existing package" error when updating YouTube ReVanced with APK
To clarify, my problem isn't that I can't install an app because I have a similarly-named app; I am trying to update an app I installed via APK with another one of a later version.

I had previously downloaded YouTube Revanced from revanced.io, and a new version has been released, so I want to update it with the latest APK. However, despite acknowledging that I'm trying to update the app instead of installing ("Do you want to update this app?" dialogue), it still gives the "The package conflicts with an existing package" error.

Uninstalling and then reinstalling the app, though an option I have used, is inconvenient as I lose all my settings (there's no way to export them).

Thoughts?

# Answer
Edit: ReVanced Extended has added an option to export and import settings to/from a JSON file. I don't think this is in the official ReVanced app, though (probably forgot to mention that revanced.io is separate from the official one).

Edit edit: For anyone who happens to chance upon this post, just know that any website that claims to be "official" other than revanced.app is fake. Don't trust 8 months ago me. I don't trust them either.
> 0 votes

# Answer
From the official ReVanced Discord server, this might mean that there's a signature conflict between the previous APK and the to-be-installed APK, and the only solution is to uninstall the current app first.

From its "help" server, posted on Jan 21, 2023, by ReVanced (Bot),

> **27 Installation is blocked due to conflicting with an existing installation**
> This implies that you must remove the previous installation to solve the conflict.

---

In addition, the developer & maintainer suggested using ReVanced Manager instead and avoiding `revanced.io`.

> **meabeab** So my revanced app started stopping and i tried to reinstall it but it says "app not installed because the package conflicts with existing package" revanced is uninstalled
> **CnC\_Robert** use latest patches
> **meabeab** Where to download them?
> **CnC\_Robert** manager downloads it automatically
> **meabeab** But aren't you supposed to download the revanced from the site?
> **meabeab** Without the whole manager thing
> **CnC\_Robert** don't say revanced.io
> **meabeab** It is revanced.io
> **CnC\_Robert** fake
> **CnC\_Robert** revanced.app is the only official
> **CnC\_Robert** its not from us
> 1 votes

---
Tags: updates, installation, apk, youtube
---


# Question
Title: Go to your old device in Google Authenticator to import 2FA codes
After installing the Microsoft Authenticator in a new device, I logged on to my MS account and all my 2FA app codes are there, as expected. Perfect.

After installing Google Authenticator, no codes appear: The ***Transfer Accounts \> Import accounts*** option simply shows the attached dialog asking me to *go to my previous device* to continue.

Is this some kind of sick joke from Google? What happens if my "old device" was stolen, lost, dropped from a bridge, bursted into flames or otherwise destroyed? I simply loose access to ALL my 2FA accounts.

**Any ideas what's the procedure in this case?** This is all theoretical, I've never lost a phone, but it could happen anyway and I prefer to anticipate to this. Of course now my main 2FA codes app is Microsoft Authenticator, but the Google app should have considered the option of users losing phones somehow, otherwise the Device Locator app from Google would be pointless.

# Answer
**Update:** As of April 2023, Google Authenticator now supports online sync.

---

Google Authenticator only stores secrets on-device, did not provide online/cloud sync/backup, and doesn't allow its data to be backup by Android.

Disregarding the speculation on the reasons why they only provided on-device data transfer, there are at least 2 ways to prevent the user from being locked out:

1. **Store the backup codes provided by the service and use them**
2. Do a manual backup by exporting the QR code and storing it safely (ref: Can you use a screenshot of the "export accounts" QR Code of Google Authenticator as a backup?)

Further reading: How do I back up Google Authenticator?
> 2 votes

---
Tags: google-authenticator, 2fa
---


title: Obtaining app storage details via ADB

text:
# Question
Title: Obtaining app storage details via ADB
**TL;DR:**

On-device, we can navigate to *Settings › Apps,* and for each app separately can call up details on storage used: by the app itself, by its data, by its cache. Is it possible to obtain those details from the command line, ideally via ADB – and ***without having root access?***

**In detail:**

I've already searched the web, but found no information on this. I've already tried walking the package list (`pm list packages`), obtaining the path to the APK file (`adb shell pm path $pkgname | awk -F':' '{print $2}'`), and getting the file size of that (`adb shell stat $path | grep Size`) – but that has a series of disadvantages:

* it only gives me the size of the APK (for updated system apps, only of the latest update)
* even if scripted, it takes ~2s per app to obtain even that. As today's devices already ship with far more than 100 system apps, it would take "ages" even if only a few user apps were installed (almost 6 minutes on an almost virgin Wiko Sunny 3 where I just tried that)
* details on data and cache are completely missing

Ideally, Android has already somewhere collected those details; it doesn't take that long via the GUI. Maybe there's some database one could query ***without having root privileges*** – or some XML to parse, or some shell command I missed?

**PS:** if you know about a root-only solution, that'd be "better than nothing". Please indicate that in a comment then so I can come back and ask you to make that an answer if there are no non-root solutions.

# Answer
My first instinct to dig out such information which is often available via programming route is to go through dumps of various system services. One such service is *diskstats* whose only purpose is to dump the status of the disk. Looking into the java code of DiskStatsService.java for various Android releases, I noticed that the information you are looking for is available since Android Oreo. Among other things, the dump shows all the package names, their package sizes, their app data size, and their cache sizes. That information is also dumped into the file */data/system/diskstats\_cache.json* but this file cannot be accessed without root access though.

The dump is pretty *ugly* so I wrote a bash script to show data neatly. Run this script in your Linux.

Here's the script (and it does not require root access too):

```
#!/bin/bash

USRDIR="$HOME"
F_DISK_STATS="$USRDIR"/diskstats.txt
F_PKG_NAMES="$USRDIR"/package_names.txt
F_PKG_SIZE="$USRDIR"/app_pkg_sizes.txt
F_DAT_SIZE="$USRDIR"/app_data_sizes.txt
F_CACHE_SIZE="$USRDIR"/app_cache_sizes.txt

# ADVISE: do a check whether ADB is working fine or not
adb shell dumpsys diskstats > "$F_DISK_STATS"

# Separating data into relevant named files
sed -n '/Package Names:/p' "$F_DISK_STATS" | sed -e 's/,/\n/g' -e 's/"//g' -e 's/.*\[//g' -e 's/\].*//g' > "$F_PKG_NAMES"
sed -n '/App Sizes:/p' "$F_DISK_STATS" | sed -e 's/,/\n/g' -e 's/.*\[//g' -e 's/\].*//g' > "$F_PKG_SIZE"
sed -n '/App Data Sizes:/p' "$F_DISK_STATS" | sed -e 's/,/\n/g' -e 's/.*\[//g' -e 's/\].*//g' > "$F_DAT_SIZE"
sed -n '/Cache Sizes:/p' "$F_DISK_STATS" | sed -e 's/,/\n/g' -e 's/.*\[//g' -e 's/\].*//g' > "$F_CACHE_SIZE"

# Printing package names and their sizes
ttl_apps=$(wc -l "$F_PKG_NAMES" | cut -d ' ' -f1)
count=1
while [ $count -le $ttl_apps ]; do
    pkg=$(sed -n "${count}p" "$F_PKG_NAMES")
    pkg_size=$(sed -n "${count}p" "$F_PKG_SIZE")
    dat_size=$(sed -n "${count}p" "$F_DAT_SIZE")
    csh_size=$(sed -n "${count}p" "$F_CACHE_SIZE")
    echo -e "Pkg Name: $pkg"
    echo -e "\t Pkg_size=$pkg_size bytes"
    echo -e "\t Data_size=$dat_size bytes"
    echo -e "\t Cache_size=$csh_size bytes"
    echo -e "\t Total_size=$(($pkg_size + $dat_size + $csh_size)) bytes\n"
    count=$(( $count + 1));
done

```

Output when tested on OnePlus 6 (Android 9):

```
Pkg Name: org.xbmc.kodi
     Pkg_size=144297984 bytes
     Data_size=55771136 bytes
     Cache_size=54341632 bytes
     Total_size=254410752 bytes

Pkg Name: rikka.appops
     Pkg_size=10330112 bytes
     Data_size=1740800 bytes
     Cache_size=163840 bytes
     Total_size=12234752 bytes

Pkg Name: com.a0soft.gphone.aSpotCat
     Pkg_size=16228352 bytes
     Data_size=1101824 bytes
     Cache_size=163840 bytes
     Total_size=17494016 bytes

```
> 10 votes

# Answer
I've written a Python version. (Mainly intended for cases when you need to further work with the data.)

It works on its own as well. Without arguments, prints a table of all apps; you can only print some apps by providing their names as arguments.

```
#!/usr/bin/env python3

from subprocess import run, PIPE, DEVNULL
from json import loads

def get_appdata():
    output = run(['adb','shell','dumpsys','diskstats'], stdout=PIPE, stderr=DEVNULL, check=True, text=True).stdout
    datapoints = {
        'Package Names': 'name',
        'App Sizes': 'size',
        'App Data Sizes': 'data',
        'Cache Sizes': 'cache',
    }

    _data = {}

    for line in output.splitlines():
        for prefix, dataname in datapoints.items():
            if line.startswith(prefix + ': '):
                _data[dataname] = loads(line[len(prefix)+2:])

    for name, dataname in datapoints.items():
        if dataname not in _data:
            raise ValueError(f'dumpsys returned invalid output: missing `{name}:` line')

    assert len({len(x) for x in _data.values()}) == 1, 'dumpsys returned invalid output: unequal length of data fields'

    data = {}
    for i, app in enumerate(_data['name']):
        data[app] = {}
        for dp in ['size', 'data', 'cache']:
            data[app][dp] = _data[dp][i]

    return data

def show_table(appdata, apps=None):
    cwidth = max(len(x) for x in appdata.keys())

    print('{0:<{1}}'.format('App', cwidth), '         App', '        Data', '       Cache')
    for app, sizes in appdata.items():
        if apps is None or app in apps:
            print(f'{app:<{cwidth}} {sizes["size"]:>12} {sizes["data"]:>12} {sizes["cache"]:>12}')

if __name__ == '__main__':
    import sys
    appdata = get_appdata()
    if len(sys.argv) == 1:
        show_table(appdata)
    else:
        show_table(appdata, sys.argv[1:])

```

(Feel free to use and adapt. Hereby released to the Public Domain.)
> 0 votes

---
Tags: applications, adb, storage, command-line
---


# Question
Title: Google Calendar displaying the same events for different users. Why?
I am trying to use Google Calendar. I have different accounts registered in the Google Calendar Android app. Each of these corresponds to a different phone user in my household or to one of my virtual accounts.

What I can't understand, is, why are my calendar events staying the same when I switch users in the circle in the upper right-hand corner of the app?

The following images display the same calendar entries for both of the users I have switched in the app.

.

Thank you for your help.

# Answer
> 5 votes
This is actually a function of Google Calendar. Most people want to make sure they can see their *entire* schedule at a glance, including events that belong to different accounts.

If you pull out the sidebar from the left hand side (either by sliding from the side or using the "hamburger" (three lines) menu) you can see which calendars are being displayed from each account and toggle them on and off with the checkboxes. The selections you make with these checkboxes are "sticky" per account, so when you switch to another account, you can make a different selection there.

Please note that some calendars may be hidden from this menu at first; they'll need to be enabled under Settings \> \[pick an account\] \> Show more \> tap on calendar \> Sync.

---
Tags: calendar, google-calendar
---


title: Switching Dictation Input Language

text:
# Question
Title: Switching Dictation Input Language
What options do I have to switch the input language for dictation? Is it only tied to the keyboard?

Is it possible to switch to German dictation but still keep the English keyboard?

# Answer
I discovered that it's possible to set a QUERTY keyboard for German. Not an ideal solution but better than having to switch back to English all the time.
> 0 votes

---
Tags: languages, gboard
---


# Question
Title: How to get device name like "whyred" for Xiaomi Redmi Note 5?
For custom ROMs like LineageOS, the more specific device names are used. So e.g. the Xiaomi Redmi Note 5 is called whyred or Samsung Galaxy S7 Edge goes hero2lte. Having some experience in Android and custom ROMs, I don't know how to find out device names based on the colloquially used device names (Redmi Note 5 -\> whyred).

Neither in specs on e.g. shop sites, nor in the device info. Let's look at the device info of a Xiaomi Redmi Note 5 Pro:

I only see `M1803E7SG` as the model name here but does not match the device name used for custom ROMs. Especially on Xiaomi, it's a big mess to get rich in different models or editions. Sometimes a single model is not equal across different regions.

For `M1803E7SG`, I found this article which says:

> For reference, our review unit is the M1803E7SG. This is also known a the Redmi Note 5 AI Dual Camera. It is neither the Redmi 5 Plus, which is listed as the Redmi Note 5 on Xiaomi's Mi website, nor is it the Redmi Note 5 Pro either. All three devices are powered by a Qualcomm Snapdragon 636 SoC, but they feature different camera hardware and memory options among other differences.

So, is this a flashable device for TWRP/LineageOS? I'm really confused now and would like to see the device name for this smartphone.

# Answer
> 1 votes
For simplicity, you can either find the device codename from the official Xiaomi forum (which I believe is constantly updated). You can also use a third-party tool Device ID to get your device codename:

# Answer
> 1 votes
If you have access to a terminal (either adb or a terminal app) then just run:

```
getprop ro.product.device

```

or you can run `getprop` by itself to get all sorts of good information

# Answer
> 0 votes
# Xiaomi specific

Dial `*#*#64663#*#*` and use `1 Check version info`. Near *Camera information* you can see the codename.

## Vendor unspecific

You could use Device ID as xavier\_fakerat already suggested. But I also found aida64 which seems more verbose as you can see much more details about the device instead of only seeing the Device ID. But if you're really just want the codename, the Device Id app works well.

---
Tags: custom-roms, lineageos, xiaomi, device-name
---


# Question
Title: How to find exact file path to an external microSD card?
Is there a way to find out the path of files from a microSD card that is inserted into any Android phone?

---

**Related investigation:**

From here, How to specify the directory path on external memory card? , it seems like the problem was solved, using an unspecified app that pointed to the right direction. (implying a tool can exist for that purpose)

From here, How to save files to external SD card on a non-rooted Android? , it implies `/storage/[UUID]/`, but it wasn't clear how exactly to figure out that UUID.

# Answer
> 0 votes
I figured out a workaround.

Using the SD Card Manager app, I looked at the Info of a folder in my microSD card while its connected to my phone, and was able to see my own particular UUID in `/storage/[UUID]`, for example, `/storage/1234-5678`.

I then confirmed the UUID in a separate app that asked for it, i.e.: `/storage/1234-5678/my_own_folder`, which was ended up being successful found and used.

---
Tags: file-system
---


title: Local contacts only under Android 11?

text:
# Question
Title: Local contacts only under Android 11?
I'm using Android 11 on my rooted Pixel 5 phone. It turns out that the `Contacts` app under this OS does not allow access of device-only contacts. I can only access contacts via a shared Google account.

Furthermore, if I go to `Settings` and try to disable network permissions for the `Contacts` app, it turns out that the `Permissions` settings are greyed out, and I cannot alter any permissions for the `Contacts` app.

I know that I can disable contacts sync-ing, but I want to go further. I want my contacts to be totally and completely disconnected from Google. I am happy to use an alternative contacts app that accesses device-only contacts, but that app would also have to be able to feed my contact information to all SMS and phone apps that I might use.

Does anyone know how I can ...

(1) ... go to Google and remove all my contacts there without this causing local contacts on my device to also be removed?

(2) ... break all (!!!) connections between Google's cloud-based contact storage and my local, device-only contact storage.

(3) ... reliably allow all device-only contacts to be available to other apps, including (but not limited to!) SMS apps and phone apps?

I know I can manage this by switching from standard Android to something like `microg`. But I'm hoping that there is some way that I could still stick with Android 11 and have device-only contacts with no sharing with Google in any manner.

I know that under Android, contacts are managed via a `Contacts Provider` service. Does anyone know of a way to disable the standard Android `Contacts Provider` service and somehow install some sort of alternate `Contacts Provider` service which would allow the use of device-only contacts and which could be configured to never, never, ***ever*** (!!!!!) share any contacts-related information with Google?

Thank you in advance for any thoughts and suggestions.

# Answer
I ended up figuring out how to do this. It's similar to much of what @Robert and @Andrew\_T were suggesting. Here is what I finally did:

First of all, I took the obvious step of making sure that contacts sync-ing is turned off.

Next, because I happened to have previously installed the `True Phone` contacts manager and phone manager app from the play store, I now made it my default phone app and started using it for contacts management.

Then, I used that app to make a local backup of my contacts using that app's conventions.

Following that, I froze the `Contacts` app, and I kept the `Contacts Storage` app active. I checked the permissions for the `Contacts Storage` app, and it has no network-related permissions. So apparently, it just looks at the local contacts database, and some other piece of software is actually the one which syncs Google's cloud-based contacts data with the local database. And by having turned off contacts sync-ing, it seems like I have indeed successfully prevented Google from getting its hands on any of my contacts.

Then, I went from my desktop computer to http://contacts.google.com with the same login credentials that are associated with my Android device. I then permanently deleted all of the contacts there.

(I rebooted between each of these steps and also after the final step.)

Now, my SMS and phone apps still see the contacts info in my local database. And I can manage the local contacts backup and restore via that `True Phone` app.

I'm sure that there are other phone/contacts apps which also could be used for this. But `True Phone` works well enough for me, and I already had that app sitting on my device, and I'm too lazy to try any others right now.

So ... it turns out that no major OS surgery was needed accomplish all of this.
> 1 votes

---
Tags: privacy, google-contacts
---


# Question
Title: How do you edit an APK file so the app won't show ads?
It's one of those thoughts you have just before nodding off to sleep. How would I do this?

# Answer
You can try finding the mod apk online. If you are into coding, then you can try using java decompiler to decompile the apk and see the source code. If you are lucky enough to find the exact place of where Ads being placed in code, then you can modify as per your requirement. However, now a days, it is very difficult to decompile into straight original source code due to increased security. For learning purposes, I used to use Apk-Studio for decompiling, making changes and then compiling again with modified code/resources.
> 1 votes

---
Tags: apk, ads
---


# Question
Title: Missing language on physical keyboard options
Mongolian language doesn't exist in the physical keyboard section. Is there any way to install an additional language on an Android tablet?

# Answer
> 0 votes
Install following Extra Keyboard Layout from Play Store

It includes among many, Mongolian Keyboard Layout for Physical Keyboard use `ctrl`+`space` to switch (**not** `shift` \+ `space` this only changes layout for on screen keyboard)

---
Tags: languages, external-keyboard
---


# Question
Title: Is WiFi RTT Ranging and WiFi Aware compatible when running concurrently in one Android app
I have a Google pixel 5 and I am currently developing both WiFi RTT ranging (ranging from access point, see WiFi RTT) and WiFi Aware (ranging from peer mobile, see WiFi Aware) on it. Hardware-wise Google pixel 5 supports both functionalities, however I am not too sure if there will be any compatibility issue when both functions are running foreground. I am not sure if my concern is valid nor can I find any source of clarification.

Any help is appreciated.

# Answer
In the official Android Developer Doc of ***RangingRequest.Builder*** class, there is a method called ***addWifiAwarePeer***, along with the ***addAccessPoints*** method. From which I assume these two functionalities can be implemented and run simultaneously.
> 0 votes

---
Tags: wi-fi, connection-issues
---


title: VNC viewers not working

text:
# Question
Title: VNC viewers not working
I have a Samsung Galaxy A10s with Android 11 One UI 3. Recently there was a problem: VNC viewers do not work. I enter, for example, localhost:1 (I want to connect to the Termux VNC server), I connect, and the connection window hangs indefinitely, and then a timeout appears. And so with any VNC viewers (I tried AVNC, bVNC, VNC Viewer). Help me please!

> Translated by Google Translate from Russian

# Answer
The problem was solved by allowing background activity in the Termux settings.
> 0 votes

---
Tags: samsung, android-11, termux, vnc
---


title: adb server stutters ubuntu desktop

text:
# Question
Title: adb server stutters ubuntu desktop
My environment is: Ubuntu 20.04.2 LTS (xubuntu to be more specific), NVidia driver 470.103.01, Android SDK 33

When I start adb server by running some adb commands, the UI, mouse and other things starts to lag and stutter, only terminal keeps responsive. You can see the type of lags I'm talking about on the video. Note that even when the cursor is lagging the terminal still works smoothly. The task manager doesn't seem to register any spikes neither on CPU nor on memory usage. Do you have any idea of how to debug or fix this issue? Probably you faced something similar?

Thanks in advance

https://www.youtube.com/watch?v=0YSdN9WtYQU

Edit: If I use MX Master 2S bluetooth mouse which connects directly to the bluetooth integrated into the motherboard, I see the effect described above. But if I connect cheap bluetooth mouse via its' bluetooth dongle, I don't see the stutter effects, everything runs smoothly. Looks like adb somehow interfere with builtin bluetooth device

# Answer
> 1 votes
Okay, so I ended up connecting the mouse using a USB dongle instead of built-in Bluetooth. Not a solution to the initial problem, but anyway, this is a note for somebody who faces similar issues.

# Answer
> 0 votes
Try starting your adb server as root with these commands in the terminal window:

```
adb kill-server        # Get rid of any running server
sudo adb start-server  # Start a new one running as root

```

If that does not start the stutter, try running your other commands and see if they stutter. In general, ADB works *much* better on Linux if the server is running as root.

OK, that isn't the problem, which seems to be something to do with the motherboard bluetooth controller. Check if there are driver updates for that, and for the USB controller?

---
Tags: adb, linux
---