# Question
Title: Multiple User Accounts on Galaxy S10/S10+/S10e
Samsung has disabled the Multiple User Accounts feature on the Galaxy S10.

How to set up multiple accounts? I mean the ability to create a separate Android home with their own app settings.

I want to be able to lend the phone to a kid or friend for a day without worrying about them messing with my files or banking accounts.

# Answer
> 2 votes
I solved this problem on S10e using this guide.

1. Root your S10. That step is required for that procedure.
2. Install BuildProp Editor (or equivalent) and run it, grant it root permission
3. Touch the pen icon at the top
4. Scroll to the very bottom of the text file, and add the following two lines:

```
fw.max_users=3
fw.show_multiuserui=1

```
5. Touch "Save and exit"
6. Check that the lines are correct. No extra spaces, all characters written exactly as below:
7. Reboot
8. In Settings, search for "Users". You can now add new users:

The user addition UI is a bit buggy, screens randomly go forward/back. But just be patient, sometimes try a step again, and you should be able to get the new user created.

*Note: People who really don't want to root their device for some reason can try this procedure to edit `build.prop`: https://beebom.com/how-edit-build-prop-without-root/*

---
Tags: multi-user, samsung-galaxy-s-10
---


# Question
Title: Retrieving a contact that I called and talked to on Telegram, but accidentally deleted
I talked to this person on Telegram (sent many messages, exchanged pictures), and then called them a few months ago via default Calls Android application.

Contact was deleted (call logs too), and Telegram chat / contact deleted as well.

Is there any way I could retrieve this person's telegram contact, or telephone number?

Telephone company only saves 1 month call logs (Vodafone).

# Answer
> -1 votes
The following steps from How can I recover deleted Telegram chats? should work:

> Use the iKeyMonitor app to recover all the messages that you need quickly.
>
> 1. Sign up
>
> Sign up for a 3-day free account of iKeyMonitor to recover deleted Telegram messages.
>
> 2. Log in to the Cloud Panel
>
> Log in to the Cloud Panel to download iKeyMonitor to the target Android phone or iPhone.
>
> 3. Install iKeyMonitor
>
> Install iKeyMonitor and activate it with your license key.
>
> 4. Start Recovering
>
> Start recovering deleted Telegram messages on Cloud Panel.

---
Tags: contacts, calls, telegram
---


# Question
Title: How to leave a Whatsapp group without informing the entire group?
Gradually we realize that some Whatsapp groups are useless because what could be an important post is lost between tons of offtopic silly videos and images.

Mute the group still shows new images about new conversations.

Leaving the group creates discomfort among the participants.

How to leave a WhatsApp group without the other participants knowing?

Or is there any way to hide the group from the conversation list?

# Answer
> 1 votes
What you are asking has not been implemented yet.

> How to leave a WhatsApp group without the other participants knowing?

Sorry. They will know when you leave: "Rogério Dec has left the group" will be there for all to see and know.

> Or is there any way to hide the group from the conversation list?

Partially. If you archive the group, it will disappear (actually go to the bottom) from the conversation list. However, when someone in the group sends a message, it will be seen again. Archive it again.

---
Tags: whatsapp-messenger
---


# Question
Title: How to run adb and fastboot commands from Termux?
Is it possible to run `adb` and `fastboot` commands using Termux terminal emulator? I am wanting to run commands from one Huawei T3 7 to another using USB/OTG cable. Need to unlock bootloader but have no access to a PC or laptop.

# Answer
> 5 votes
This question is nearly a duplicate of this which has a detailed answer by @Firelord, except the Termux part. As mention by @DeathMaskSalesman in comment, Termux is more like a Linux environment, but so far it doesn't have `adb` and `fastboot` in repositories, though proposed. Most probably because they are meant for rooted devices. But you can use static binaries (e.g. this or this) on Termux like on usual Terminal emulator app. Make sure to set proper environment variables (`TMPDIR`, `HOME` or `HOMEDIR`).

However you won't be able to run each of them without root because only members of `AID_USB` group are able to read devices in `/dev/bus/usb/` (). Furthermore SELinux restricts unprivileged apps' access to `/sys` and `/dev`.

For `adb` there's a workaround if both devices are connected to same network e.g. Wi-Fi or hotspot. `adbd` can be run to listen on TCP socket instead of USB. It's possible if before turning on "USB Debugging" property `service.adb.tcp.port` () is set to some port (first default is `5555`). Apps can't set properties, so to do this using `setprop` on `adb shell` or by simply executing `adb tcpip 5555`, you need to connect the target device to a PC over USB. Then all you have to do from Termux before sending commands is:

```
~$ adb connect <IP>:5555

```

But `service.adb.tcp.port` is reset on reboots and you have to set it again. There is another property `persist.adb.tcp.port` which persists across reboots but it's meant only for testing and SELinux won't let you set this without root or some system app running with UID `1000`.

Some custom ROMs have built-in toggle to set `service.adb.tcp.port`. But for `fastboot` root is must. However it's possible on Android to access USB OTG devices through `android.hardware.usb` APIs. `fastboot-mobile` is an unofficial library from Google to send `fastboot` commands over OTG. This app (I have no affiliation) also provides similar limited functionality.

---
Tags: adb, fastboot, bootloader, shell, termux
---


# Question
Title: If I encrypt my phone will I still be able to load custom ROMs?
Are there any issues with enabling full encryption and loading custom ROMs or will it be seamless?

# Answer
Encryption is done on the /data partition (where all app-data is stored). However, /sdcard is sometimes encrypted too (if the sdcard is actually internal memory of the phone i.e. not removable).

If the sdcard is also encrypted,then you will be unable to flash ROM's from within Recovery (recovery can't read encrypted sdcard).
> 5 votes

# Answer
If you have an unencrypted `/sdcard`(this is usually true if you have removable SD Card slot), you can install zip from sdcard as always.

If your sdcard is encrypted,too, but you have relatively new device and software(Ice Cream Sandwich or newer), you may be able to use sideload.

* Choose `install zip from sideload` option in your Recovery
* Run this command on your computer: `adb sideload <filename-of-update.zip>`

Then you can continue to flash the ROM. (In my case, the installation process started automatically.)
> 0 votes

# Answer
Encryption it's a software based solution with hardware support. Question is if your custom ROM will support solution. In 2019 I only found one custom ROM which support encryption. It's a AOSP Extended. Other ROMs have encryption options in menu but they didn't work. If you try to enable encryption data partition phone restarts and enter into bootloop. Only formating data partition in TWRP helps getting out of bootloop.
> 0 votes

---
Tags: custom-roms, encryption
---


# Question
Title: How to restore Google Accounts from a local backup in MIUI 10?
Lately, I reset my Redmi Note 6 Pro and even backed up everything.

Now, my question is that if I restore the local backup file will my multiple G-Mail or Google accounts get restored too?

# Answer
> 0 votes
No, it won't restore automatically. You have to manually sign in all the accounts even after back

---
Tags: backup, miui, miui-10
---


# Question
Title: (MIUI 9.5) got "waiting for wifi" when tried to install apps using mobile data
How to download from Google Play without Wi-Fi setup ? I always got "waiting for wifi" when tried to install apps using mobile data.

Untick download using Wi-Fi doesn't help. BTW, I'm using MIUI 9.5 Chinese stable.

# Answer
> 0 votes
I downloaded then install the latest version of Google Play Store from APKMirror, After the installation, the problem is gone!

However, I still don't know why Playstore couldn't update itself.

# Answer
> 0 votes
Go to Play Store-\> Settings -\> App Download Preference and select 'Over any network'

---
Tags: google-play-store, miui
---


title: LG K10 2017 M250E deleted partitions

text:
# Question
Title: LG K10 2017 M250E deleted partitions
I wanted restore factory settings. Unfortunately I erased partitions in fastboot mode. Now the device is showing only the LG boot logo and keeps rebooting. I don't have access to fastboot mode and download mode. I probably need scatter file and flash new ROM with SP Flash tool, but i can't do this scatter file.

Anyone can help me?

# Answer
> 0 votes
I would recommend you look for LG K10 2017 M250E ROM firmware dump online. I did a quick google and found a few. Notably: http://www.lgstockrom.com/lg-k10-2010-m250e. The results in a .kdz file that requires special software to open. That software is specific to LG and was easily located online. There's no other way that I know of to recover those partitions.

---
Tags: unbricking, lg, mediatek
---


# Question
Title: Firefox on Android, "Save to PDF" -- where does the PDF go?
I am using the steps here.

But... nothing happens, and when I troll around the file system, I do not spot any new pdf.

What am I doing wrong?

# Answer
> 1 votes
The page is downloaded as a PDF in your preferred download location, which by-default is the directory named Download under Internal Storage. When successful, a notification is shown that the page has been downloaded and it can also be seen through Tools \> Downloads section within Firefox.

If you do not give Storage permission to Firefox, Firefox confuses the user when trying to save a page. When my Firefox didn't have Storage permission and I tried to save a page, it just did nothing, as in no UI response.

---
Tags: firefox-for-android
---


# Question
Title: Does Android's implementation of SELinux's MAC inhibit apps with root privileges from accessing other app's data?
Starting with Android 4.4, SELinux's MAC is enforced. Does this mean that if an app somehow can get installed and exploit the kernel to get root privileges, that MAC will still prevent that app with root privileges from accessing private app data?

Android Documentation says,

> SELinux can be used to label these devices so the process assigned the root privilege can write to only those specified in the associated policy. In this way, the process cannot overwrite data and system settings outside of the specific raw block device.

As a reference, I am implementing a Mobile Device Management system and in the process I have to determine how secure Android OS is itself. That is why I need to know how secure corporate data stored on a device is to rootkits, spyware, and other malware.

*P.S. This was posted on the 'Unix & Linux' site but no one has been able to answer it, and I was suggested by one of their users to ask this community, any help is much appreciated. Thank you.*

# Answer
> 0 votes
For future visitors' reference, it depends on the SELinux context of the root process. In DAC UID `0` is the ***super user*** which can access any resource on the device allowed by kernel. MAC (SELinux in our case) is denied by-default i.e. no process can access anything unless a policy rule is defined to allow the access.

So there is no ***super context*** in SELinux but it's possible to define one. That's what rooting apps do since Lollipop. Magisk, for instance, defines `u:r:magisk:s0` with unrestricted access to any other context. Any process running with UID `0` and `u:r:magisk:s0` would be able to access everything on device including other apps' data.

It depends on the exploit with what context it's able to run a process. With SELinux enforced, it's very hard to inject something to policy.

For details see:

---
Tags: security, root-access, malware, selinux
---


# Question
Title: How do I disable the Mobile Hotspot feature?
As far as I can remember, some carriers disable this feature. Now, we have a few dozen phones that we want to deploy to some schools and we would like to disable this feature.

How do I achieve this? A few guesses that I have would be to add/edit something in `build.prop` or some hidden Android API (can't find any here).

---

**Update:** I figured it out a long time ago. The solutions here do work gracefully and the phones behave properly. Normal WiFi is not affected (because `hostapd` only manages the AP). Upon testing, the worst that happens is

```
2018-12-04 23:12:23.680 3207-3753/? E/SoftapController: Unable to open connection to supplicant on "/data/misc/wifi/hostapd/wlan0": No such file or directory

```

in the `logcat`. At the same time, the mobile hotspot setting switch flips back off automagically.

What I did was just rename `hostapd` to something else. Moving/deleting/changing permissions would also work.

# Answer
In addition to the other answers, I'd like to add that you can alternatively remove the execution permission from that file:

```
su
mount -o rw,remount /system
chmod 0644 /system/bin/hostapd

```

This approach looks more Unix-styled.

To restore it, do the same commands again, but use `0755` instead of `0644` (i.e. put the execute permission back).
> 2 votes

# Answer
I managed to solve this without deleting hostapd file (with this method you can easily reactivate hotspot functionality renaming hostapd back to its original name).

1. Root your phone
2. Open up adb connection
3. Enter these commands:
```
su
cd system
cd bin
mount -o rw,remount /system
mv hostapd inactive_hostapd
mount -o ro,remount /system

```
4. Reboot your phone and you're ready to go.

If you want hotspot functionality back to your phone, just rename it back to 'hostapd' (`mv inactive_hostapd hostapd`).

Tested on Motorola Moto C Plus.
> 6 votes

# Answer
Erase this file (with root): `system/bin/hostapd`
> 3 votes

# Answer
Without rooting phone:

Install a display overlay app like "AppLock" and block access to "Settings".
> 0 votes

---
Tags: wi-fi, networking, wifi-hotspot, wifi-tethering
---


# Question
Title: How Can I Check the Location of a File (e.g. Cluster or Sector #) in the Internal Storage?
I would like to know If I certain file moves on the Flash memory (internal storage), between writes/updates to it.

Is there some way I can get the file's location on the Flash memory?
(Cluster Number, Sector Number, etc)

I am using Android v8,
and can either install use an App for that,
or use the Command Line, If a relevant command exists in the Linux command-prompt that Android has.

# Answer
I assume by saying ***cluster*** you mean Windows' allocation unit, commonly called ***block*** in Linux world. It's a unit of data storage a filesystem uses. A cluster/block may consist of or correspond to multiple ***sectors*** on underlying storage media (HDD or flash storage). Sector is the minimum atomic unit of storage an OS can read or write. Block size is decided at the time of filesystem creation i.e. when we format a partition (`high-level formatting`). Partitions and filesystems make it easy to categorize and organize our data on the physical storage device.

**HARD DISK DRIVES**

"Sector" may refer to a ***physical sector*** or ***logical sector***. In early days of HDDs there were only physical sectors created by dividing clusters/tracks on rotating disks into small parts. **C**ylinder/**H**ead/**S**ector (CHS) has been a popular method of addressing before the **L**ogical **B**lock **A**ddressing (LBA) was devised. Instead of directly dealing with physical sectors, OS now talks to disk controller firmware (through SATA/SCSI commands) referring an LBA number. Firmware in return maintains an ***LBA to CHS mapping*** itself, which includes ECC, G-list (disk's defect table) etc. This mapping (1:1 / sequenced / linear) (ref) is created during `low-level formatting` of disk drive when manufacturing, which never changes except if some sector is marked bad and remapped to some spare sector. So the OS / filesystem is aware of the physical geometry of the disk, which is propotional to the geometry of LBAs.

**FLASH STORAGE**

On flash media (SSDs, eMMC, UFS, SD cards etc.) there are no rotating disks and hence no cylinders. NAND flash is made of silicon cells, each cell consists of one (**S**ingle-**L**evel-**C**ell), two (**M**ulti-**LC**), three (**T**riple-**LC**) or four (**Q**uad-**LC**) bits. Cells are grouped into **pages** (e.g. of 4KB) and pages into **erase blocks** (e.g. of 128 KB). LBAs to **P**hysical **B**lock **A**ddresses mapping is fully controlled by **F**lash **T**ranslation **L**ayer; a part of flash controller firmware. OS knows nothing about it, it can see at maximum the LBAs, not what's happening below it. Not even the ECC of failed memory cells, and that's why we don't realize the bad health of eMMC unless it fails, except by reading `EXT_CSD` (requires root) using mmc-utils or from `/sys/class/mmc_host/*/*/life_time` (if driver supports).

Since a page of memory can't be just overwritten unlike HDDs, a whole *EraseBlock* has to be ***Erased*** first before being ***Programmed*** (written). A side effect is that a number of pages are erased/re-written and the physical mapping changes even if a small file is edited. This unnecessary read-modify-write (RMW) is called **W**rite **A**mplification. On HDDs, files aren't physically replaced unless shortened or elongated. OS is aware of these physical changes on HDD, but not on flash memory.

**WHAT IS SECTOR?**

So after all what we are concerned with is logical sector. Storage media informs the OS of its logical sector size but *“the default of 512 covers most hardware”* because HDDs have been using `512B` from early days, though things have changed with 4Kn format for HDDs too. `512B` is the size what OS sees, in actual it's a bit larger to make some room for header, ECC etc. Physical sector size on flash storage is of no use to us.

---

**Your queries:**

> I would like to know if a certain file moves on the Flash memory (internal storage), between writes/updates to it.

It depends on the definition of *“move”*. On flash storage, even if you don't write to a file, it may keep on changing its true physical location due to background **G**arbage **C**ollection; a phenomenon controlled by FTL internally to reduce WA, to achieve ***Wear Leveling*** and to provide high write throughput (*Program* operations) by deleting ***invalid pages*** in background (*Erase* operations).

> Is there some way I can get the file's location on the Flash memory (Cluster Number, Sector Number etc.)?

Yes you can get the filesystem block addresses of a file which have a linear mapping with LBAs of underlying block device (partition). But these addresses aren't the actual/physical *file's location on the Flash memory*. However usually one isn't concerned with true physical location unless some forensics or data recovery is involved.

**EXAMPLE**

```
~# cat /sys/block/mmcblk0/queue/logical_block_size
512
~# blockdev --getss /dev/block/by-name/cache
512
~# tune2fs -l /dev/block/by-name/cache | grep 'Block size'
Block size:               4096

```

So the sector size here is 512B while filesystem block size is 4KiB. Let's create a test file:

```
~# echo foobar >/cache/test_file
~# cat /cache/test_file
foobar
~# filefrag -sv -b512 /cache/test_file
Filesystem type is: ef53
File size of /cache/test_file is 7 (8 block of 512 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       7:     307200..    307207:      8:             last,eof
/cache/test_file: 1 extent found

```

* `debugfs -R 'stat test_file' /dev/block/by-name/cache` can also be used in place of `filefrag`

Created file (of 7 bytes size) occupies 1 filesystem block. `-b 512` converts block size (4096B) to sector size (512B). "test\_file" should be at 307200th sector, same for partition and filesystem because filesystem occupies whole partition:

```
~# blockdev --getsize64 /dev/block/by-name/cache | awk '$1 /= 4096'
65536
~# tune2fs -l /dev/block/by-name/cache | grep 'Block count'
Block count:              65536

```

Let's read the file directly from partition:

```
~# dd if=/dev/block/by-name/cache skip=307200 count=1 | head -c7
foobar

```

It's there. Now locate the file from the start of eMMC:

```
~# readlink /dev/block/by-name/cache
/dev/block/mmcblk0p25
~# cat /sys/block/mmcblk0/mmcblk0p25/start
7471104
~# dd if=/dev/block/mmcblk0 skip=$(( 7471104 + 307200 )) count=1 | head -c7
foobar

```

So even if filesystem and partition are deleted, you can read the file (provided that it's not overwritten).

Let's do some more digging:

```
~# rm /cache/test_file; sync; echo -n 1 >/proc/sys/vm/drop_caches
~# dd if=/dev/block/mmcblk0 skip=$(( 7471104 + 307200 )) count=1 | head -c7
foobar

```

File is deleted from filesystem, but physically still there. Let's ask FTL to delete it permanently:

```
~# fstrim /cache; sync; echo -n 1 >/proc/sys/vm/drop_caches
~# dd if=/dev/block/mmcblk0 skip=$(( 7471104 + 307200 )) count=1 | head -c7

```

And it's gone. But most probably it's still there somewhere in ***O****ver-**P**rovisioning Space*, scheduled to be *Erased* in next GC, just we don't know where it is.

***Note:***

* `dd` on naked partitions is a killer. **Be cautious!**
* `tune2fs` and `filefrag` are part of e2fsprogs. `filefrag` isn't shipped with Android, build from source or try this one. `fstrim` is a busybox applet.

**RELATED:**
> 0 votes

---
Tags: internal-storage, file-system
---


title: Why won't 'usb debugging' mode stay on?

text:
# Question
Title: Why won't 'usb debugging' mode stay on?
I'm trying to put my phone into usb debugging mode, but it won't work. I'll turn it on, and it will turn off right away.. Has anyone else gone through this?

I'm running 2.3.4 on a zte score.

# Answer
I had a similar issue with Huawei P Smart (today on Android Oreo). Revoking USB debug permissions enabling USB debugging and then re-attaching it with 'transfer files' option, followed by accepting the PC certificate fingerprint appeared to work - at least for the time being.
> 4 votes

# Answer
I had the same issue with my Mate 20x. Someone suggested that enabling Allow ADB debugging in charge only mode would keep the debugging switch on and it did the trick.
> 4 votes

---
Tags: usb-debugging
---


title: Changing to PTP MTP from charging mode?

text:
# Question
Title: Changing to PTP MTP from charging mode?
So now, I just plugged my phone which is a Samsung Galaxy J2 Prime (SM-G532G), a notification pops up if I want an MTP or PTP devices, since I am charing I chose Charging on USB mode. Now when I plugged my phone that notification is nowhere in sight so I cannot change back to PTP or MTP.

\[EDIT\] Just like to point out one thing. I've been using this same exact cable for software development purporses so yes it is working when I use MTP and for data transfer. I just don't have the option anymore to switch from USB Charging mode to either MTP to PTP.

Any ideas?

Phone: \- Samsung Galaxy J2 Prime (SM-G532G) \- Android 6.0.1

Thanks!

# Answer
First go this path: About Device --\> Software Info --\> Click to Build Number up to enable Developet option in mobile.

Then go to Setting and open this path: Developer Option --\> USB Configuration --\> Change mode from Charging to MTP.
> 2 votes

# Answer
You can reach this setting in another way by dialing \*#0808#, it will take you straight to the USB Settings. Tap on AP then MTP. You may need to reboot.
> 0 votes

---
Tags: usb, usb-connection-mode, mtp
---


# Question
Title: How to migrate contacts2.db between android devices (SELinux enabled)?
I exported a `contacts2.db` from a samsung s6 and try to import it to a Samsung S2 tab. both phones operate on android 6 and are rooted. What I've achieved so far:

* I managed to copy the file from the source device with:

```
adb shell "su -c cat /path/to/contacts2.db" > contacts2.db
```
* I managed to restore the database by copying the file to the sdcard of the destination device and then via `adb shell`

```
su
cd /data/data/com.android.contacts/databases/
mv contacts2.db contacts2.db.bak
cp /sdcard/contacts2.db .
chown  u0_a4:u0_a4 contacts2.db
chmod 600 contacts2.db
cd ..
restorecon -Rv databases
kill $(ps | grep contacts | awk '{ print $2 }')

```
* Then I start contacts again via gui, rebooted, but the contacts do not show up. It does not seem to be a file permission error, but a database problem? The devices run the same samsung stock firmware.

What did I miss here?

# Answer
> 0 votes
The format of the database is likely slightly different on the 2 devices. As quoted from your own comment...

> ...a database version is part of the database, which prevents contacts from using an incorrect (too new/old) database layout.

Personally I've never had any sort of success moving that file around devices with somewhat different ROMs, but when they're flashed with the same ROM, just dropping the file in that location (without touching permissions, etc.) will do.

# Answer
> 1 votes
Contacts are stored in `data/data/com.android.providers.contacts/databases`.

If you simply want to sync contacts in new phone, add same Google account on newer phone. It will automatically sync in background.

You can also try Samsung SmartSwitch.

# Answer
> 0 votes
Here's some partial information that I was able to figure out. The `contacts2.db` database, like all SQLite3 databases, has a pragma (metadata) called `user_version` (which can be read with `PRAGMA user_version` in sqlite3) which is an integer typically used to store a database schema version number. This is used, in particular, by many Android databases and `contacts2.db` in particular, in running automatic migration code that will attempt to perform the required schema conversions when the database version does not match that expected by the code (here, the `com.android.providers.contacts` package): the migration code is in `ContactsDatabaseHelper.java` in the Android code. Sadly, there are many things that can go wrong in this migration (and when it fails, it usually fails catastrophically, meaning all the contents are lost). Sometimes it helps to check the `user_version` on the database before migration, and possibly perform or repair migrations “by hand” (using sqlite3) following what the Java code attempts to do. I've been able to salvage my contacts database once in this way (but of course, it requires some knowledge of SQL).

---
Tags: 6.0-marshmallow, restore
---


title: Do Android One tablets exist?

text:
# Question
Title: Do Android One tablets exist?
I am looking for the zero bloat, 100% pure Android One experience.

So far, I have only been able to find phones with Android One, like the Xiaomi Mi A2.

Do Android One tablets exist? Or if not, are there resellers of rooted hardware with reflashed ROM with stock Android?

# Answer
> 5 votes
The Wikipedia page on Android One has a complete list of all Android One devices released, and unfortunately there doesn't seem to be any tablets.
There couldn't be any tablet resellers with Android One (the source code is not available, and it is impossible to port from phones to tablets) and there's none I'm aware of selling stock Android either.
If you don't mind the warranty and willing to do some tweaking (it's almost always worth it) you can flash a stock AOSP ROM yourself, as there's no risk for **most** devices (some are risky) XDA Forum for your device should have ROMs, flashing guides and guides on how to recover your device if something goes wrong. It could be good to check there if these are present there before buying a device.
Good luck!

---
Tags: stock-android, android-one
---


# Question
Title: High battery drain on Nexus 6P with Pixel Experience
I have a nexus 6P with a fairly new battery (some months). It worked quite well, until I decided to flash Pixel Experience because it is the only ROM I found which supports the 6P with Android P. After flashing, the phone suddenly started draining its battery extremely fast (1h screen time, ~4hs idle). I couldn't find any troubleshooting for that special scenario, do you have any ideas on what to do? I would prefer to try everything before changing ROM because I really like to have Android P.

# Answer
Have you tried Greenify? It's on Google Play Store. Install it and grant root permissions. You can read about it here: https://forum.xda-developers.com/apps/greenify

You can also try to flash Derp Kernel

Credit to https://www.reddit.com/r/PocoPhones/comments/askuec/pixel\_experience\_battery\_drain/
> 0 votes

---
Tags: custom-roms, battery-life, nexus-6p
---


# Question
Title: How to grant an app root access without GUI interaction?
I'm trying to update my APN settings using:

```
adb shell "su -c 'content update --uri content://telephony/carriers --bind name:s:\""SDR"\" --bind apn:s:"SDR-internet"'"

```

The first time I run this command I receive a superuser request from the package: `com.android.shell`. I can grant this manually but I'm hoping to automate the process for practice and knowledge.

I've tried to use the following to list all permissions, but can't find superuser:

```
adb shell pm dump package com.android.shell

```

I attempted the following:

```
adb shell pm grant com.android.shell android.permission.SUPERUSER
adb shell pm grant com.android.shell android.permission.REQUEST_SUPERUSER
adb shell pm grant com.android.shell android.permission.ACCESS_SUPERUSER

```

But receive an error:

```
    Exception occurred while executing:
java.lang.IllegalArgumentException: Unknown permission: android.permission.REQUEST_SUPERUSER
    at com.android.server.pm.permission.PermissionManagerService.grantRuntimePermission(PermissionManagerService.java:1398)
    at com.android.server.pm.permission.PermissionManagerService.access$900(PermissionManagerService.java:89)
    at com.android.server.pm.permission.PermissionManagerService$PermissionManagerInternalImpl.grantRuntimePermission(PermissionManagerService.java:2093)
    at com.android.server.pm.PackageManagerService.grantRuntimePermission(PackageManagerService.java:5411)
    at com.android.server.pm.PackageManagerShellCommand.runGrantRevokePermission(PackageManagerShellCommand.java:1730)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:217)
    at android.os.ShellCommand.exec(ShellCommand.java:103)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21330)
    at android.os.Binder.shellCommand(Binder.java:634)
    at android.os.Binder.onTransact(Binder.java:532)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2821)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3856)
    at android.os.Binder.execTransact(Binder.java:731)

```

**Edit:**

I tried:

```
adb shell su cat /data/adb/magisk.db

```

Which gave:

```
    SQLite format 3@

�                      .�
�       �-�d
N�tablehidelisthidelist
CREATE TABLE hidelist (process TEXT, PRIMARY KEY(process))/ Cindexsqlite_autoindex_hidelist_1hidelist
                             X�tablestringsstringCREATE TABLE strings (key TEXT, value TEXT, PRIMARY KEY(key))-Aindexsqlite_autoindex_strings_1stringsZ�tablesettingssettingsCREATE TABLE settings (key TEXT, value INT, PRIMARY tablelogslogsCREATE TABLE logs (from_uid INT, package_name TEXT, app_name TEXT, from_pid INT, to_uid INT, action INT, time INT, command TEXT)��tablepoliciespoliciesCREATE TABLE policies (uid INT, package_name TEXT, policy INT, until INT, logging INT, notification INT, PRIMARY KEY(uid))/Cindexsqlite_autoind��/ies_1pol�com.android.shell
���7�/    )�com.android.shellShell�l��uR/system/bin/sh7 /    )�com.an!�id.shmagiskhidel��?5/system/bin/sh
��!magiskhide
��6ucom.google.android.gms/.droidguard.DroidGuardService

```

That's pretty ugly, so I tried using `sqlite3` but it provides no tables? I was expecting a list of something at the very least.

```
sqlite> .mode line
sqlite> .headers on
sqlite> .tables
sqlite>

```

I'm using Magisk Manager v18.

# Answer
> 3 votes
`android.permission.ACCESS_SUPERUSER` was defined by SuperSU but:

> Due to changes in Android 5.0 Lollipop, this permission has been deprecated and is completely ignored from SuperSU v2.30 onwards

Also only app which declares a permission in its AndroidManifest.xml file can be granted that permission. Shell (`com.android.shell`) is an AOSP's dummy app to define UID for `adbd`, it must not have any such third party permission in its Manifest.

Magisk doesn't use this or any other such permission at all. So you have to grant the permission through user interface. Or try to modify database or configuration file directly where permission preferences are stored. In case of Magisk it's `sqlite3` database (`/data/adb/magisk.db`):

```
~# sqlite3 /data/adb/magisk.db .tables
hidelist  logs      policies  settings  strings
~# sqlite3 /data/adb/magisk.db '.mode column' '.headers on' 'select * from policies'
uid         package_name  policy      until       logging     notification
----------  ------------  ----------  ----------  ----------  ------------
10146       com.termux    2           0           1           1
~# sqlite3 /data/adb/magisk.db "INSERT INTO policies (uid,package_name,policy,until,logging,notification) VALUES(2000,'com.android.shell',2,0,1,1)"
~# sqlite3 /data/adb/magisk.db '.mode column' '.headers on' 'select * from policies'
uid         package_name  policy      until       logging     notification
----------  ------------  ----------  ----------  ----------  ------------
10146       com.termux    2           0           1           1
2000        com.android.  2           0           1           1
~# sqlite3 /data/adb/magisk.db 'DELETE FROM policies WHERE uid = 2000'

```
* For help on SQLite: sqlite.org
* Above commands are working at the moment but Magisk may change database location, table names, table structures etc. any time.
* Values may possibly be cached in running processes. So your changes may get ignored or overwritten. In that case putting a modified database from recovery (with proper permissions) may work. I didn't try though.

---
Tags: root-access, shell, superuser, apn, magisk
---


# Question
Title: How to remove/hide "Likee Videos" from imo main menu?
As shown in the picture below, Likee Videos appears between stories and recent chats? How can we get rid of Likee videos, so that it doesn't not appear there?

# Answer
> -1 votes
Go to settings Then you can see " Function" Click it turn off likee vedio

---
Tags: imo-instant-messenger
---


# Question
Title: Is it possible to disable HAXM feature for an AVD based on Intel x86 CPU?
In Android Studio V3.5, I created some AVDs which are based on Intel x86 CPU. But I failed to start any of them because any HAXM devices couldn't be found.

I have enabled VT-x in my BIOS setting. When I tried to install 'Intel Hardware Accelerated Execution Manager V7.0.5', it reported "failed to configure driver unknown error. failed to open driver.".

My PC is Windows 7 64-bit. I couldn't find any solutions.

So, is it possible to disable HAXM feature for an AVD based on Intel x86 CPU?

# Answer
> 0 votes
The Android `emulator.exe` has a lot of command-line options.

The one you need is `-accel`:

```
-accel <mode>

Valid values for mode are:
  auto - Determine automatically if acceleration is supported and use it when possible (default).
  off  - Disables acceleration entirely, which is primarily useful for debugging.
  on   - Force acceleration. If KVM or HAXM isn't installed or usable, the emulator won't > start and prints an error message.

```

Therefore you should use `-accel off`

For more details: https://developer.android.com/studio/run/emulator-acceleration.html

---
Tags: avd-manager, intel-haxm
---


# Question
Title: How to use Wi-Fi and hotspot at the same time on Android?
Is it possible to create a Wi-Fi hotspot from an Android device using its Wi-Fi connection rather than Cellular data?

Without the help of any third-party application (Like Netshare), by changing some code in setting application?

**Note:**
I'm having AOSP 7.0 so there is no question of the root device.

# Answer
# WI-FI REPEATER MODE ON ANDROID

I don't know of any straight forward tool other than Android apps (which use Wi-Fi Direct) that will let use wi-fi and hotspot at the same time. Neither it's a standard feature introduced in custom ROM's so far (AFAIK). However you can do this manually if you are comfortable with commandline usage. **But it's NOT possible without root.**

# WHAT'S NEEDED

* Rooted device
* Device must support nl80211 driver

All newer devices with Qualcomm MSM chipset support this AFAIK e.g. Xiaomi's Redmi Note 4 (mido) built with MSM8953.

Kernel must also support this driver. To confirm:

```
~# zcat /proc/config.gz | grep CONFIG_CFG80211
CONFIG_CFG80211=y

~# lshw | grep wireless=
       configuration: broadcast=yes driver=wcnss_wlan multicast=yes wireless=Qcom:802.11n

```
* Device must support `managed` mode and `AP` mode at the same time.

```
~# iw phy | grep -iA2 'valid interface combinations'
        valid interface combinations:
         * #{ managed } <= 3, #{ IBSS, AP } <= 1, #{ P2P-client, P2P-GO } <= 1,
           total <= 3, #channels <= 1

```

This means that your wireless chip supports creating at maximum 3 interfaces, one of which can be in `AP` mode, with others being in `managed` or `P2P` mode, and at maximum 1 channel is supported. If channels value is 2, you can operate both interfaces on different channels. However using same channel is recommended to avoid interference.

Standard wi-fi interface on Android devices (usually `wlan0`) is always run in `managed` mode. We are going to create a virtual wireless interface to be run in `AP` mode.
* Linux tools: `iw`, `ip`, `iptables`, `hostapd`, `dnsmasq` etc.

You can also use `wpa_supplicant` in place of `hostapd` with slightly different configuration.

Usually these binaries come bundled with Android. However there are modifications by Google and vendors to make these tools fit for Android needs. So they may not behave as standard Linux tools and in rare cases you might need to compile them from source.

Wireless tools should be newer enough to have support for driver `nl80211`.
* Terminal emulator (Termux is a good one)

# STEPS:

For ease of use, I have summarized all steps in a shell script with brief explanation. You can put this on your $PATH e.g. `/system/bin/android_ap` and execute it directly: `~# android_ap start`. A Custom Quick Settings Tile can also be created for ease of use.

```
#!/system/bin/sh
set -e
#set -x

[ "$(id -u)" != 0 ] && echo 'Not running as root!' && exit

SSID=MyAP                           # set this to your desired string (avoid spaces and non-ascii characters)
PASSCODE=foobarfoobar               # set this to your desired string (8 to 63 characters)
WIFI_INTERFACE=wlan0                # set this according to your device (lshw | grep -A10 Wireless | grep 'logical name')
SUBNET=192.168.42                   # must be different than WIFI_INTERFACE
AP_INTERFACE=${WIFI_INTERFACE}-AP
IP=${SUBNET}.1
DIR=/data/local/tmp/$AP_INTERFACE

USAGE()
{
    echo 'Usage:'
    printf '\t%s\n' "$(basename "$0") start|stop"
    exit
}

STOP() {
    # hope there are no other instances of same daemons
    pkill -15 hostapd dnsmasq
    # remove iptables rules
    iptables -D INPUT -i $AP_INTERFACE -p udp -m udp --dport 67 -j ACCEPT
    iptables -t nat -D POSTROUTING -s ${SUBNET}.0/24 ! -o $AP_INTERFACE -j MASQUERADE
    iptables -D FORWARD -i $AP_INTERFACE -s ${IP}/24 -j ACCEPT
    iptables -D FORWARD -i $WIFI_INTERFACE -d ${SUBNET}.0/24 -j ACCEPT
    # delete AP interface
    ip link show | grep "${AP_INTERFACE}:" && iw $AP_INTERFACE del
    rm -rf $DIR
} >/dev/null 2>&1

CHECKS()
{
    for binary in iw ip iptables hostapd dnsmasq; do
        which $binary >/dev/null && continue
        exit
    done

    # this check is necessary if need to use single channel
    if iw dev $WIFI_INTERFACE link | grep -q '^Not connected'
    then
        echo 'First connect to Wi-Fi for internet sharing.'
        exit
    fi

    if ! iw phy | grep -iqE '{.*managed.*AP.*}' && ! iw phy | grep -iqE '{.*AP.*managed.*}'
    then
        echo 'AP mode not supported.'
        exit
    fi
}

CREATE_AP()
{
    if ! iw dev $WIFI_INTERFACE interface add $AP_INTERFACE type __ap
    then
        echo "Couldn't create AP."  # :(
        exit
    fi
}

FIND_CHANNEL()
{
    # find what channel wi-fi is using
    CHANNEL="$(iw $WIFI_INTERFACE scan | grep -C5 "$(iw $WIFI_INTERFACE link | grep SSID | cut -d: -f2-)" | grep -i channel | tail -c3)"
    if [ -z "$CHANNEL" ]
    then
        echo  "Couldn't find channel info. Are you are connected to Wi-Fi?"
        STOP
        exit
    fi

    # if more than 1 channels are supported, use any frequency
    [ ! -z "$CHANNEL" ] || CHANNEL=11
}

ADD_IP_ROUTE()
{
    # activate the interface and add IP
    ip link set up dev $AP_INTERFACE
    ip addr add ${IP}/24 broadcast ${SUBNET}.255 dev $AP_INTERFACE

    # routing table 97 needs to be put necessarily on Android
    # because in main table, route for $WIFI_INTERFACE takes priority (ip route show)
    # and all traffic goes there ignoring $AP_INTERFACE
    ip route add ${SUBNET}.0/24 dev $AP_INTERFACE table 97
}

HOSTAPD_CONFIG()
{
    mkdir -p "$DIR"
    cat <<-EOF >$DIR/hostapd.conf
        # network name
        ssid=$SSID
        # network interface to listen on
        interface=$AP_INTERFACE
        # wi-fi driver
        driver=nl80211
        # WLAN channel to use
        channel=$CHANNEL
        # ser operation mode, what frequency to use
        hw_mode=g
        # enforce Wireless Protected Access (WPA)
        wpa=2
        # passphrase to use for protected access
        wpa_passphrase=$PASSCODE
        # WPA protocol
        wpa_key_mgmt=WPA-PSK
    EOF

    # you can tune other parameters such as mtu, beacon_int, ieee80211n, wowlan_triggers (if supported)
    # for better performace and options such as *_pairwise for better security
}

INTERNET_SHARE()
{
    # allow IP forwarding
    echo 1 >/proc/sys/net/ipv4/ip_forward
    # route and allow forwrding through firewall
    iptables -t nat -I POSTROUTING -s ${SUBNET}.0/24 ! -o $AP_INTERFACE -j MASQUERADE
    iptables -I FORWARD -i $AP_INTERFACE -s ${IP}/24 -j ACCEPT
    iptables -I FORWARD -i $WIFI_INTERFACE -d ${SUBNET}.0/24 -j ACCEPT
}

DHCP_SERVER()
{
    # configuration
    cat <<-EOF >$DIR/dnsmasq.conf
        # we dont want DNS server, only DHCP
        port=0
        # only listen on AP interface
        interface=$AP_INTERFACE
        listen-address=$IP

        #bind-interfaces

        # range of IPs to make available to wlan devices andwhen to renew IP
        dhcp-range=$IP,${SUBNET}.254,24h
        # where to save leases
        dhcp-leasefile=$DIR/dnsmasq.leases
        # set default gateway
        dhcp-option-force=option:router,$IP
        # add OpenDNS servers for DNS lookup to announce
        dhcp-option-force=option:dns-server,208.67.220.220,208.67.222.222

        #dhcp-option-force=option:mtu,1500

        # respond to a client who is requesting from a different IP broadcast subnet
        # or requesting an out of range / occupied IP
        # or requesting an IP from expired lease of previous sessions
        # or obtained from some other server which is offline now
        dhcp-authoritative
        # don't look for any hosts file and resolv file
        no-hosts
        no-resolv
    EOF

    # open listening port
    iptables -I INPUT -i $AP_INTERFACE -p udp -m udp --dport 67 -j ACCEPT

    # start dhcp server
    dnsmasq -C $DIR/dnsmasq.conf
}

if [ "$1" = stop ]
then
    STOP || true
    exit
fi

[ "$1" = start ] || USAGE

# basic check
CHECKS
# stop running instances
STOP || true
# create virtual wireless interface
CREATE_AP
# find channed already used ny wi-fi
FIND_CHANNEL
# configre newly created interface
ADD_IP_ROUTE
# configure acces point daemon
HOSTAPD_CONFIG
# start hostapd
hostapd -B $DIR/hostapd.conf
# share internet from Wi-Fi to AP
INTERNET_SHARE
# run a dhcp server to assign IP's dynamically
# otherwise assign a static IP to connected device in subnet range (2 to 254)
DHCP_SERVER

echo Done.

```

## SOURCES:
> 8 votes

# Answer
There is an app called VPN Hopspot - Tethering/Wi-Fi repeater on Google Play, it's open sourced on GitHub at here. Should work on most recent android devices powered by snapdragon SoC (root required).

Disclaimer: I'm not affiliated with this app.
> 3 votes

# Answer
You can not simply do it without root. But you can use USB and BlueTooth tethering using a Wi-Fi network. I would suggest using BlueTooth tethering if you want to share internet on other phones because it is a mess to do all that to use Wi-Fi and hotspot at same time.
> 0 votes

---
Tags: wi-fi, 7.0-nougat, wifi-hotspot, aosp
---


# Question
Title: How does Windows interact with Android Internal Storage?
I have a simple question which I can't find the answer for We all know that Microsoft Windows doesn't support partition formats such as ext4 or f2fs, however even this being the case, how can it interact with Android internal storage seeing as it is formatted in ext4? (for example)

# Answer
> 1 votes
Windows doesn't actually mount the partition, a common filesystem can be only mounted once at a time. Android actually uses MTP (media transfer protocol) to allow copying files over USB.

---
Tags: file-system, windows, partitions
---


title: Google Play Subscription

text:
# Question
Title: Google Play Subscription
I have bought a subscription on some google play app but when I was paying for it I have entered wrong email address that I am using on google play.

Now I cant see my subscription on "my subscriptions" list. Is there a way to cancel it now?

# Answer
> 0 votes
These are the steps to Cancel or change a subscription on Google Play

> **Cancel a subscription**
>
> Uninstalling the app will not cancel your subscription.
>
> 1. On your Android phone or tablet, open the Google Play Store Google Play. 2.Check if you’re signed in to the correct Google Account.
> 2. Tap Menu Menuand then Subscriptions.
> 3. Select the subscription you want to cancel.
> 4. Tap Cancel subscription.
> 5. Follow the instructions.
>
> If you have a subscription with an app and the app gets removed from Google Play, your future subscription will be canceled. Your past subscriptions will not be refunded.
>
> **What happens after you cancel**
>
> When you cancel a subscription you’ll still be able to use your subscription for the time you’ve already paid.
>
> For example, if you buy a one-year subscription on Jan. 1 for $10 and decide to cancel your subscription on July 1:
>
> You’ll have access to the subscription until Dec. 31. You won’t be charged another yearly subscription of $10 the following Jan.

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


# Question
Title: How can I remotely manage files on a usb drive attached to an Android TV
I would like to

* send files to a usb hard drive attached to my Android TV
* from my (Windows) PC

How can I do that?

---

Both the Android TV and my PC are connected to the same Wifi Network

# Answer
> 0 votes
Install teamViewer app on your TV and PC. Then you can connect using it from your PC as remote.

But teamviewer consumes data for this. So, if you have an unlimited data plan try this.

---
Tags: file-transfer, android-tv
---


# Question
Title: Nokia phone has pre-installed survey: how can I remove it?
I just bought a Nokia 6.1 phone. On the whole I like it, but today this popped up:

The app is called "NPS" ("Net Promoter Score"?) version 9.0010.50. I found a discussion of it here, but the only way mentioned to disable it doesn't work (my "User Experience Program/Diagnostic Report" option is already off).

I don't like my time being wasted, but I like even less the idea that the phone is "phoning home" to yet another company.

Any suggestions for how to disable or get rid of this app? (I'm tempted to respond as negatively as possible to every question the app poses...)

# Answer
> 2 votes
If you are familiar with adb and the command prompt you can remove any apps including system apps with this command:

`adb shell pm uninstall --user 0 com.evenwell.nps`

com.evenwell.nps is the package name, you can see every app's package name with an app like APK Manager or Package Manager, etc Comfirmed successfully done on my nokia 6.1 I do this for several system apps that I don't have any use for so they don't use my battery unnecessarily, just obviously do not delete anything if you do not know for sure what it is there are things that may look strange or unneeded that are actually there in order for the device to run and you can ruin your phone. Upon factory reset, all things are reinstalled normally.

---
Tags: bloatware, nokia-6.1
---


# Question
Title: Adding custom bootup script to Android-x86 Nougat
I've been happy using Android-x86 Nougat on my system. Thanks to everyone who made that work. I'm now trying to make one small change which is that I want to run a custom `init` script (a shell script) at bootup.

It seemed like a simple idea which I've done before on KitKat without problems. I modified `init.rc` and added a service to start my script. But what happens is on bootup, I see:

```
04-17 13:16:14.823  1210  1210 I init    : type=1400 audit(0.0:6): avc: denied { execute_no_trans } for path="/system/bin/mystart" dev="loop1" ino=280 scontext=u:r:init:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1

```

That error is a SELinux permission error so I then proceeded to try these solutions:

1. Disabling SElinux

```
write /sys/fs/selinux/enforce 0

```

And checked that this causes the system to be in permissive mode but at bootup, the same error still occurs.
2. Adding a custom SELinux policy, I added:

```
build/target/board/generic/sepolicy/mystart.te
type mystart, domain;
type mystart_exec, exec_type, file_type;

init_daemon_domain(mystart)

```

But this still doesn't allow the service to proceed.
3. Tried to run it as a post action:

```
on property:dev.bootcomplete=1
exec u:r:shell:s0 shell shell input log adb sdcard_rw sdcard_r net_bt_admin net_bt inet net_bw_stats -- /system/bin/sh /system/bin/mystart

```

This still hits the same avc issue.

**Edit:** This issue is for a boot script (not an ELF executable as in the other case) and furthermore, as I mentioned above, turning off SELinux enforce does not permit the script to be run.

# Answer
The avc denial you have got states that:

> `init` is running with its context `u:r:init:0`, you want it to execute `/system/bin/mystart` (script, binary, whatever) which is labeled as `u:object_r:system_file:s0`. But `init` isn't allowed to execute `system_file` in sepolicy. However you have set SELinux permissive, so it's just a warning, not actual denial.

Therefore you don't need to do anything with SELinux unless you set it enforcing. There must be some other problem with your shell script. Put `set -x; exec >/data/media/0/mystart.log 2>&1` at the start of your script to see what happens when it's executed.

**RELATED:** How to run an executable on boot and keep it running?
> 0 votes

---
Tags: android-x86, scripts, selinux, init.d
---


title: Android SSH with AWS and JuiceSSH

text:
# Question
Title: Android SSH with AWS and JuiceSSH
I am trying to use JuiceSSH to connect to my Amazon instance with Ubuntu and I am unable to skip the request for password, documentation says I should be using -i in the ssh command but I don't see that option in JuiceSSH

Added screenshot

# Answer
> 1 votes
This was primarily my own mistake and I am leaving it here only for future visitors who may face the same issue.

I was using a wrong pem file and since the issue was not highlighted as "wrong pem" but as it needed password I was confused.

---
Tags: ssh
---


# Question
Title: How to copy folder and website shortcuts from device to device (on many devices)
I work for a company that purchases 100+ customized tablets, that are then given to a client when he buys a product. Instead of a brochure, the client walks away with this customized (cheap) tablet, preloaded with some material.

What I have to do is to install PDF reader and EZ File Explorer.

EX File Explorer allows me to put folder shortcut to the home screen, and Chrome allows me to add website shortcuts to the home screen.

Doing this on all 150 tablets (once in 3 months) takes **forever**!

Would anybody know any solution how to copy and paste the shortcuts from one to the other?

So far I have not come up with any solution. The Chrome shortcuts cannot be copied (as far as I know) and I did not find a way to put on the screen shortcuts that could be copied. Similar with the folders.

Any help would save HOURS!!!

Thanks

# Answer
A possible way to export the shortcuts is to first install another launcher for example Nova Launcher, then create the shortcuts. Open Nova Launcher settings, go to "Backup & import settings" click on "Backup". Save your configuration to an SD card.

Install Nova Launcher on another tablet, open its settings -\> "Backup & import settings", click on "Restore or manage backups", select the backup from the SD card. The shortcuts will be recreated.
> 0 votes

---
Tags: home-screen-shortcuts, home-screen
---


# Question
Title: Stop calendar from asking me if I want to turn on notifications
Every time I put a new event in my calendar that came with the phone it asks if I want to turn on notifications in order to get reminders for the event. How do I shut this off? I have already turned off notifications for the app. I never want a reminder. Also, is there any way to switch the color order around for color coding events so it automatically selects purple instead of ugly teal as the default?

# Answer
I found the answer and am posting it here for anyone that's having the same issue. Open the calendar app, go to three dots at the top, select settings, go to set default reminders, set both to none. That should stop the anniying pop up. I am still looking for a way to rearrange color order. Apparently they will let you do it with stickers but not with colors.
> 2 votes

---
Tags: samsung
---


# Question
Title: Can a device be tracked if bluetooth is enabled but visibility disabled?
Is it possible to track a Bluetooth signal of Bluetooth enabled Android phone with disabled visiblity? Here, tracking refers to detecting a nearby device. As an application, if an attacker has many tracking devices all across the city (e.g. public transportation), they could always know when you pass these points.

I have heard of professional tracking devices, which are able to track/locate Bluetooth devices, even if their visibility is turned off.

# Answer
By design, it's not supposed to be possible to actively get the address of a Bluetooth device (which is then used to identify the device for tracking purposes) when it's not in discoverable mode, as it won't respond to inquiries. However, if a device is actively communicating with another device, it will be transmitting information that can be used to track it passively. Exactly what information is available depends on which BT features the device is using. Later BT versions include security features that can make address detection, and thus tracking, harder, though these features are generally optional, so newer devices may still be as easy to track as older devices.

In older BT versions, part of the address, the LAP (Lower Address Part; assigned *by* the manufacturer and unique to the device) is broadcast in cleartext in each packet. Frequency hopping can make it hard to capture packets, but specialized receivers can counter this. Newer BT versions can generate (and periodically change) a random address instead of using the device's; this behavior is called LE Privacy1.

Another part of the address, the UAP (Upper Address Part; part of the manufacturer's ID assigned *to* the manufacturer), is used for various algorithms, such as error correction and inter-packet timing, and can be calculated2.

A device also sends its full address in cleartext when authenticating with another device. An attacker can try to capture this by disconnecting the devices (using spoofed packets with a specialized payload) and then listening for the reconnect.

Note all of these attacks require that a device is connected to some other device. If a device is undiscoverable and unpaired, it won't be transmitting and can't be made to transmit. Even then, some types of tracking are possible.

An app on your phone can use its greater access to leverage Bluetooth to track your location, not based on info from the phone's own data but on nearby BT devices. Google's Android location services3 gathers info on nearby BT beacons (even if not paired) and sends it to Google. Note that this is a different type of tracking than the other techniques allow.

Reference:

1. *Understanding Bluetooth Security; M. Loveless; 2018-01-09*
*- *Discovering the Bluetooth UAP*; M. Ossmann; 2014-06-10
- *Google can still use Bluetooth to track your Android phone when Bluetooth is turned off*; D. Yanofsky; 2018-01-24*3. *Hacking Bluetooth*; E. Chai, B. Deardorff, C Wu; 2012-12-09
> 3 votes

---
Tags: bluetooth, privacy
---


title: Battery icon has a question mark in it

text:
# Question
Title: Battery icon has a question mark in it
I checked a lot of forums, like a lot, but no one had my exact problem. I have an ASUS Tablet with Android 4.2.2 and the battery icon in the notification bar has a question mark in it. At least when it turns on cause ocasionally it crashes on boot and reboots itself before even reaching the lockscreen. Anyways, when I'm lucky and it turns on, it eventually crashes and reboots after a few minutes. If it is on and I try to get to the battery settings, it crashes and reboots. I didn't manage to get to the battery to check the contact, like most forums say, but I don't think it's the case as it's getting juice from it to turn on...

I tried reseting it by the way.

# Answer
There can be three reasons for this:

1. Your battery is dead or the Battery Status Indicator (BSI) pin on your battery is faulty. In either case, you have to replace the battery.
2. The BSI pin head on your phone hardware is faulty.
3. The firmware on your phone has a bug, and is unable to properly read the battery charge.

The third one is very less likely. The second option is less likely, but in my case (a Samsung Galaxy On7), both 1 and 2 had occurred at the same time.
> 0 votes

---
Tags: battery, 4.2-jelly-bean
---


# Question
Title: How can I remove all animations on Samsung One UI (Android 9)?
How can I remove all animations on Samsung One UI (Android 9)?

I've only found:

which does reduce the animations but does not remove them.

# Answer
I found the setting to remove the animations on:

`Settings -> Accessibility -> Visibility enhancements -> Remove animations`:

I have no idea why this is in a different place, and why animations are turned on by default (this is a waste of time).
> 0 votes

---
Tags: 9.0-pie, samsung-galaxy-s-9, samsung-one-ui
---


title: how to have ad-blocked browsing?

text:
# Question
Title: how to have ad-blocked browsing?
I use Firefox and uBlock on my PC to save CPU time and data. Is there a similar way to get faster browsing in Android? I prefer not to use Adblock Plus.

# Answer
Firefox Mobile **supports add-ons**! Including but not limited to: **uBlock Origin**. So install Firefox and add uBlock. Should run just like your desktop. Problem solved!

Fun bonus: Firefox Mobile's user agent string causes some funny stuff I've noticed (check Amazon.com). You can get an add-on to fix that, too, though! Just add "AppleWebKit/9999" to the user agent string and suddenly websites are prettier :3
> 1 votes

# Answer
AdBlock does not make your browsing faster. It simply blocks ads. *Maybe it does, but that's probably insignificant.*

If you want to improve browsing speed, try Opera Max - Data manager.

> Opera Max is a free, data-savings and data-management app that extends your data plan. With Opera Max, you can easily manage your data by monitoring daily data usage and limit data-hogging apps to Wi-Fi only. Opera Max also provides data savings by compressing videos, photos, media and more on almost all of your favorite apps and websites - without any noticeable loss of quality. Data overage fees are a thing of the past with Opera Max!

You can also try Opera's Off-Road feature (different from Opera Max).

> **Save time and money** On a slow connection? Or, need to control your Android phone or tablet’s data use? Switch to Off-Road mode in Opera to save data and browse faster.

Or if you already have the Chrome Browser installed, enable `Reduce Data Usage` in its settings.

> **Save Data** \- reduce mobile data usage by up to 50% while browsing
> 4 votes

# Answer
If you have a rooted device. I suggest installing Ad Away
> 2 votes

# Answer
The free and open-source web browser,  **Brave** contains built-in ad and tracker blocking. Google Play Store page

> Brave blocks unwanted content by default and keeps count. Popular sites often host multiple ads and as many as 70 trackers per site.

> Browse confidently with default settings that block phishing, malware, and malvertising. Also, plugins, which have proven to be a security risk, are disabled by default.

Other browsers with built-in ad blockers:

**Firefox Focus**

> The new Firefox Focus automatically blocks a wide range of online trackers — from the moment you launch it to the second you leave it.
> AUTOMATIC PRIVACY - Blocks a wide range of common Web trackers without any settings to set.
> BROWSE FASTER - By removing trackers and ads, Web pages may require less data and load faster
> 1 votes

# Answer
There is a fast browser that block ads called "uc browser" you should download the latest version from google play because this feature is only found in the newset version
> 0 votes

# Answer
Android Ad block from browsers and app as well

Block all ads by replacing hosts file. Easiest way to block ads :) No app or proxy required.

**Steps**

1. Root required
2. Install android emulator or use file browser to replace the hosts file
3. Replace the hosts file from the repo (https://github.com/SangramChavan/Android-Ad-block) to the existing hosts file present in /etc/hosts
> 0 votes

---
Tags: browser
---


# Question
Title: How to check where do my updates come from?
Just switched the motherboard of my Galaxy Note 4, now I am wondering where do the phone gets its updates from? How to check this in Android? Thanks!

# Answer
There is no official way how to extract the Over The Air (OTA) update url.

However the integrated update client usually prints the used URLs on logcat if you trigger a search for update manually in the settings app.

Therefore you need to do:

1. Enable Developer mode (if not already done)
2. Enable the Android Debug bridge (ADB) in the development settings menu
3. Connect your phone via USB to your PC (the PC need a working ADB drivers and runtime)
4. Execute `adb logcat`
5. Open the "search for update" on your phone and trigger it (usually it is in the settings app section system)
6. Check the logcat for urls (you can filter logcat for HTTPS URL e.g. on Windows you can use `adb logcat | find "https://"`)

Depending on the number of active apps you will see a number of messages with URLs in it. Then you will be able to identify the server your phone connects with for the update check. I assume if an update is available the download of the update will also be visible in logcat.

Note that those server are usually not designed to be browsed by a web server, they are only providing update to the devices.
> 1 votes

---
Tags: updates
---


# Question
Title: "Android OS" is continuously downloading something in the background, how can I stop that?
My HTC One V (on 4.0 ICS) seems to be continuously downloading something even when it's inactive, and it's using the battery abnormally fast.

My data usage graph:
(click to enlarge)

On the first picture, the brown line is for the "Android OS" element, which as you can see is responsible for at least 60% of the data consumption. I don't know what Android is downloading, but it does it continuously and it has a big effect on my battery's life. When I disable mobile data, the battery usage line becomes flat (see second picture). How can I check what exactly "Android OS" is doing? And how can I disable this activity?

Here is the battery usage graph. As you can see, the line became flat when I've disabled mobile data.
(click to enlarge)

# Answer
> 8 votes
I've found the culprit! I went to Settings \> Call \> Internet call settings and deleted the SIP account I had once created and forgot. The phone kept reaching the SIP server (probably to check for incoming calls).

I had to install a packet sniffer on the phone (tPacketCapture) to see where the requests where going and realize I had configured a SIP account.

# Answer
> 4 votes
Depending on what apps you have installed, apps like facebook, twitter, google+ and others will download data in the background to keep current when you open the app.

With ICS, you can disable background data usage for specific apps:
(click to enlarge)

this is visible in the system settings -\> data usage. you should then see a list of apps that are using data. it will also show the highest usage app. Clicking on the app brings you to a details screen that allows you to disable data usage or background usage.

# Answer
> 3 votes
Have you looked at something like Onavo Count to monitor data usage?

# Answer
> 0 votes
In Apps & notifications -\> Advanced -\> Special app access -\> Unrestricted data, click on the overflow menu (3 dots stacked vertically) and select "Show system". Then turn off background data for all of them.

---
Tags: data-monitoring, background-data
---


# Question
Title: What is the exact functionality of Google Play Services & Google Services Framework (gapps)?
Is there an official or unofficial description of what is the exact functionality of Google Play Services and Google Services Framework (gapps) apart from things related to the Play Store account-related functions?

From my understanding it includes at least:

* GPS location
* ads, tracking and stats
* GCM (Google cloud messaging for push notifications)
* everything related to managing Google accounts, services and Google user profile data.
* apparently some machine learning pre-trained models for voice recognition, TTS, keyboard gesture typing.

What else?

The question came up after I noticed that for example the Google Podcasts app size is only about 300Kb and it won't work without gapps, so that indicates that some core functionality is already in gapps.

The combined size of Google Services Framework + Google Play services is over 700MB — this is enough for an entire operating system. So what exactly does this code do?

<sub> *Update*: correction about the Google Podcasts app — I have identified that the tiny size of the app is explained by its dependency on the Google app and not just the GSF. </sub>

# Answer
> 8 votes
Google Play Services (`com.google.android.gms`) is an app which works in collaboration with a number of other closed-source apps to provide Google Mobile Services (GMS) to Android users. To quote a few of them are Google Ads, Firebase Analytics, authentication (of Google account login, saving credentials from other apps, through SMS), Google Cast devices, Game Manager, Drive, Cloud Messaging (push notifications), Google Fit, Location Provider, Maps, Instant Apps, nearby devices, search predictions, Google+, SafetyNet, Tasks, Wallet etc. Further details can be found here and here. Play Store (`com.android.vending`) provides additional APIs/services like In-App Purchases, App Licensing and Play Protect.

From your comment:

> So is it only APIs for app integration, or is there also Google's internal proprietary code for analytics, usage tracking, metrics etc?

Developers can tell better, but AFAIU everything is proprietary except the API interferes. Google's own proprietary apps like YouTube, Chrome, Gmail, Maps, Gboard, Messages etc. rely on these APIs/services, and mostly refuse to work without GMS on device. In addition to those, OEMs are bound in contracts to ship their devices with Play Services pre-installed as system apps. App developers find it more convenient to build their apps with Google APIs. In fact many AOSP features are becoming dependent on Google's proprietary products unnoticeably. Quoted from here:

> The Doze restriction on network access is also likely to affect your app, especially if the app relies on real-time messages such as tickles or notifications. If your app requires a persistent connection to the network to receive messages, you should use Firebase Cloud Messaging (FCM) if possible.
> ...
> FCM is optimized to work with Doze and App Standby idle modes by means of high-priority FCM messages.

If you have GMS installed on your device, `dumpsys activity services` will usually show more than a dozen Google services running in background like MeasurementBrokerService, PersistentBoundBrokerService, ContextManagerService and GcmService etc.

> Also, how is the functionality split between Google Play Services and the Google Services Framework?

There are a number of apps which work in background with Play Services like Services Library, Shared Library, Carrier Setup, Market Feedback Agent, Backup Transport, Config Updater, Contacts Sync, Partner Setup and so on. A more exhaustive list can be found here. Google Services Framework (`com.google.android.gsf`) is also one of these apps (sharing UID with `com.google.android.gms`) which is mainly about Cloud Messaging (FCM) but there isn't a clear line (at least officially spoken) between functionality of different components of GMS suite.

**FURTHER READING:**

---
Tags: google-play-services
---


# Question
Title: adb push not working on /system, read only
I can do `adb push` to `/sdcard/` location but not `/system` on my android device.

```
sudo adb push lib/audio.primary.gmin.so system/lib/hw/
failed to copy 'lib/audio.primary.gmin.so' to 'system/lib/hw/audio.primary.gmin.so': Read-only file system

```

I tried some suggestions online

```
user$ adb remount
dm_verity is enabled on the system partition.
Use "adb disable-verity" to disable verity.
If you do not, remount may succeed, however, you will still not be able to write to these volumes.
remount of /system failed: Read-only file system
remount failed
user$ adb disable-verity
Verity already disabled on /system

```

Even after this, remount fails

```
user$ adb remount
dm_verity is enabled on the system partition.
Use "adb disable-verity" to disable verity.
If you do not, remount may succeed, however, you will still not be able to write to these volumes.
remount of /system failed: Read-only file system
remount failed

```

running below command on PC also does not work

```
sudo mount -o remount,rw /system
mount: can't find /system in /etc/fstab or /etc/mtab

```

**What should I do?**

EDIT.

```
   which mount
    /bin/mount

adb version
Android Debug Bridge version 1.0.32

```

The output of mount command is as below

```
user$ mount
/dev/sda6 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/user/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=user)
/dev/sda5 on /media/Data type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda2 on /media/OS type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

```

# Answer
The sequence of commands that worked for me was

```
adb root
adb disable-verity
adb reboot
adb root
adb remount

```

If I don't reboot, remount does not succeed.
> 19 votes

# Answer
I was having the same trouble, no access to my Download folder from TWRP. BUT I did realize a folder that for me was not read-only. Try pushing to /data/local/tmp: ./adb push fileToPush /data/local/tmp

At first I was able to push to /sideload as well, but then all of a sudden it became read-only, so somehow I found this tmp a post online mentioning this tmp folder, and for me it was writeable. Good luck!
> 0 votes

---
Tags: adb, file-system
---


# Question
Title: Retrieve stored logger data (Android Oreo or Pie, maybe even higher)
I found an option to store logs: `Settings` -\> `System` -\> `Advanced` -\> `Developer options` -\> `Store logger data persistently on device`.

I wonder where these logs are saved and how we retrieve them. I searched online but found no result.

# Answer
`logd` is the logging daemon on Android which mainly covers the functionality of its desktop counterpart syslogd, but also includes klogd and partially auditd to get logs from SELinux subsystem of kernel. However `logd` just reads from different memory buffers (in RAM) and doesn't save to persistent memory (files) by default. We can use commandline tools `logcat` and `log` to read/write from/to `logd` respectively. Read here more about memory buffers - `main`, `system`, `radio`, `events`, and `crash`.

If one needs persistent logs as files, a separate sub-service (available on `userdebug` and `eng` builds only since Oreo ()) named `logcatd` (`logcat` daemon which itself reads from `logd`) can save them to filesystem in **`/data/misc/logd/`** (not accessible without root). Behavior of the service on boot is controlled by properties `logd.logpersistd.enable` and `persist.logd.logpersistd` (). Or to manually start/stop the service shell scripts `/system/bin/logpersist.[start|stop]` can be used.

The option *“Store logger data persistently on device”* in *“Developer Options”* also controls the same service using property `persist.logd.logpersistd.buffer`. From official documentation:

> **Store logger data persistently on device:** Select the type of log messages you want to store persistently on the device. Options are off, all, all but radio, or kernel only.
> 4 votes

---
Tags: logging
---


# Question
Title: Pie 9.0 Low Battery Notification Not Working (Moto G7)
New Moto G7 running Android Pie 9.0

Everything else works fine. The issue I'm having is with the Low Battery Warning sounds and notifications. Simply put, I want the most annoying low battery indicator in the world and it's just not doing that. All I get is the little red battery in the corner. And that's if I'm not watching videos or playing games. Otherwise, it just silently lets me use up the battery and then shuts down. I've already tried:

* Exhaustively scouring the internet for any answers
* Turning up the volume
* Plugging and unplugging the charger
* Enabling charging sounds
* Checking all the boxes and radio buttons in App info/System UI
* Turning the phone off and on again
* Restarting the phone
* Clearing the cache
* Looking everywhere for more answers
* Posting my issue on the Motorola Community website
* Factory resetting the phone (a last resort that did not work)

# Answer
TLDR; You either get battery saver, or notifications; not both.

There seems to be an issue with the Android Pie release, or a subsequent patch. When the "Battery Saver" function is turned on, it automatically disables the "Low Battery Notification" features. Or, the battery saver fires and prevents the low battery notification from firing by default. "Save the battery" instead of making noise, popping up a message, and vibrating. I turned off the "Battery Saver/Turn on automatically" function and now my phone interrupts whatever I'm doing to let me know I need to plug in soon.
> 0 votes

# Answer
You can setup MacroDroid app to detect battery saver and notify you about it in the way you want it to be.

Add a new Macro with these conditions:

Trigger: Battery/Power \> Battery saver state \> Enabled

Actions: as you wish. You can setup a notification with a sound, vibrate, or try other actions.

Constraints: none

Save the Macro and try the battery saver manually. MacroDroid should be working for you in that case.

Note: Tasker app can also do the same thing but it doesn't have battery saver state context. Instead, you can define battery range for your context.

Solution tested in OnePlus 6 running Android Pie.
> 0 votes

---
Tags: notifications, settings, battery-life, system, motorola
---


title: Offline Voice-to-Text Now Showing Up?

text:
# Question
Title: Offline Voice-to-Text Now Showing Up?
I am seeing many articles pointing to how to setup Android Voice-to-Text offline, but I am not seething the setting where they tell me to look (languages & Input).

Has the location changed, has it been removed? Does my phone just not have the capability?

Works online.

Android 8.1.0 - June 5, 2018
PRO\_SELFIE - SKY\_Pro-Selfie\_V06\_20180625

# Answer
> 0 votes
In Settings -\> Languages & input, tap on Virtual keyboard, then Google voice typing. Tap on "Offline speech recognition", then All. Select the language(s) that should be downloaded and use offline.

Alternatively, if you have Gboard installed, in Settings -\> Languages & input, tap on Virtual keyboard, then Gboard. Click on Voice typing, then "Offline speech recognition". Click on "Offline speech recognition", then All. Select the language(s) that should be downloaded and use offline.

---
Tags: voice-recognition
---


# Question
Title: How to get ALPHA symbol using Google keyboard?
I want to type Symbol of aplha but I couldn't figure out how to get it , however I can type ß(Beta). But not alpha.

# Answer
> 1 votes
If you have superuser(root) access, install xposed framework. Search for an xposed module called 'Google Keyboard Custom Smilies' (GKCS) and install it. Open GKCS app and add 'α' symbol in it. You can use your own labels for inputs.

# Answer
> 0 votes
Use greek language.

Tap and hold space button for quick accsess.

---
Tags: gboard
---


title: Schedule Auto Shutdown on Android

text:
# Question
Title: Schedule Auto Shutdown on Android
I have a Samsung Galaxy S3 and was wondering if it's possible (like on Blackberry) to setup a schedule for automatic device shutdown.

For example, on my previous phone, I could indicate for the phone to auto shutdown at 12AM and auto turn on at 7AM.

Is it possible on Android without download third-party app?

# Answer
Natively, there is no way to schedule shutdowns and boot ups of the Android system. If you do decide to root there are applications in the Play store that can shedule a shutdown (you may even be able to make your own busybox script instead). However booting up will never be possible the way Android handles shut downs because when Android shuts down, it is not running.And so, there is nothing in memory to initiate any sort of startup process.
> 5 votes

# Answer
Flo files uploaded at following address one of the file consists of scheduled power off , you need rooted phone and Automate app from play store

https://forum.xda-developers.com/android/apps-games/app-automate-t2870633/post80126909#post80126909
> 0 votes

# Answer
I have Samsung Galaxy Pro Duos (Ginger Bread) in which there is no feature like this, but my wife have Xolo A700(ICS OS) in which there is simmilar kind of feature by which phone can be switch off and on in scheduled time. I found Xolo Phones are more value for money in compare to Samsung. BTW 'Phone Schedule' Apps available in Play Store which can turn on/off Airplane mode as per the Schedule time given. but not found something which can Turn off or On completely
> -1 votes

---
Tags: automation, shutdown
---


# Question
Title: Trying to Make WIFI connection on android 4.1 jellybean
New Nextbook tablet Android 4.1 Jellybean. trying to make WIFI connection. Ensured that SSID is enabled. Password entered. Device says its obtaining IP address, then avoided poor internet connection. How to I fix this?

# Answer
> 1 votes
Your router may have a pairing button that you need to press. If it does, it must be pressed the first time you attempt to make a connection. Be close to the router. Turn off Wi-Fi, and hit "on" again. Go to `Settings > Wireless networks > Wi-Fi`.

My router is a Cisco Linksys X2000, and I had problems too.

# Answer
> 0 votes
I had this issue and all online guides failed, i eventually downloaded kingroot and it fixed it when i did "optamize" in that program and "activate game mode". If you have any battery saving apps or use kingroots Purify sub-app, do not "optimize battery" as one of the things it does is affect the wifi as that is a battery drain, so switch off any "optamize battery" features in any apps. This worked for me.

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


title: Viewing the content of Android cache

text:
# Question
Title: Viewing the content of Android cache
Where in the system is cached application data stored? Is there any way to view it programmatically? I know there are several applications available in the market to view and clear the memory. But I want to know how exactly it is done.

# Answer
> 0 votes
First off, your device needs to be rooted. Then you'll be able to access it with (almost) any file manager. For list of where to look for things check this post right here at Android.SE

# Answer
> 0 votes
Without Root Method:

You can view individual Application Cache, Data, and ads caches and files by doing this:

from app drawer aka app windows, \**Touch and hold the app icon until a window pops up like this

\**

You see the popup window that says app info, NOW touch the small circle with the (i) inside. This takes you to the file system that All the Caches (for this Individual app) are.

Its Tedious but you can go through all your apps this way and delete ALOT of Crap that so far no app cleaner apps have ever done.

---
Tags: cache
---


# Question
Title: Is it possible to disable confirmation dialogs in Android 4.4?
I have an LG G2 which came with Jelly Bean, and I have recently updated it to Kit Kat. I have noticed that the amount of confirmation dialogs when changing phone settings seems to have gone up from Jelly Bean (although Jelly Bean had a lot as well, IMHO). I am of the opinion that if I change a phone setting, I want to do it, and I am sure of it. I don't want to confirm every thing I do with the settings every single time (maybe the first time I do it on the phone, but not forever).

For example:

* On Jelly Bean, if I enable GPS via the quick settings, it would just enable. With Kit Kat, every time I enable it via quick settings, I have to confirm twice that this is what I want to do (once for "Location consent" and again for Google's location service). Since I like to leave GPS off until I need it to save battery (such as for my traffic app), this gets annoying really fast
* Another example that bugged me with Jelly Bean is the same on Kit Kat: every time I want to reset the phone, I have to confirm it
* Turning off mobile data warns me that I will not be able to use apps that require a data connection. I know this. I don't need to confirm this every time I want to disable data
* Airplane mode produces a dialog stating that I will be unable to make or receive calls with it on. Again, I know this. I don't need to be reminded every time
* Oddly enough, enabling/disabling Bluetooth does not produce such nags.

I was wondering if there is any way (mod, app, hack) to turn off these confirmation dialogs. Thanks in advance for any insight.

# Answer
> 1 votes
Try LG G2 tweak progs / xposed modules, like LTweaks, GravityBox, G2 Xposed, G2 TweaksBox. Or install Lollipop on it.

---
Tags: settings, 4.4-kitkat, system, quick-settings
---


# Question
Title: Can I transfer google play data to another gmail account address?
I have been using other people google account for my google play. When I create my own google account, can I transfer every data (example: game account that bind to the google play) from the previous google account to my new google account?

# Answer
No, you can't. However for games, based on this answer:

> the answer is it depends "on how the game data is saved by the developer" For most games, no, you can't move their progress from one account to another. But, some games do have that ability.
>
> You'll have to check with the developer of each game directly to see if they have coded that ability for their game. Google doesn't have an overarching way to move data.
> 1 votes

---
Tags: google-account, google-play-services, data-transfer
---


title: Capturing internal Audio without loss

text:
# Question
Title: Capturing internal Audio without loss
Is there a way to capture the internal audio strean directly without loss? I know there are numerous screen capturer (Mobizen etc), but I only need the audio, not my screen.

# Answer
> 1 votes
The only conceivable way I can think to achieve this would be the use of some kind of external USB DAC (digital-to-analogue converter), which involves routing the audio out through the USB C port

I've successfully done this using a cheap adapter-type "soundcard" (the 'Sabrent Aluminum USB External 3D Stereo Sound Adapter', bought on Amazon), which involved attaching it via a USB OTG cable to my phone and then connecting its headphone jack directly into its mic jack, using a male-to-male 3.5mm TRRS cable. I don't recall the software I used but it shouldn't be hard to find a good app.

I seem to recall the audio sounding decent enough but, as you stipulated without loss, digital audio will only ever sound as good as is allowed for by the processing of the digital signal by whatever DAC is used (along with the quality of the source, for example Tidal Hi-Fi streams are lossless/uncompressed flac files, whereas Spotify maxes out at MP3 320kbs), so another way which I believe is possible - I intend to try it myself at some point - would be through the use of dedicated HiFi separates. Either a DAC/amp, Audioquest's Dragonfly range and Schiit's Fulla being good starting points if you're new to this sort of thing, or separate DAC and amp components paired, such as the "Schiit Stack" - their complementary and very fairly priced Modi DAC and Magni headphone amp/pre-amp.

For this to work (without using a PC, anyway), you'd have to connect a TRRS jack cable from the amp to your phone's headphone jack, which also acts as a mic and should - as far as I'm aware - be picked up by Android audio recording apps. Of course if you own a PC that could make things a lot easier, just hook it up to your amp and record with something like Audacity.

Oh and if you go for the second, more expensive/higher fidelity option, I STRONGLY recommend the USB Audio Player Pro app. This allows you to bypass the phone's internal DAC, acting as something of an interface for/with your DAC by directly feeding it the raw audio data/signal. It's an all-round great audio player and has many great features, especially support for Tidal (the audio stream playing through it rather than having to use the service's own dedicated app) and a few other streaming services

Hope this helps.

---
Tags: samsung, audio, streaming, audio-recording, samsung-galaxy-s-9
---


# Question
Title: How do I load an unsigned Kernel Module to my signature enforcing Kernel?
I compiled a kernel module (wacom.ko) using the proper kernel source for my device and Google toolchain. When I tried to `insmod` the module, an error message popped up saying

> required keys not available

I researched and found out that you need to sign the module to load it into the kernel if the latter uses signature enforcement (which in my case, it does). I assume there is no way of obtaining the private key which the kernel used originally while compiling. But it also doesn't make sense when I think about how any developer would be able to extend the kernel by writing modules if this barrier is in place.

Is there a way to disable signature enforcement of the kernel and load the module that I created? Alternatively, can I somehow sign my module and load it?

# Answer
> 1 votes
Building out-of-tree kernel modules is not usually recommended for newbies like me so that to avoid problems like `vermagic` mismatch:

> config `MODVERSIONS`
> ...
> Usually, you have to use modules compiled with your kernel. Saying Y here makes it sometimes possible to use modules compiled for different kernels, by adding enough information to the modules to (hopefully) spot any changes which would make them incompatible with the kernel you are running.

Also the warning:

> loading out-of-tree module taints kernel

Forced module loading may lead to situations like *undefined symbols / references* (functions / variables exported and available at `/proc/kallsyms`).

> I researched and found out that you need to sign the module to load it
> ...
> But it also doesn't make sense when I think about how any developer would be able to extend the kernel by writing modules if this barrier is in place.

It's the intended behavior:

> Module signing increases security by making it harder to load a malicious module into the kernel.

And that's why `MODULE_SIG_FORCE` is there. On PCs `UEFI Secure Boot` necessarily requires kernel and modules to be signed as a part of secure boot chain. Android's `Verified Boot` signs whole `boot` partition though, which then - using `dm-verity` \- secures `/system` and `/vendor`; the partitions which may possibly include kernel's loadable modules. So signing modules doesn't seem necessary:

> Module signing isn't mandatory and isn't tested against

Quoted from Loadable Kernel Modules.

> I assume there is no way of obtaining the private key which the kernel used originally while compiling.

You are right. Public / private key pair is generated (using `openssl`) when building kernel. Public key is built into the kernel and can be viewed in `/proc/keys` or by:

```
~# keyctl list %:.system_keyring

```

If kernel was built with `IKCONFIG_PROC`, hash algorithm can be seen by:

```
~# zcat /proc/config.gz | grep MODULE_SIG_HASH

```

A perl script is also part of kernel source tree which can be used to sign modules:

```
~$ sign-file <algorithm> <priv_key_file> <pub_key_file> <module>.ko

```

> Is there a way to disable signature enforcement of the kernel and load the module that I created?

No.

> Alternatively, can I somehow sign my module and load it?

Ask the kernel developer to provide the same private key (if possible), otherwise only option is to rebuild whole kernel. Get configuration of running kernel from `/proc/config.gz` if available and required. Don't forget to unset `CONFIG_MODULE_SIG` or set `CONFIG_MODULE_SIG_ALL`.

**SOURCE:** Building External Modules

---
Tags: kernel
---


# Question
Title: How can I determine how much total RAM my device actually has?
I bought a SIM locked ZTE v790 in Egypt. It tells me that it has 181MB of RAM, but it supposed to be 512MB.

Is there a way to check how much RAM my device physically has before deciding to get it replaced?

# Answer
> 9 votes
I know this is an old questions but it comes up first in Google so I thought I would put a simple answer.

Depending on the version of Android:

* Settings \> Applications \> Running services
* or Settings \> Apps \> Running services
* or Settings \> More \> Application Manager \> Running (at the top)
* or Settings \> System \> Developer Options \> Running services

At the bottom you will see RAM, used and free. Add both number together to get total usable RAM for the device. Note that this might be less than the RAM advertised for the phone model, as the system may reserve some of the RAM for itself as explained in other answers.

Cheers

# Answer
> 1 votes
The thing that many users do not understand (partly because vendors choose to advertise total RAM chip size) is that the physical memory chip capacity is shared between different parts of the SoC \- namely Application Processor and Baseband Processor. So the amount of memory available to your applications is what's left from the original 512Mb after modem, then Android itself and preloaded system apps get their share. You can not judge the user experience by this amount anyway. ICS has better memory management but reports lesser amount of available memory than GB on the same hardware.

# Answer
> 1 votes
I just found out there are actually 2 versions of the ZTE v790

The 512MB RAM International version that is posted in GSMArena

And the lower cost 256MB RAM version mostly sold to carriers

If you believe you have been given the wrong unit, you should ask for a replacement from your carrier or from the store that you bought it.

# Answer
> 0 votes
You could simply use a terminal emulator (e.g. Android Terminal Emulator) and run the command `free`

```
$ free
             total       used       free     shared    buffers
Mem:        487344     472504      14840          0       8348
-/+ buffers/cache:     464156      23188

```

This example is taken from my *Motorola Milestone 2*, which is supposed to have 512MB RAM. Check with Alex's answer what might make the difference here: My output shows 476MB total RAM. Using above command at least you can know for sure how much RAM you've got to work with.

# Answer
> 0 votes
In Android 8 it is:

* Settings \> System \> About phone \> Hardware information

This displays RAM size, ROM size, Display resolution and a bunch of other similar parameters.

---
Tags: ram
---


# Question
Title: can you connect two or more controllers?
Is it possible to connect two or more bluetooth controllers to one android tablet? I am wanting to emulate some games that are four players and I want to know if three friends and I can all play together?

# Answer
This is a bit of an opinionated, and caveated answer.

According to the Android Developers you can indeed

> "Manage multiple connections"

It seems to be the case than an Android tablet can connect with multiple Bluetooth devices **sending** data only, but Bluetooth devices that can also **receive** data will only pair with one device.

From my trying this on:

Galaxy Tab
Nexus 9
Nexus 7
Galaxy S5 (phone not tablet obviously)
Nexus 10
Galaxy Note

It only allows one controller and disconnects the others. We had some patchy performance with two working, but Bluetooth is not a good technology for multiple connections like this.
> 3 votes

# Answer
You certainly can contact up too 4 controllers simultaneously but the way I achieved this was with a rooted note 4 just install sixaxis and there is support for multi play... I hdmi into tv and vs my mates with ps3 controllers (work best, even non genuin) also if you are using emulators n64 emulators have multi support inbuilt but you still need sixaxis to connect through Bluetooth.
> 1 votes

# Answer
outdated answers.
It's perfectly possible with at least Android 6.1 and above to connect up to 4 bluetooth controllers.

Just pair the first controller, **turn it off**, pair the second controller - and turn the first on again.
> 0 votes

---
Tags: bluetooth
---