title: Sharing paid apps between two devices

text:
# Question
Title: Sharing paid apps between two devices
I've checked the posts saying how a paid Google app can be shared between two devices, but no-one says how to do it. There's all this stuff about using the same Google account, but what does that mean - it takes me no further.

Can anyone help please with easy-to-follow explanation?

# Answer
> 3 votes
You need to link your two devices together with a Google account. Done, hope this helped!

Okay, I'm not going to be that guy...

Here's how to really do it:

1. Open your Settings app.
2. Scroll down to find an option called something like Accounts and tap on it.
3. Now find an option that says Add account.
4. Now click the type of account, in this case, a Google account.
5. Now sign in with the same info used to initially buy the app or game.
6. When you're done, go into Google Play and swipe right to enter the options for the app, or click on the three-line-symbol in the top left.
7. Click on your current account to switch it out, now click on the account you just added.
8. Find the application you previously bought, and it will say Purchased.
9. Download and complete!

# Answer
> 0 votes
Don't search the app, go to the menu and My Apps and Games, then Library. You can install from there without paying again.

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


# Question
Title: search for filenames on entire android device tree using ADB 'find'
How do I use the 'find' command on ADB to search the entire android file tree on a rooted device, including sub directories, for any filenames containing the word 'prop' ?

# Answer
Use:

```
find . -name "*prop*"

```
* `.`: represents the current folder.
* `-name`: option to find files by name.
* `*prop*`: filenames that contain the word prop.

OR as mentioned by @alexs on the comment, you can use:

```
find . -iname "*prop*"

```

```
-iname: option to find files by name but is case insensitive.

```

If you want to find the all files with the root folder as the stating place, do as mentioned by @IrfanLatif by using:

```
find / -iname "*prop*"

```
> 1 votes

---
Tags: files, search
---


# Question
Title: Scheduling with Google messages. What does the roll-out information mean?
This news article describes the roll-out of Google's new scheduling feature for Google Messages. On my own phone, I briefly had the opportunity to use the feature before it inexplicably disappeared. The news article seems to suggest two things: first, that the brief opportunity to use the feature might have been part of a test prior to the general roll-out, and second, that "schedule send is rolling out as a server-side switch ..."

What exactly does that last part, about server-side switch actually mean. I understand the general principle of client-server relationships with things like using an email client on my PC connected to my ISP's email server, but what server is being talked about in connection with Google messages. Surely they're not talking about something that requires cooperation from every ISP!?

# Answer
> 4 votes
It means that feature will be enable by Google's server. You might already have the feature but you won't see it on the app's interface.

> Surely they're not talking about something that requires cooperation from every ISP!?

It is not related to ISPs. Often due to the high number of users, some features are not "open" for all of them, but enable to users from the server (in this case Google's) slowly based on country, language, phone model, etc until all can use it.

---
Tags: google-messages
---


# Question
Title: What is the format of Android M1 Initial Preview system.img?
I download Android Emulator M1 Initial Preview from https://github.com/google/android-emulator-m1-preview/releases

Inside the .app file I found `api30-gphone-arm64-v8a/system.img` which isn't a yaffs2 nor sparse file:

```
./unyaffs2 /tmp/android-wip/system.img /tmp/android-wip/system-img/
unyaffs2-0.2.8: image extracting tool for YAFFS2
image size (3232759808) is NOT a mutiple of 2048 + 64

operation incomplete
files contents may be broken

```

```
simg2img system.img.ext4 system.img
Invalid sparse file format at header magic
Failed to read sparse file

```

So what is the format of such file?

**Updates:** Based on the direction from @Robert, I can see that the file is an fdisk image:

```
$ fdisk -lu system.img
Disk system.img: 3,1 GiB, 3232759808 bytes, 6313984 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 41F73643-DBCB-41A1-A27E-9FDB53578618

Device      Start     End Sectors Size Type
system.img1  2048    4095    2048   1M Linux filesystem
system.img2  4096 6311935 6307840   3G Linux filesystem

```

Now, it's unclear what format of the partition inside, because mount it as a regular linux partition fails:

```
$ sudo mount -o loop,offset=1048576 system.img /mnt/android-1
mount: /mnt/android-1: wrong fs type, bad option, bad superblock on /dev/loop17, missing codepage or helper program, or other error.

```

gparted also doesn't understand the partition:

# Answer
wrong offset, partition start at sector 4096. you can use `kpartx` instead

newer android running dynamic partitions. the super partition can be unpacked with Dynamic Partition Tools

furthermore partitions are flagged as read-only, therefore `mount -r` flag is required

```
sudo -i

git clone https://github.com/AndroidDumps/Firmware_extractor.git
PATH=$PATH:$(realpath Firmware_extractor/tools/Linux/bin)

mkdir -p /mnt/android-1/system_root ../extracted
kpartx -av system.img
lpunpack -p system /dev/mapper/loop2p2 ../extracted

mount -t ext4 -o loop,ro,noexec,noload,noatime ../extracted/system.img /mnt/android-1/system_root
thunar /mnt/android-1/system_root

```

(or whatever `kpartx` tell you 2nd partition is mapped)

---

in case you need to make ext4-dedup/logical partition writeable, increase partition first, then duplicate shared blocks

```
cd ../extracted
dd if=/dev/zero bs=1G seek=1 count=0 of=system.img
resize2fs system.img 1G
e2fsck -E unshare_blocks system.img

```

you should be able to `mount -w` afterwards

---

**re-packing** requires new `vbmeta` signature with avbtool.py stored in first partition `system.img1` start at sector 2048 (which goes too far here)

superrepack third-party cross-platform tool for easy unpack/repack `system.img2` is recommended to automatize the whole re-packing process

you can however do it manually with `lpmake` (requires all partitions to be unpacked into `../extracted` see above step `lpunpack`)
source

```
resize2fs -M system.img
e2fsck -yf system.img
lpmake --metadata-size 65536 --super-name super --metadata-slots 1 --device super:3229614080 --group main:2369171456 --partition system:readonly:787050496:main --image system=system.img --partition vendor:readonly:83619840:main --image vendor=vendor.img --partition product:readonly:1366814720:main --image product=product.img --partition system_ext:readonly:131686400:main --image system=system_ext.img --sparse --output super.img

```
> 4 votes

---
Tags: android-emulator, developer-preview
---


title: how to recover data from android 10?

text:
# Question
Title: how to recover data from android 10?
**My Samsung A80 had an issue and could start up** i had to flash it tried to recover its data but could not i HAVE used windows and i used different apps, no thing worked my friend rooted the phone SO MY PHONE IS ROOTED the rooting is verified used more programs and apps nothing worked DrFONE Disk digger all says its rooted but no data recovered THIS IS ALL WHAT I DID what should i do?

# Answer
> 2 votes
New versions of Android force disk encryption. Since your device is not so old and it was unrooted before the wipe happened, the encryption was definitely enabled.

I do not want to disappoint you, but the fact is that no data can be recovered anymore from the device. The encryption uses a security key that is stored on-device. A new encryption key is generated when you reset the device to encrypt the storage again. So, in the absence of the old encryption key, you will not be able to decrypt the data even if your recovery software manages to recover some bytes.

I'd recommend to avoid wasting time and other valuable resources to recover the data now. It is permanently gone.

---
Tags: data-recovery
---


# Question
Title: Are wildcards available in setting up MiXplorer AutoTasks?
I want to set up an auto-task in MiXplorer to delete two types of files that another application creates – one appears in two different folders, and another is in one folder but has different numeric strings appended to it each time it's created. Is it possible to set a task for each with a wildcard that will work on either, like `/internalstorage/$/.crap.tmp` and/or `internalstorage/backups/system/crap_$` (where `$` is some wildcard character or string).

I tried asterisks but that didn't work, and tried figuring out if there was something to the regex renaming format that I could understand and use, but couldn't.

I'm using Android 8.0.0, MiXplorer 6.46.1.

Thanks much.

# Answer
I am using version 6.54.0 of MIXplorer. Autotask does not have regex (widcards) options when deleting files. They are available for copying, moving and archiving files.

What you can do is:

* Create a `.sh` file with for example the following command to remove files:

```
#!/bin/sh
rm -f internalstorage/backups/system/crap_*

```
* Create a autotask, select Execute. Then on the File option, select the file created earlier.

The command above assumed that you know the path and part of filenames. Notice that I did not use the directory  `/internalstorage/$/.crap.tmp` as using `*` will lead to check all directories for `.crap.tmp` file.
> 1 votes

---
Tags: file-management, automation, 8.0-oreo
---


title: Should I clear my Gallery Data?

text:
# Question
Title: Should I clear my Gallery Data?
If I clear my gallery data, will I lose all of my albums? My gallery has been taking up a lot of data to the point that I have little data left. If I clear it, will all my albums be deleted?

# Answer
Data store by the gallery apps are thumbnails it generates to preview the pictures and videos. The Gallery app can be considered as a movie theater where you go to watch a movie (in your case, viewing picture and videos in your phone). If its goes bankrupt (in your case deleting its data), it won't stop you from going to another movie theater.

Furthermore, if you delete the Gallery app's data, next time you opens it, the thumbnails will be recreated. When you navigate inside inside the folder thumbnails, more thumbnails will be recreated to preview their content. That's what increases its size.
> 2 votes

---
Tags: samsung, storage, gallery, cache, data
---


# Question
Title: Updating to LineageOS 17.1, replacing su with Magisk
Up to 16.1, LineageOS provided `su` as an add-on, in the shape of an extra zip file which could be installed along with the OS itself using a recovery image such as TWRP.

However, with 17.1 they have discontinued their `su` addon and no longer support root access. Those who still want it are getting pointed to “one of the other `su` solutions out there”.

A quick search pointed me to Magisk as pretty much the only solution under active development. However, the install instructions are a bit confusing.

The device is a OnePlus One (bacon), upgrading from LOS 15.1. For now, I am just interested in having a replacement for what `su` offered up to LOS 16.1; any other features offered by Magisk are secondary to me.

Will it work if I just grab the latest Magisk zip from the Github release page and install it alongside the OS, through the recovery of my choice (currently on TWRP 3.2.2-0)? Or is using Magisk Manager a hard requirement?

Are there any major differences in UX over my current LOS + `su` setup?

# Answer
I just went through the trouble of solving a similar situation for a OnePlus Nord. Meaning getting root access via Magisk on a LineageOS 17.1 device.

1. "Will it work if I just grab the latest Magisk zip"?

Yes. I sideloaded it with the LineageOS recovery and after rebooting the system I was able to grant root access to apps using magisk.
2. Are there any major differences in UX over my current LOS + su setup?

Yes. By installing the magisk zip-file you will get the magisk App which is used for managing your root privileges. I do not have the root option in developer options anymore (as I was used to when using su).

Unfortunately I don't have a bacon here to test your specific case, but maybe my experience will still be helpful.
> 2 votes

---
Tags: rooting, updates, twrp, lineageos, magisk
---


# Question
Title: I have connected an OTG cable to my OnePlus device, but nothing happens. What to do?
*This is a self-answer post written in response to a question where the user couldn't figure out why their well-functioning OTG device was not working on their OnePlus device*.

So, I have a OnePlus device running stock OxygenOS. I decided to connect an accessory to my device through an OTG cable/adapter but I see that the device doesn't detect or shows any response when I insert it. My cable/adapter works in other devices, so I'm a bit clueless here.

How do I get my OTG cable/adapter working in my OnePlus device?

# Answer
OnePlus' OxygenOS (the Android OS that came with your OnePlus device or got updated some time ago) keeps OTG setting disabled by-default. A user has to enable that setting before using their OTG device. The setting can be found in **Settings** app **→ System → OTG storage**.

If you cannot find that setting there, search for "OTG" term in Settings app and the relevant setting should show up. Once enabled, plug in your OTG cable/adapter along with your accessory and it should work (provided Android supports it of course!)

Do **note** that the OTG storage **setting would auto-disable after 10 minutes** of OTG inactivity. So you would have to enable the setting again should you find yourself in need of using your OTG accessory.

To keep the setting enabled all the time, see my answer here (required a rooted OxygenOS).
> 1 votes

---
Tags: usb-on-the-go, oxygenos, oneplus
---


title: sftp to lineage

text:
# Question
Title: sftp to lineage
In lineage 17.1 I installed the app `SSH server` (by Banana Studio, from Play store). When starting and accessing by my PC (smartphone and PC are in WiFi) via `sftp -P 2222 myuser@192.168.0.7` I see no files there, but there are photos in the smartphone folder `/storage/emulated/0/DCIM/Camera`. When doing `cd storage` the connection is closed. My PC has ubuntu 18.04.

# Answer
> 0 votes
Comment of @Irfan Latif solved the problem. Going to Settings -\> Apps -\> Termux -\> Permissions) and granting (i e. checking the box).

---
Tags: lineageos, photos, ftp
---


# Question
Title: Restore data of a specific app from a TWRP backup
After installing an OTA update my phone bootlooped so I made a TWRP backup and did a clean install of the latest version of the ROM I'm using but restoring the backup using TWRP bootloop my phone again. I only need to restore one or two apps. I know that I can extract the files by adding `.tar` and opening them with WinRAR. Now my question is : What files I need to move from the backup to my phone to restore the data of a single app manually?

* ROM : Pixel Experience Plus (Official)
* Android : 11
* Magisk : 22.0

I tried copying the data from `/data/data/com.exemple.idk` and replacing the new ones in my phone but that doesn't seem to work. Is there anything else I need to copy from the backup files?

# Answer
Thanks to @alecxs and @Izzy I realized that the problem was related to the folder and subfolders attributes (permissions, owner and groups). I will tell you what I did to restore just a specific application from the NANDroid backup generated by TWRP (without using any command but root is required)

1. Add `.tar` to the `.win000` and `.win001` etc (ignore the `.sha2` files and any other files)

2. Extract everything in the same folder using WinRAR or any similar software
3. Go to `\data\data` and copy the folder of the app you want to restore to the internal storage of your phone (for exemple `com.exemple.idk`) and remove the cache folders from inside this folder (IMPORTANT)
4. Install Solid Explorer File Manager from the Play Store
5. Install the app(s) you want to restore from the Play Store too
6. Using Solid Explorer copy everything that's inside `com.exemple.idk` and navigate to `/data/data/com.exemple.idk` then paste everything
7. Now select the `cache` folder FIRST and select all the folders you just pasted one by one! DON'T use the select all button! \> Click on the 3 dots \> Properties \> Attributes (You should be able to see a similar screen with similar permissions)

8. Now just check Recursive ☑ in both checkboxes and apply both.

Et voila! The application should be now restored to its previous state, if not uninstall it and try again step by step carefully.
> 3 votes

---
Tags: backup, twrp
---


# Question
Title: Dial a conference number and then automatically enter the participant code
I am frequently joining conference calls (WebEx, GotoMeeting, etc) from my cell phone as I work remote occasionally. These calls usually have a static session number as they are recurring calls. Is there an application or a way to enter the number in the standard dialer to auto-enter the attendee / participant code?

# Answer
Go to contacts and edit the number. Add a 'comma' for a 2-3 second soft pause, add a 'semicolon' for a hard pause. Example,press 1 for English and enter extension and wait 4 seconds toconnect looks like this: ( 555-555-5555,,1;12345,,)
> 0 votes

---
Tags: phone-app
---


# Question
Title: Looking for LineageOS 17.1 download link for vivalto3gvn (Samsung Galaxy V/Ace NXT/Trend Neo)
According to stats.lineageos.org, the Samsung model codename vivalto3gn has OS versions of 13.0, 15.1 and 17.1. I did a little more searching, but I couldn't find download links for 15.1 and 17.1. The latest version I can find is 14.1 from this website. Do these versions really exist or are they caused by reporting errors?

# Answer
Your device was never supported by LineageOS officially. The old 14.1 version seems to be an unofficial version which means that typically one developer who owns the phone implemented the necessary changes for making LineageOS work on your device, but if those changes were ever published is unknown.

Why there are no newer versions is unclear, may be the device hardware was too restricted (it has only 512MB RAM which is way too small for modern Android versions) or the developer who created the 14.1 version got a new device and lost interest in developing new versions for the old device.

In the end you have to take it as it is, there is one 14.1 version for your device but nothing newer.
> 2 votes

---
Tags: samsung, lineageos
---


# Question
Title: Upgrading Redmi 5 3gb 32 gb motherboard to a 4 gb 64 gb motherboard
I have Redmi 5 3 gb and 32 gb rom which is in good condition. Now, I want to upgrade the memory specs to 4 gb and 64 gb without changing the phone. Is it possible to remove the old motherboard and replaced with a new Redmi 5 4 gb 64 gb rom motherboard??? Please kindly help me with upgrading my memory specs instead of buying a brand new phone.

# Answer
> 1 votes
A smartphone is not like a PC where you can replace components. Additionally a smartphone mainboard contains everything soldered on it, which means that CPU, RAM, Flash-memory, sensors, and next to everything may be except from external components like display and camera module is an integral part of the mainboard.

Note that even if displays have the same size and all other technical details this does not mean that they are compatible.

So in the what you want has a very small chance that it is possible. Replacing the mainboard has only disadvantages (no warranty, high chance to destroy something,...).

So in the end it is better to buy a working new/used phone, otherwise most likely every money you spend on replacing the mainboard are lost and better spent on a new phone.

---
Tags: ram, redmi
---


# Question
Title: Nexus 5X Nethunter has no linux-headers for 3.10.73-Re4son-3.5
So, i rooted my Nexus 5X oreo 8.1, installed nethunter, all good so far. I bought an tp-link TL-WN722N v3(EU) and now i'm trying to make it work. I downloaded the drivers from tp-link website but i can't install them because when i use command 'make' it's say: `/lib/modules/3.10.73-Re4son-3.5/build: No such file or directory.`

If i install linux-headers with: `apt-get install linux-headers-$(umane -r)` It's say: `E:Unable to locate package`

How can i install the Linux-headers for rtl8188eu drivers? Sorry for my bad english.

# Answer
Check the output of `uname -a` then use the full name of the `linux-headers-$VERSION`.

You can get the available `linux-headers` through:

```
apt search linux-headers

```

Then intsall it:

```
sudo apt install linux-heasers-$VERSION

```
> 0 votes

---
Tags: linux
---


# Question
Title: Failed installing Ubuntu using termux-ubuntu
I want to mine sugar on my Android phone. Can someone help a simple complete script, especially to complete method 1 or 2, whichever works.

**METHOD 1**

Installed F-Droid and Termux

**Commands**

```
pkg install automake clang git vim
press y to continue

clone git https://github.com/decryp2kanon/sugarmaker

```

When it's done, I enter

```
$ cd sugarmaker/
-/sugarmaker $ ./autogen.sh

```

it says

```
bash:  no such file or directory

```

**METHOD 2**

These two methods I tried each of them on both phones. On method 2, when I get here, it keeps saying error on Huawei Y Pro phone and Huawei P20 Lite.

```
pkg update
press y to continue

pkg upgrade
press y to continue

pkg install git

pkg install wget
press y to continue

pkg install proot
press y to continue

git clone http://github.com/Neo-oli/termux-ubuntu.get

```

The problem start here on P20 Lite

```
-$ cd termux-ubuntu
-/termux-ubuntu $ ./ubuntu.sh

```

It says decompressing Ubuntu image, but this does not look like a trz archive.

Making start Ubuntu executable. You can now launch Ubuntu with ./start-ubuntu.sh script.

And it shows code 404 like the link to the image is not working also.

# Answer
Here is the `ubuntu.sh`, you get an error because the disco image has been removed and the following URL doesn't download anything:

```
https://partner-images.canonical.com/core/disco/current/ubuntu-disco-core-cloudimg-${archurl}-root.tar.gz

```

Check the available images from this directory. Edit the `ubuntu.sh` by adding a valid URL. Here is an example using `focal` Codename. Replace the following line:

```
 wget "https://partner-images.canonical.com/core/disco/current/ubuntu-disco-core-cloudimg-${archurl}-root.tar.gz" -O $tarball

```

with:

```
wget "https://partner-images.canonical.com/core/focal/current/ubuntu-focal-core-cloudimg-armhf-root.tar.gz"  -O $tarball

```

or using the `archurl` variable:

```
wget "https://partner-images.canonical.com/core/focal/current/ubuntu-focal-core-cloudimg-${archurl}-root.tar.gz"  -O $tarball

```

Then run your script it should work as expected.
> 0 votes

---
Tags: root-access, installation, termux
---


# Question
Title: Overcoming softlock when creating /system/xbin on Android 9
Hoo roo,

Installing Linux Deploy (Linux chroot with root) on Android 9 requires that you install a custom version of busybox. However, due to system-as-root limitations on Android 9, you can encounter problems when attempting to run the custom busybox installer. The community has found a solution to overcome this, but I can't seem to get it to work.

My tablet is a rooted Onyx Boox Max 3 that has TWRP installed without a custom ROM, with dm-verity disabled.

Running `ls -l `which su``  from a terminal emulator returns `lrwxrwxrwx 1 root root 8 1970-02-11 19:10 /sbin/su -> ./magisk` so confirms that I am using the root busybox.

`mkdir /system/xbin`after mounting /system as per instructions softlocks the tablet. Have also tried running `mount -o rw,remount /sbin/magisk/mirror/system_root` which also softlocks.

Are there any other options that I can try? Would really love a chroot of Arch on my eink tablet instead of just a proot. Would make for a much smoother experience.

Cannot emphasise how desperate I am, my failsafe is a proot using nix-on-droid, but reckon that performance will suffer. Does anyone have any ideas?

# Answer
> 0 votes
actually all you need is place 3 files, no need to install anything

`/data/adb/modules/busybox-ndk/module.prop`

```
id=busybox-ndk
name=Busybox for Android NDK
version=1.31.1
versionCode=13115
author=osm0sis @ xda-developers
description=Static busybox binary for all Android architectures built with the NDK
support=https://forum.xda-developers.com/showthread.php?t=2239421

```

`/data/adb/modules/busybox-ndk/service.sh`

```
#!/system/bin/sh
/system/xbin/busybox --install -s /system/xbin

```

`/data/adb/modules/busybox-ndk/system/xbin/busybox`

---
Tags: 9.0-pie, magisk, busybox
---


# Question
Title: How do I access my Google Assistant notes from my computer?
I made a bunch of hands free voice notes while I was driving and now I need to process them from my computer, which has my to do list on it (which I cannot access from my phone). However, I cannot seem to figure out how to do this. When I ask Google Assistant where my notes are, it shows me a long list and says they are stored in Google Keep. However, I do not see them in Keep.

As a workaround, I tried copying my notes on my phone, but it would not let me select more than one at a time.

# Answer
This link worked for me for lists and notes I took before I had a synchronization account set up:

https://assistant.google.com/lists/mainview
> 3 votes

# Answer
When you first make a note, Google Assistant normally asks you if you want them saved in Keep or Gmail...

If you selected Gmail, open https://mail.google.com on your PC and look for the Notes section on the left column.

If you selected Keep, go to https://keep.google.com and they should be there.
> 1 votes

---
Tags: google-assistant, notes
---


# Question
Title: How do I disable google keyboard/gboard?
I updated my Huawei P9 today and Google's gboard got turned on by default, and it won't allow me to disable it.

Usually I can switch from Japanese to Korean/English and back, now everytime I want to switch, it goes Japanese to Gboard to Korean to Gboard and back.

# Answer
Here is the method to disable GBoard on stock Android phones (Steps for Huawei phones should be pretty similar)

1. Go into Settings and tap on Apps
2. Locate GBoard from the list of apps and tap on it
3. On the next screen tap on the Disable button
> 3 votes

# Answer
0. Open a terminal (either through `adb shell` or just on your device).
1. Get super user privileges: `su`
2. Disable gboard with the package manager: `pm disable com.google.android.inputmethod.latin`

This worked on a Huawei P10 Lite. Not exactly a P9 as you have, but maybe it works for you as well.

I haven't tried without super user access, maybe it also works on vendor-owned devices if you skip the `su` command.
> 1 votes

# Answer
1. Disable your virtual keyboards.
2. If you are on Windows and have knowledge about using adb, then from CMD shell launch:

```
adb shell am start com.android.settings/.inputmethod.InputMethodAndSubtypeEnablerActivity

```
3. Untick "Use system language"
4. Select the keyboards you want.
> 0 votes

# Answer
As far as I can see from the screenshot you dont have any other keyboard enabled except for Gboard. And Android wont allow you to have "no keyboard". Enable the Huawei keyboard and then you will probably be able to disable the Gboard.
> 0 votes

# Answer
You can download another keyboard app from Google Play Store or elsewhere then go to **Setting \> Language and Input**.

There, you can see your default or Gboard and the keyboard app you just installed. Now you can just click on default keyboard and click on the keyboard you want.
> -1 votes

---
Tags: keyboard, gboard
---


title: Disable DropBox's PDF reader

text:
# Question
Title: Disable DropBox's PDF reader
I have been seeing recently that DropBox opens PDF files stored in it through its own reader. I would like to open all my PDF files through Adobe, no matter where their location is. I do not want to use this extra functionality provided by DropBox.

How can I disable this option in DropBox? I could not find any option to disable PDF viewing. Is it a feature that must be added in future by DropBox?

# Answer
In Dropbox, next to your `file.pdf` there is an arrow button (on the right), click on it and a menu will appear with options :

* `Share`, `Add to favorites`, `Delete` and `More`.

Click on `More` and then it will display the options :

* `Rename`, `Move`, `Open with` and `Export`.

Click on `Open with` and just select the application you want your `file.pdf` to open with.
> 2 votes

# Answer
I don't think the built-in PDF support can be disabled. I would suggest exporting and downloading the file instead, so that you can open it with and PDF reader of your choice.
> 5 votes

# Answer
Open in the previewer in dropbox then click the screen to reveal the bottom menu, click the 3 dots in the bottom right and select open with..... then select your choice app.
> 1 votes

# Answer
1. Install Adobe Reader app.
2. Add your Dropbox account in the Adobe Reader app.
3. Open your Dropbox folders and files from the Adobe Reader app.
> 0 votes

---
Tags: dropbox
---


title: Where app drops sdk version info

text:
# Question
Title: Where app drops sdk version info
Long story short i used appcloner to spoof android SDK version to lower to get messenger chat heads as they were on android 10 and lower. I copied the installed app, so now i got .apk with all that info and when i install it from that file it still works. App must dropped info about android SDK into it's files, but i cannot find where. Does anyone could help me with that?

My goal is to inject this file into original messenger apk so that i could update this app from official messenger .apk

# Answer
> 1 votes
If an app behaves differently on a higher or lower Android version, then it uses code like that (before the app has been compiled):

```
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
    // do something on Android 6+
} else {
    // do something on Android before version 6
}

```

Such code structures will be present in multiple classes of the app. If you want to forge the Android version in the original app you have to decompile the APK using apktool modify every occurrence of such a structure e.g. by replacing the access to `android.os.Build.VERSION.SDK_INT` which queries the device's Android ADK version and replace it by a constant like `29` for Android 10 and the rebuild the APK using apktool, `zipalign` and sign (`apksigner`) it and then you are ready to install the app.

Unfortunately apktool does only generate Smali code and not Java code, which makes the whole task much more difficult as Smali is very low level and not easy to read.

There may be existing programs/apps that already do such modifications in an automated way, unfortunately I don't know or use such apps.

---
Tags: android-versions, facebook-messenger, sdk
---


# Question
Title: Marshmallow not bootlooping, but not starting
**What Happened:**

A few days back I left my phone (MediaTek chipset) to charge overnight. What I did not notice was that the charger was loose and the charge was at around 2%. The next morning, I woke up to find my phone's battery drained completely.

When I tried to start it (after charging), it was taking a bit too much time, and the phone was heating up. However, the boot didn't complete nor did the phone reboot (like a bootloop).

**What I Did:**

I went to the recovery, took backups, cleared the `/data` partition, and got the phone to start. However, I require the application data (more than the phone) and just formatting the partition didn't seem to take me closer to my goal and hence I restored the backups.

I then cleared the data of several programs which might have caused the problem:

```
rm -rf com.android.captiveportallogin com.android.carrierconfig com.android.cellbroadcastreceiver com.android.certinstaller com.android.defcontainer com.android.development com.android.documentsui com.android.externalstorage com.android.frameworks.telresources com.android.keychain com.android.managedprovisioning com.android.mms.service com.android.noisefield com.android.pacprocessor com.android.printspooler com.android.proxyhandler com.android.server.telecom com.android.statementservice com.android.stk com.android.vpndialogs com.android.webview com.gametion.ludo com.google.android.configupdater com.grarak.kerneladiutor com.jrummy.app.managerfree com.lexa.fakegps com.makeinfo.androididchanger com.one24.deviceid com.ores.hash com.phoneinfo.changer com.resurrection.otacom.sanctuaire.netswisstool com.unique.mobilefaker com.zimperium.zanti cyanogenmod.platform de.robv.android.xposed.installer it.evilsocket.dsploit net.fidanov.landroid org.cyanogenmod.livelockscreen.service org.cyanogenmod.providers.datausage
rm -rf org.cyanogenmod.snap org.cyanogenmod.theme.chooser org.cyanogenmod.themes.provider org.cyanogenmod.wallpapers.photophase org.cyanogenmod.weather.provider org.omnirom.omniswitch tursky.jan.settings
rm -rf com.android.settings com.android.systemui

```

*Didn't help...*

So I accessed `logcat` and extracted some of the possibly juicy bits (in random order):

```
page record for 0xb6e4301c was not found
AndroidRuntime:        at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
ServiceManager: service 'batterystats' died
01-01 07:33:29.583  8300  8300 D AndroidRuntime: Shutting down VM
01-01 07:33:29.584  8300  8300 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
01-01 07:37:16.064 15437 15437 E AndroidRuntime: Error reporting crash
01-01 07:37:16.064 15437 15437 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:37:16.064 15437 15437 I Process : Sending signal. PID: 15437 SIG: 9
01-01 07:37:16.088   189   189 I ServiceManager: service 'batterystats' died
01-01 07:37:16.088   189   189 I ServiceManager: service 'appops' died
01-01 07:37:16.088   189   189 I ServiceManager: service 'power' died
01-01 07:37:16.088   189   189 I ServiceManager: service 'display' died
01-01 07:37:16.093   217   217 E installd: eof
01-01 07:37:16.093   217   217 E installd: failed to read size
01-01 07:37:16.093   217   217 I installd: closing connection
01-01 07:37:16.404 12127 12127 I Zygote  : Process 12239 exited cleanly (13)
01-01 07:37:16.405 12127 12127 E Zygote  : Exit zygote because system server (15437) has terminated
01-01 07:37:16.446   189   189 I ServiceManager: service 'user.xposed.app' died
01-01 07:37:16.453   189   189 I ServiceManager: service 'media.audio_flinger' died
01-01 07:37:16.453   189   189 I ServiceManager: service 'media.player' died
01-01 07:37:16.453   189   189 I ServiceManager: service 'media.resource_manager' died
01-01 07:37:35.780 17500 17500 E cutils-trace: Error opening trace file: No such file or directory (2)
01-01 07:32:20.048  3896  3896 E AndroidRuntime: Error reporting WTF
01-01 07:32:20.048  3896  3896 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.app.IActivityManager.handleApplicationWtf(android.os.IBinder, java.lang.String, boolean, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:32:20.048  3896  3896 E AndroidRuntime:        at com.android.internal.os.RuntimeInit.wtf(RuntimeInit.java:353)
01-01 07:32:20.048  3896  3896 E AndroidRuntime:        at android.util.Log$1.onTerribleFailure(Log.java:104)
01-01 07:32:20.048  3896  3896 E AndroidRuntime:        at android.util.Log.wtf(Log.java:297)
01-01 07:32:20.048  3896  3896 E AndroidRuntime:        at android.util.Slog.wtf(Slog.java:82)
01-01 07:32:41.126  5786  5786 E AndroidRuntime: android.util.Log$TerribleFailure: No start tag found in package manager settings
01-01 07:32:41.161  5786  5786 W PackageManager: Library not found: /system/framework/org.apache.http.legacy.jar
01-01 07:32:41.247  5786  5786 E System  : ******************************************
01-01 07:32:41.249  5786  5786 E System  : ************ Failure starting system services
01-01 07:32:41.249  5786  5786 E System  : java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference

```

Then I got an idea and did `rm -rf /data/data` and `mkdir /data/data`. Didn't help but showed that the problem was not due to app data but something else in the data partition.

Soon, I noticed a repeating pattern in `logcat`, indicating my phone was stuck in a loop (not bootloop) and not a blocking call to a process or thread.

The looping `logcat`:

```
01-01 07:32:53.191  6368  6368 E System  : ******************************************
01-01 07:32:53.191  6368  6368 E System  : ************ Failure starting system services
01-01 07:32:53.191  6368  6368 E System  : java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
01-01 07:32:53.191  6368  6368 E System  :      at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2170)
01-01 07:32:53.191  6368  6368 E System  :      at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:32:53.191  6368  6368 E System  :      at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:32:53.191  6368  6368 E System  :      at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:32:53.191  6368  6368 E System  :      at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:32:53.191  6368  6368 E System  :      at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:32:53.191  6368  6368 E System  :      at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:32:53.191  6368  6368 E System  :      at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:32:53.191  6368  6368 E System  :      at java.lang.reflect.Method.invoke(Native Method)
01-01 07:32:53.191  6368  6368 E System  :      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:32:53.191  6368  6368 E System  :      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:32:53.191  6368  6368 E System  :      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:32:53.192  6368  6368 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
01-01 07:32:53.192  6368  6368 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2170)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:32:53.192  6368  6368 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:32:53.193  6368  6368 E AndroidRuntime: Error reporting crash
01-01 07:32:53.193  6368  6368 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:32:53.193  6368  6368 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:95)
01-01 07:32:53.193  6368  6368 E AndroidRuntime:        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
01-01 07:32:53.193  6368  6368 E AndroidRuntime:        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
01-01 07:32:53.411  6438  6438 F libc    : page record for 0xb6d8301c was not found (block_size=16)
01-01 07:32:57.925  6682  6682 F libc    : page record for 0xb6e5b01c was not found (block_size=16)
01-01 07:33:03.304  6930  6930 F libc    : page record for 0xb6de901c was not found (block_size=16)
01-01 07:33:05.758  7050  7050 I InstallerConnection: connecting...
01-01 07:33:05.772  7050  7050 I InstallerConnection: disconnecting...
01-01 07:33:05.790  7050  7050 I SystemServer: Entered the Android system server!
01-01 07:33:05.896  7050  7050 I SystemServiceManager: Starting com.android.server.pm.Installer
01-01 07:33:05.897  7050  7050 I Installer: Waiting for installd to be ready.
01-01 07:33:05.897  7050  7050 I InstallerConnection: connecting...
01-01 07:33:05.897  7050  7050 I SystemServiceManager: Starting com.android.server.am.ActivityManagerService$Lifecycle
01-01 07:33:05.908  7050  7050 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:05.908  7050  7050 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:05.908  7050  7050 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:05.908  7050  7050 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:05.908  7050  7050 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:05.908  7050  7050 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:06.027  7050  7050 I ActivityManager: Memory class: 96
01-01 07:33:06.101  7050  7050 D BatteryStatsImpl: Reading daily items from /data/system/batterystats-daily.xml
01-01 07:33:06.254  7050  7050 W ProcessCpuTracker: Skipping unknown process pid 7075
01-01 07:33:06.265  7050  7050 I IntentFirewall: Read new rules (A:0 B:0 S:0)
01-01 07:33:06.279  7050  7050 D AppOps  : AppOpsService published
01-01 07:33:06.279  7050  7050 I SystemServiceManager: Starting com.android.server.power.PowerManagerService
01-01 07:33:06.287  7050  7050 I SystemServiceManager: Starting com.android.server.lights.LightsService
01-01 07:33:06.290  7050  7050 I SystemServiceManager: Starting com.android.server.display.DisplayManagerService
01-01 07:33:06.293  7050  7050 I SystemServiceManager: Starting phase 100
01-01 07:33:06.301  7050  7094 I DisplayManagerService: Display device added: DisplayDeviceInfo{"Built-in Screen": uniqueId="local:0", 720 x 1280, modeId 1, defaultModeId 1, supportedModes [{id=1, width=720, height=1280, fps=55.9}], colorTransformId 1, defaultColorTransformId 1, supportedColorTransforms [{id=1, colorTransform=0}], density 320, 294.967 x 295.563 dpi, appVsyncOff 0, presDeadline 18889087, touch INTERNAL, rotation 0, type BUILT_IN, state UNKNOWN, FLAG_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
01-01 07:33:06.304  7050  7050 I SystemServer: Package Manager
01-01 07:33:06.309  7050  7094 I DisplayManagerService: Display device changed state: "Built-in Screen", ON
01-01 07:33:08.137  7201  7201 F libc    : page record for 0xb6e5701c was not found (block_size=16)
01-01 07:33:13.103  7467  7467 F libc    : page record for 0xb6de801c was not found (block_size=16)
01-01 07:33:17.544  7700  7700 I InstallerConnection: connecting...
01-01 07:33:17.552  7700  7700 I InstallerConnection: disconnecting...
01-01 07:33:17.579  7700  7700 I SystemServer: Entered the Android system server!
01-01 07:33:17.750  7700  7700 I SystemServiceManager: Starting com.android.server.pm.Installer
01-01 07:33:17.750  7700  7700 I Installer: Waiting for installd to be ready.
01-01 07:33:17.750  7700  7700 I InstallerConnection: connecting...
01-01 07:33:17.751  7700  7700 I SystemServiceManager: Starting com.android.server.am.ActivityManagerService$Lifecycle
01-01 07:33:17.760  7700  7700 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:17.760  7700  7700 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:17.760  7700  7700 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:17.760  7700  7700 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:17.760  7700  7700 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:17.760  7700  7700 I XXXXXX  : choosing minFree values for 32 Bit
01-01 07:33:17.836  7700  7700 I ActivityManager: Memory class: 96
01-01 07:33:17.914  7700  7700 D BatteryStatsImpl: Reading daily items from /data/system/batterystats-daily.xml
01-01 07:33:18.187  7700  7700 W ProcessCpuTracker: Skipping unknown process pid 7732
01-01 07:33:18.196  7700  7700 I IntentFirewall: Read new rules (A:0 B:0 S:0)
01-01 07:33:18.333  7700  7700 D AppOps  : AppOpsService published
01-01 07:33:18.334  7700  7700 I SystemServiceManager: Starting com.android.server.power.PowerManagerService
01-01 07:33:18.353  7700  7700 I SystemServiceManager: Starting com.android.server.lights.LightsService
01-01 07:33:18.356  7700  7700 I SystemServiceManager: Starting com.android.server.display.DisplayManagerService
01-01 07:33:18.370  7700  7761 I DisplayManagerService: Display device added: DisplayDeviceInfo{"Built-in Screen": uniqueId="local:0", 720 x 1280, modeId 1, defaultModeId 1, supportedModes [{id=1, width=720, height=1280, fps=55.9}], colorTransformId 1, defaultColorTransformId 1, supportedColorTransforms [{id=1, colorTransform=0}], density 320, 294.967 x 295.563 dpi, appVsyncOff 0, presDeadline 18889087, touch INTERNAL, rotation 0, type BUILT_IN, state UNKNOWN, FLAG_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
01-01 07:33:18.373  7700  7700 I SystemServiceManager: Starting phase 100
01-01 07:33:18.374  7700  7761 I DisplayManagerService: Display device changed state: "Built-in Screen", ON
01-01 07:33:18.375  7700  7700 I SystemServer: Package Manager
01-01 07:33:18.496  7700  7700 D SELinuxMMAC: Using policy file /system/etc/security/mac_permissions.xml
01-01 07:33:18.504  7700  7700 W PackageManager: No start tag found in package manager settings
01-01 07:33:18.507  7700  7700 E PackageManager: No start tag found in package manager settings
01-01 07:33:18.509  7700  7700 E AndroidRuntime: Error reporting WTF
01-01 07:33:18.509  7700  7700 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.app.IActivityManager.handleApplicationWtf(android.os.IBinder, java.lang.String, boolean, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.internal.os.RuntimeInit.wtf(RuntimeInit.java:353)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at android.util.Log$1.onTerribleFailure(Log.java:104)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at android.util.Log.wtf(Log.java:297)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at android.util.Slog.wtf(Slog.java:82)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.pm.Settings.readLPw(Settings.java:2829)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2030)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:33:18.509  7700  7700 E AndroidRuntime: Original WTF:
01-01 07:33:18.509  7700  7700 E AndroidRuntime: android.util.Log$TerribleFailure: No start tag found in package manager settings
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at android.util.Log.wtf(Log.java:291)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at android.util.Slog.wtf(Slog.java:82)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.pm.Settings.readLPw(Settings.java:2829)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2030)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:33:18.509  7700  7700 E AndroidRuntime:        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:33:18.527  7700  7700 W PackageManager: Library not found: /system/framework/org.apache.http.legacy.jar
01-01 07:33:18.580  7700  7700 E System  : ******************************************
01-01 07:33:18.581  7700  7700 E System  : ************ Failure starting system services

```

***Note that the first and last 2 lines are the same, indicating a loop.***

`/data/system # rm -rf *` helps start the phone, so the problem is there. But running the command results in a partial loss of the application data (so I restored the backups of the faulty `/data` partition).

# Answer
I just came across this problem myself on my Nexus 5 running Android 6 and after tinkering with it for a few days, I was able to resolve it without wiping all my data, so I wanted to share what I did in case anyone else ever comes across a similar issue and is up for the challenge of debugging the issue instead of wiping the phone.

My problems all seemed to have the same root cause: empty XML files. I had played around with disabling fsync in my kernel to try out the performance difference, and this probably caused some data loss.

Observation: `/data/system/packages.xml`, `/data/system/packages.list`, and `/data/system/job/jobs.xml` were empty.

Below are the steps I executed. Be aware, this is the result of experimentation and you shouldn't blindly execute these commands without understanding them first. ;)

* Back up the entire `/data` partition.
* Delete the `/data/system` directory and reboot to regenerate it.
* Copy the `/data/system` directory somewhere (in my case: `/sdcard/system-good`).
* Restore the backup of the `/data` partition, restoring erased app data.
* Delete the JobStore file: `rm /data/system/job/jobs.xml`
* Copy the regenerated files:
```
cat /sdcard/system-good/packages.list > /data/system/packages.list
cat /sdcard/system-good/packages.xml > /data/system/packages.xml

```
* Fix package UID's based on the error logs:
```
grep "has changed from uid" /sdcard/system-good/uiderrors.txt | while read -r LINE; do sed -i "s/\(^$(echo "$LINE" | awk '{ printf "%s\\) %d/\\1 %d", $6, $13, $11 }')/" /data/system/packages.list ; done
grep "has changed from uid" /sdcard/system-good/uiderrors.txt | while read -r LINE; do sed -i "s/\(^    <package name=\"$(echo "$LINE" | awk '{ printf "%s\" .\\+ userId=\"\\)%d\">/\\1%d\">", $6, $13, $11 }')/" /data/system/packages.xml ; done

```
* Wiped cache and dalvik for good measure.
* Rebooted and my Android including all my apps were revived!

For me, this turned into a bit of a side project, and I learned a bit more about Android internals. :) Not all my steps may be relevant to resolve your scenario.

The empty `jobs.xml` caused a NullPointerException in the JobStore: `java.lang.RuntimeException: Failed to create service com.android.server.job.JobSchedulerService: service constructor threw an exception`. It has already been fixed upstream, but that fix is not yet included in Android 6. Just deleting `/data/system/job/jobs.xml` skips the entire code section with the bug, resolving the issue.

The empty package manager files should regenerate upon deletion, however that unfortunately resulted in another bootloop for me, for which I was unable to collect logs to further assess the problem. So I recovered the system by deleting the entire `/data/system`, then made a copy of it and restored my backup of `/data`, and then diff'ed the old and the new version of `/data/system` to figure out what could be causing the crash.

In my case, the major difference was that the UID's for all my apps had changed in the regenerated `package.xml` and `package.list` files, causing the package manager to delete all data for those apps upon checking package contents during boot. I resolved this by copying the regenerated versions and changing them to match the old UID's, using the logfile which recorded all mismatched UID's. Not pretty, and in hindsight it might have been better to just read the UID's from the `/data/data` directories or look into how Android does this regeneration in the first place and tweak that, but this worked as well.
> 8 votes

# Answer
As a complement to DvdGiessen's answer, you can perform a backup of the three files (`jobs.xml`, `packages.xml` and `packages.list`) with the following shell script:

```
#!/system/bin/sh
dir=/data/system

watch -n60 "cat $dir/packages.list > $dir/packages.list.bak" > /dev/null &
watch -n60 "cat $dir/packages.xml > $dir/packages.xml.bak" > /dev/null &
watch -n60 "cat $dir/job/jobs.xml > $dir/jobs.xml.bak" > /dev/null &

echo "Now periodically performing backup of packages' (APKs') databases..."

```

`watch` will, periodically, for each 60 seconds, make a backup of the three files. Save the shell script to `/system/xbin` directory, apply `chmod 0755` and `chown root.shell` to it and manually run it.

Do note, however, it is not recommended to add the shell script to `init.d`, since that could write a broken backup of the three files.

Make a note of the permissions, owner, and group of the original files to, later, apply to the restored backups.

```
ls -l data/system/job/jobs.*
-rw------- 1 system system 1401 2021-04-06 11:42 data/system/job/jobs.xml

ls -l data/system/packages.*
-rw-r----- 1 system package_info  10289 2021-04-06 11:42 data/system/packages.list
-rw-rw---- 1 system system       477016 2021-04-06 11:42 data/system/packages.xml

```
> 2 votes

---
Tags: cyanogenmod, 6.0-marshmallow, boot
---


# Question
Title: Does the latest Android release is secure against the ADB vulnerabiliy?
I have two smartphones running Android 10 and 8, The ADB is enabled for many proposes. Generally some vendors have been shipping products with Android Debug Bridge enabled. But it seems that enabling ADB have many security risks according to DoublePpulsar blog: Root Bridge — how thousands of internet connected Android devices now have no security, and are being exploited by criminals.

> This is highly problematic as it allows anybody — without any password — to remotely access these devices as ‘root’\* — the administrator mode — and then silently install software and execute malicious functions.

Does the latest Android releases are secure against the ADB vulnerability?

# Answer
Sorry but it seems Kevin Beaumont from Microsoft has no clue what he is talking about. Mythbusters would proof him wrong..

> It is completely unauthenticated, meaning anybody can connect to a device

That is simply not true. Even on rooted android TV boxes (where the adb miner supposed to run) one still must have access to home network (which is not possible through NAT/Firewall)

Furthermore it requires at least one initial authorization of the RSA-Key from the host which is trying to connect - user must explicitly confirm this on tv screen with remote control (android tv box)

the analysis is based on open port scan where ~ 5000 devices in asia found open port 5555. But just open port means nothing. At least, according Hui Wang these adb miner did not succeed at all

> Till now, zero coins have been paid, as can be seen in below
> 4 votes

---
Tags: adb, security, android-10, 8.0-oreo, vulnerability
---


title: Android 8 confirmation before restart

text:
# Question
Title: Android 8 confirmation before restart
Is it possible to configure Android 8 to ask for confirmation before powerdown/restart? Is that option manufacturer dependant?

# Answer
> 1 votes
* Android does not offer this feature by itself (barring restart confirmation after applying system update).
* It is possible that OEM customized ROMs or custom ROMs provide this feature. If you're device is rooted, it is possible - one way I am aware of is using GravityBox Xposed module

---
Tags: reboot, 8.1-oreo
---


# Question
Title: How do I use Android Support for Hearing Aid (ASHA) on a capable phone?
I have been looking around for a demonstration of someone using the ASHA feature on an android phone, but a general google search only brings up ASHA feature being announced (from 2018) or something like this (https://www.youtube.com/watch?v=u7ZDzqC3Mak) which shows how to connect an android capable hearing aid to an android smartphone using their custom app.

I believe that ASHA feature being integrated into Android means I should be able to pair with a hearing aid without need for a custom app (correct me here if I am wrong). I have an embedded system development board which claims it can work as BLE device with an ASHA capable smartphone. I also have a Samsung Galaxy s10e which is supposedly ASHA capable (cannot find any official source confirming this, but lots of online discussions imply that s10e series supports ASHA, as well as there are some options in phone settings which makes me think it probably is). One of the only hearing aids in the market that supposedly uses ASHA claims it supports direct streaming with galaxy s10e phones (https://www.resound.com/en/help/compatibility).

If I go to Settings \> Accessibility \> Hearing Enhancements \> Hearing Aid Support \> Bluetooth Hearing Aid in my Samsung Galaxy s10e, I can see that it allows me to pair with my custom BLE device (which supposedly has BLE 5.0 and supports BLE audio streaming with android). However, if I play music on the phone after pairing, I cannot hear any output on the built in speakers, but I cannot hear anything in my BLE device either. It's possible that at this moment the BLE device does not have the required codecs for audio streaming, but that is a different question.

My main question is about ASHA streaming on the android phone. Am I correct in assuming that after pairing with my BLE device by going to Settings \> Accessibility \> Hearing Enhancements \> Hearing Aid Support \> Bluetooth Hearing Aid, I should be able to hear audio played on my phone from the BLE device, like I would on a regular bluetooth earphone? I haver been searching online for at least a demonstration of ASHA streaming or how the Bluetooth Hearing Aid support on the galaxy s10e is supposed to be used, but I cannot find anything. Does anyone here have any experience with this?

# Answer
> 1 votes
Based on this developer oriented video:

Accessible audio: Android hearing aid support and the audio framework (Google I/O'19), the speaker noted that while apps can provide enhancement to the experience, an app isn't required.

That said, if you are trying to create a ASHA compatible device, you should watch the full video, as it does point out the Android ASHA spec:

https://source.android.com/devices/bluetooth/asha

and note that testing seems more involved as the speaker at end describes 'reference device hearing aids' provided by Google and specifically calling out to use the Android Open Source Project (AOSP) codebase to ensure compatibility.

Also be aware that in the Android Compatibility Definition Document (CDD) which defines what is needed to obtain the Google Play Store that hearing aid support is optional.

From: https://source.android.com/compatibility/11/android-11-cdd#7\_4\_3\_bluetooth

> **If** device implementations include support for Bluetooth LE and Hearing Aids Profile, as described in Hearing Aid Audio Support Using Bluetooth LE, they:
>
> * \[C-5-1\] MUST return true for BluetoothAdapter.getProfileProxy(context, listener, BluetoothProfile.HEARING\_AID).

**So what does this mean as a end-user?**

Given the quirks of Bluetooth on Android, wait for hearing aid manufacturers to provide a list and even then supporting manufacturers like ReSound have fine print:

> * Full streaming compatibility with Android devices requires minimum Android v10 and Bluetooth 5.0 and that functionality has been enabled by the phone manufacturer and service carrier. Accordingly, the compatibility information provided should be used for reference only. Although ReSound strives to achieve seamless device compatibilities, ReSound cannot guarantee full compatibility with all Android devices.

---
Tags: bluetooth, bluetooth-audio, streaming, bluetooth-le
---


# Question
Title: Android product partition vs. vendor partition
What's the difference between `product` partition and `vendor` partition? After flashing a GSI image, `product` partition is missing but `vendor` partition is there. I am confused about where should my application be installed.

In recent releases, more partitions were created in Android: `system`, `vendor`, `product`, `odm`, and `system_ext`. It's hard to understand it from the official document, wish someone can help summarize it here.

# Answer
> 2 votes
The `product` partition is an extension of the `system` partition. OEMs install stock Android system image in the `/system` partition. The customisation they do to the Android framework is stored in the `/product` partition. This allows a single system image across all OEMs' devices and unique customisations in the `product` partition. There's a weak ABI between the `system` and `product` partition which links `product` to the Android framework. GSI works without product partition.

Similarly, vendor image can be generic for multiple devices with the same SoC or the same family of SoC. `vendor` partition contains the Board Support Package (BSPs) of the SoC. Vendor customisations are included in the `/odm` partition and `odm` is linked with `vendor` by a weak ABI. The `vendor` partition still works without `odm`.

See all the components of ODM.

`product` is an extension of the Android framework and `odm` is an extension of `vendor` modules.

---
Tags: partitions
---


title: Phone stuck in fastboot mode

text:
# Question
Title: Phone stuck in fastboot mode
I've rooted my OnePlus 6 yesterday. To do so, I followed this guide:

Root Your OnePlus 6 with Magisk — A Beginner's Guide

```
TWRP version: 3.5.1_9-0
Magisk version: 22.0

```

I also installed the Magisk app on my phone

Now I've edited my hosts-file (needed to change some permissions to be able to modify this file ) to block some sites. I've restarted the phone once successfully, but now the phone will not boot anymore. When I power on, I see the OnePlus logo very briefly and then it gets stuck on the "bootloader is unlocked" warning for a long time. It then goes on into fastboot mode. If i press start from there, the process repeats. If I press recovery mode I still get into TWRP, but rebooting from there also repeats the process and does not boot up my phone successfully.

I'm not sure, but I don't think editing the hosts file is what caused this? Shouldn't I be able to edit this file without bricking my device?

Any help on what happened and how I can fix this bootloop without wiping/reinstalling my entire device would be greatly appreciated; I don't want to lose all my settings =).

# Answer
The problem was that I edited the system hosts file. This causes the system to be unable to boot; the reason is `dm-verity` which denies boot (chain of trust) when any modified system file is detected.

To fix the issue, I followed https://www.droidwin.com/restore-oneplus-6-stock-via-fastboot-commands/

Basically, it explains how to download the stock ROM, extract the `.bin` file into multiple `.img` files, and how to flash them subsequently.

Since only the `boot` and `system` partitions were modified, and I did not want to lose my data, I flashed them using

```
fastboot flash boot_a boot.img
fastboot flash boot_b boot.img
fastboot flash system_a system.img
fastboot flash system_b system.img

```

This fixed the issue =).
> 1 votes

---
Tags: rooting, twrp, magisk, hosts, oneplus-6
---


# Question
Title: Do any data-recovery solutions still work on android 11?
Question: All data-recovery solutions I can find on this site are from 6 or more years ago. Similarly, commercial solutions (such as Dr. Fone) are only good up to android 4. Are there any tools or techniques that still have a reasonable chance of success on Android 11?

Background: I have an ASUS Zenfone 6 that I recently updated. After the update, I was asked for the lock pattern, which I somehow forgot (I usually use the fingerprint scanner). Without bypassing the lockscreen (or somehow reactivating the fingerprint without the lock pattern) the only option I see is to reset the phone (which I understand will delete the user partition). If it is possible to create an image or recover data after the factory reset, there is at least a chance I can recover the contacts and a few months worth of photos that defaulted to internal memory after a previous update. I know that android has encrypted the user partition by default since Android 5, so maybe recovering data is no longer possible.

Perhaps a successful method would include rooting the phone, although I don't intend to keep it rooted. At this point any method is better than no method.

# Answer
> 4 votes
Since about Android 6 all devices come with enabled user data encryption. I think since about Android 8 Google enforces that this encryption is hardware backed, which means you can't export the used encryption key and once the key has been deleted all data are gone forever.

These measures have been introduced to protect user data e.g. of a stolen device. Unless the thief knows the unlock code the device does not allow user data access.

There were a few cases were you could trick the lock screen to bypass it, however this only affects devices that were already running. If you boot the device you need to provide the lock screen PIN/password/pattern otherwise the user data encryption key is not released (the exact way this works was changed with every Android version a bit).

From the device perspective you are not the device owner unless you have authenticated using the required password/PIN/pattern. Therefore it now protects the data from any access.

There is no way to bypass this protection, otherwise a thief could do the same and in the get access to your data:

rooting: Requires an bootloader unlocked device or for an device with a vulnerability access to the UI is required. Unlocking a bootloader locked device automatically performs a factory reset which deletes the encryption key -\> data gone. And that you don't have UI access to the device is obvious.

# Answer
> 4 votes
If you ever enabled Google's "Find My Device", you might be able to unlock your phone by locking it there with another password. You can check if your device is listed in Find My Device. There you should be able to set a new temporary password to unlock your device. However, it seems like that's not always the case. Or that even the right password doesn't always work. But maybe it's worth a try if nothing else works.

See also this question about unlocking after locking with Find My Device.

---
Tags: data-recovery, android-11
---


# Question
Title: How to disable battery saving when battery level is below 15%?
I used an old tablet to operate a smart home. In order to work continuously, I took the battery out of it and connected it to a 4V power source, which works continuously. Based on the measured battery resistance between GND and BSI, I soldered a 10k resistor. After this treatment, the tablet works properly, only despite the constant voltage level, the battery level drops after a few hours to 1%. I would not have a problem with it if the battery saving function did not limit the capabilities of the device. Is there any way to turn it off? The tablet has root access.

# Answer
> 0 votes
You may be able to mock the battery level to 100% by using ADB by the following command:

```
adb shell dumpsys battery set level 100

```

The battery level should then stay at 100%.

---
Tags: root-access, 4.4-kitkat, settings, battery, charging
---


# Question
Title: Android: route USA device traffic over France device mobile network
I'd like to know how to best achieve the following: Use my Android phone in the USA as if I were navigating the internet from my Android phone in France.

I'm already able to accomplish simple HTTP proxying by connecting all the mobile devices via a Wireguard server and running the Every Proxy app on the France Android phone.\* However some apps don't respect proxy settings so I'm looking for a more robust option.

I assume apps have no choice but to respect VPN settings, so my plan is to force all traffic from the US device over the Wireguard interface (`AllowedIPs = 0.0.0.0/0`), instruct the Wireguard server to route traffic from the US device to the France device, then set up the France device to enable routing and masquerading so that the US phone reaches the France mobile network.

I don't know how to accomplish the last task (enabling routing and masquerading on the France device.) Can it be accomplished? It seems that I'll need to root the device. Is it as easy as doing

```
iptables -F -t filter
iptables -P FORWARD ACCEPT

```

according to this post?

Any tips? Thanks!

---

ProxyDroid claims to force all app traffic through a proxy on a rooted device however I'm not sure it works well and I didn't really want to root the US device. Some apps which I want to observe might check whether they are on a rooted device and act differently.

\*In the HTTP proxying setup, Wireguard clients are only routing LAN traffic over the VPN (`AllowedIPs = 192.168.1.0/24`)

# Answer
IP forwarding can be enabled with `sysctl`; iptables might have never been enabled / blocking forwarding or any traffics. (Speaking of that, the kernel you use needs to have the iptables components built.)

Another key is to either perform `SNAT`/`MASQUERADE` on the France device with the `POSTROUTING` chain of the `nat` table.

Also make sure you stop using `AllowedIPs = 0.0.0.0/0` on the France device. Instead you list the subnet(s) the other devices are in.
> 0 votes

---
Tags: vpn
---


# Question
Title: CaptivePortalLogin crashes every time I try to join a network
Every time I try to join an unencrypted wifi network that is protected by a web login (e.g. in a hotel), I get a popup message saying "Android System: Sign in to a Wi-Fi network ", I click on this message, and the result is:

```
CaptivePortalLogin has stopped
Open app again

```

I have tried also using Firefox or Chrome to find the portal by accessing a random HTTP page or the exact URL that my laptop is directed to to log in. Firefox returns "Server not found"; Chrome says "You are offline", `DNS_PROBE_FINISHED_NO_INTERNET`. My phone is set to not use mobile networks for data.

Is there any way to fix this or is there a workaround?

System information:

* Android 8.1.0 (security patch level 1 June 2018)
* Nokia 6.1, model TA-1050
* Kernel 4.4.78-perf+ (1/6/2018)

EDIT: I've tried a few apps as a workaround, such as Wifi Web Auth in case CaptivePortalLogin is the problem. This app errors with "Web page not available", `ERR_INTERNET_DISCONNECTED`, which seems like an odd complaint for an app designed to establish a connection. Wifi Quick Login fails as well.

# Answer
1. Turn off mobile data
2. Connect to WiFi
3. Go to this page: http://google.com/generate\_204
> 0 votes

# Answer
My android was doing same thing. I just did a battery pull. That resolved the issue. Mine had been doing this for a few weeks.
> 0 votes

# Answer
Enter Chrome and write http://192.168.0.1 or http://192.168.0.0. The authentication page should appear.
> -2 votes

---
Tags: wi-fi, captive-portal
---


# Question
Title: Smart Lock not working, is it due to Outlook?
I have a Nexus 6 with Android 5.1, kernel version 3.10.40-geec2459, build number LMY47D.

When I first started using the Nexus 6, Smart Lock worked. After a while it stopped working.

If I open the *Smart Lock* setting under *Security*, all options (like *Trusted devices* and *Trusted places*) are *Disabled by administrator*

Possible suspects: I use gmail with exchange, I use *Android Device Manager* and I use Outlook for Android.

Is anyone of those apps supposed to stop Smart Lock?

On the Office Blog it states

> Further, a device level PIN means we can take advantage of features like native device encryption, TouchID on iOS and Smart Lock on Android

I am not sure of how to interpret this. Does it mean that they "take advantage" of "Smart Lock" by disabling it?

I tested disabing *Android Device Manager* and *Outlook Device Policy* under the *Device administrators* and then rebooted the phone. That did not help.

I would really like to use both Outlook and Smart lock. Is it possible? Would it help to root the phone?

# Answer
I've discovered that Outlook Exchange server overrides my smartlock settings on my Android device. I used the default built in Samsung email client to setup my 2 Outlook exchange emails and my smartlock now works as advertised. I would like to find the settings in the Outlook exchange server to defeat this, but so far I can't find it. I am the admin for my own email service from Godaddy and Office 365. So far I can't find anything on a Google search that will direct me to the settings. I still have my Google MSN and ATT emails setup in Outlook and they don't seem to interfere with my Smart lock settings, but now I am split between 2 email clients on my phone.
> 1 votes

---
Tags: root-access, security, outlook, nexus-6, smart-lock
---


# Question
Title: How to stop uncorrect counting of my steps on Huawei Health app?
I have Huawei Mate 9 with Huawei health app preloaded. I travel most of the time by trains. I noticed the Huawei health recogizes any shaking in the train as steps while I am just standing or sitting. That's why I quickly reach 10,000 steps which are not real steps and the burned calories are not real in return. How do I stop my phone from identifying shaking in public transport as real steps while I am standing still. Do I have something wrong with my device?

# Answer
I'm not sure what all sensor data is being used by the app, but most would rely on the input of the accelerometer. And as such it is all based on its algorithm as to what kind of moments it identifies as steps. While it is hard, the sensor on the device can be giving out wrong values. But I'd still suspect that the companion app is not able to differentiate between steps and the shaking of hands due to you being on the train. It's quite tricky for it too. I'd probably just turn off the app while in the train. We can't expect a very good amount of accuracy from an app which isn't reading anything from the body. They can probably improve it by using GPS data and other sensor data to understand if the person was actually moving at the natural pace.
> 2 votes

# Answer
(I know this is an old thread but this is still a big issue with a lot of phones models and ppl might still find this universal solution useful)

Rootmode method

I disabled Samsung Step Counter sensor and Step Counter Detector sensor in android 10 by doing the following:

1. Uninstall Huawei Health application.
2. Activate Developer Options: go to Settings \> System \> About phone\>Tap Software info \> Build number\>Tap Build number 7 times
3. Enable the Sensor Toggle: to do this go to developer options find and tap "Quick settings developer tiles." enable/toggle "Sensors Off" button, it will turn off your compass, proximity sensor, accelerometer, gyroscope, and any other sensors. Note: on this step in Lineage OS 17.1 the Sensors off option only added this button/icon in android status bar (near wifi button/bluetooth button/etc) so you still have to tap on it to deactivate sensors.
4. Once all sensors are off you need to edit your build.prop file (either install a tool like BuildProp Editor- you need root mode, or use file explorer with a built-in text editor). The 2 lines that I've added in my build.prop file are: Code: ro.qc.sdk.sensors.stepdetector=false ro.qc.sdk.sensors.stepcounter=false 5.Restart phone. Install Huawei Health
5. Enable back sensors by taping the Sensors Off button in your android status bar. Additionally you can repeat step 3 to remove the sensors button from your status bar.
6. Open Health and check if the small ! exclamation sign from main window is gone or at least if it doesn't display your steps counter from phone.

PS I had to do this on one of my phones because Huawei app was restarting the phone randomly. It took me a while to find the culprit and apply this solution. Since then I tested this method on various other phones I own and it worked on all.

For non rooted phones use adb method ("adb pull /system/build.prop") to edit and upload the build.prop file. For more details on how to use adb pull and push commands google search, there are some nice tutorials out there and I don't want to copy/paste someone else's work.

Trying to to this without respecting the steps will result in failure.
> 1 votes

---
Tags: huawei, system-apps, sensors
---


# Question
Title: Why does Android make hotspots with a different subnet mask than a regular home router?
For example, we typically get 192.168.1.XXX addresses from a home router, but an Android phone gives out addresses on another 192.XXX which makes it problematic for connecting devices with each other in the same house.

Why does it do that? If it's only for security reasons, can it be reverted to use the home router's subnet?

# Answer
> 2 votes
*Note: This answer also applies to Apple iOS and other operating systems, which have hotspot (tethering) capability.*

The WiFi or cellular network you connect to, is usually IP wise under the management of that networks DHCP server. It controls who get which IP. If your phone joined that network and would start handing out IPs that are "owned" by that network, you would over time run into an IP conflicts.

To solve this you could "bridge" those two networks, allowing your tethered devices to request an IP from the original DHCP server. But this will often fail, especially in cellular networks, as you will only be entitled to a single IP on that connection.

So for maximum compatibility, operating systems will use NAT when deploying hotspots (tethering). NAT hides the facts that your phone is sharing its connectivity with additional devices, allowing them to access the Internet.

> ...can it be reverted to use the home router's subnet?

Technically you could, but those networks would remain separate thanks to NAT. You would end up with two 192.168.1.xxx which could not talk to each other. If you need your devices to talk to each other, your best option is to connect them to the same WiFi network. This will work best with private networks, as many public/Hotel WiFi might prevent this behavior.

# Answer
> 1 votes
Your phone is not connected to your router when the hotspot is enabled. It creates its own network and makes cellular data available over WiFi to devices on that network. Even if changing the IP range to 192.168.1.\* would be possible, it wouldn't make a difference, because your router's network and phone hotspot's network are two different networks.

---
Tags: wifi-hotspot
---


# Question
Title: Setting/app to route audio input to phone's mic while a wired headset is connected to it
I'm a new Android phone user. I'm looking for a setting or an application that can route audio input to phone's microphone while a wired headset is connected to it, but keep the audio output to the headset. I have been searching for this in Setting but I think it is not available there. I have been also searching for the app that can do this, the search results recommend me an app named SoundAbout, but it doesn't do what I want, it's just routing audio output to phone's speaker while a wired headset is connected to it.

So is there any?

# Answer
There is no system-wide setting for this, unfortunately. And apps that try to control audio routing are usually hacks that cause problems on their own.

But I have a hardware solution for you -- buy one of those splitter adaptors that convert 4-pin TRRS into 2 3-pin TRS, separating for headphones and microphone, and only plug the headphones jack into your phone. Look for something like this: https://www.amazon.com/StarTech-MUYHSFMM-Headset-Splitter-Adapter/dp/B0058DOWH6 (I'm not recommending this particular adapter, just showing how it should look like).
> 1 votes

# Answer
Use an app named Lesser AudioSwitch.
> -1 votes

---
Tags: applications, audio, microphone
---


# Question
Title: How to connect to PEAP MSCHAPv2 Wi-Fi using system certificates in Android 7.1 Nougat?
Android 7.1 has introduced some changes to Wi-Fi connection interface. In 6.0, when selecting PEAP MSCHAPv2 in Wi-Fi connection interface, there were no CA certificates available (unless some had been installed). In 7.1 one can `Use system sertificates` and `Domain` input field appears.

So, for example, I want to connect to Eduroam, that requires thawte Primary Root, using login `user@uni.org`. What am I supposed to type in `Domain` and `Identity` fields?

# Answer
Assuming you want to use the email address `user@uni.org`, `Domain` would be `uni.org` and `Identity` would be `user@uni.org`.

Source: XDA developers and originally Virginia Tech Helpdesk
> 6 votes

# Answer
Three cents!. .

At this time this change in behavior is specific to Android 11 code, December 2020 update, Build number RQ1A/D depending on model.

Important to note that this google change for Enterprise WiFi connection relates to both 1) Possible manual import of the root CA certificate, AND 2) the mandatory use specification of the "Domain" being connected to (as embedded in the cert presented by the AP)

**1 - root CA Certificate Handling :**

1-a) If using a private root CA then user will need to import the private root CA manually, and android (pixel 3 in my case) wants it to be done specifically as a "WiFi certificate" ( as opposed to CA, or VPN, this is just a google requirement) 1-b) If the root CA for the certificate presented by the AP is a public one ( see "1" above) then no manual import is needed because WiFi profiles default to "Use system certificates" and thus you are likely already covered ( This system folder is controlled by Google, user cant add/delete any certificates in it only turn on/off)

**How to import ?**: Settings -\> "Security" -\> "Encryption & credentials" -\> "Install a certificate" -\> "Wi-Fi certificate" then follow prompts to locate file ( local, google drive, etc),. Important, you can name the cert to easily identify it at time of setting the Wi-Fi profile later on.

**2.- Mandatory "Domain" handling**

The "Domain" field here is the domain of the CN field in the certificate presented by the AP. One can either enter the FQDN or just the domain portion of that FQDN. This string has to match the one in the CN field (OR the x509 Subject Alternate Name (SAN) ) in the certificate that the AP sends to the Phone at time of authentication. ( I have successfully tested using the CN field only and not he SAN) How to obtain this field ? : 2-a) User's Network Admin will need to provide it. OR 2-b) you can temporarily borrow a non-WPA3 phone (e.g iphone) to get the AP certificate and just copy the subject name CN field. As specified above only the domain portion of the FQDN is necessary and sufficient.

**3) Configure Wi-Fi Profile**

With 1) and 2) taken care off all that is needed is to proceed with the Wi-Fi profile configuration: Click on a new SSID to join a new Enterprise network ( or just click on "Add network") and follow prompts :

3-a ) In "Security" choose WAP/WAP2/WPA3

3-b) In "CA certificate" : i) If public root CA nothing to do. (default "Use system certificates' covers your case). ii) If private root CA, then use dropdown menu to select the root CA cert you imported in Step 1 above

3-c) In "Domain" enter the domain string resulting from completing Step 2 above.

**DONE !!!** Important: These changes were not whimsical, but driven by security concerns, and WPA3 standards. Google is forcing the validation of the root CA certificate ( if public CA Google takes care of it via their system root CA certs, if private CA, the onus is on the user to manually import the private root CA cert). Note that the root CA certificate is always validated and that Google gives user choice only to turn off validation of the ***status*** of the certificate **NOT** the certificate signature itself. The mandatory entry of the domain is to match the domain of the AP certificate against that provided by the user ( the validation of the AP certificate just proves the certificate was signed by a trusted root CA, but how do we know that the domain matches whom we are thinking we are connecting to and not a "man-in-the-middle" ? Only way is to force the user to specify it, and verify against the AP certificate one !
> 3 votes

# Answer
I've learnt that the domain refers to the address of the RADIUS server of the network:

The university used to ask to install a Thawte certificate for WiFi connection. Then, then switched to DigiCert and the installation is not necessary anymore. So, their new config is now like:

```
PEAP
MSCHAPv2
Use system certificates
radius.uni.edu
user@uni.edu
___
password

```

Obviously, it's a particular case, but the idea is clear.
> 1 votes

---
Tags: wi-fi, 7.0-nougat, certificates
---


# Question
Title: Where does Google Pixel take caller ID from?
I made an outbound call to a business today and the caller ID displayed was that of a completely unrelated business in a different geographical location (so would have a different (UK) area code).

Does Google perhaps pull this data from business profiles on the search engine and how can I report the inaccuracy?

# Answer
**Phone by Google app (which is the default Phone app on Google devices) uses data from Google and its licensors.**

In the Caller ID setting (**Settings - Caller ID & spam**), Google put a disclosure,

> Data being used in these features is provided by Google and its licensors. **Learn more about business listings data**.

The listed licensors are:

* France, Germany, Netherlands, Belgium, Denmark, Israel, Luxembourg, Monaco, and Morocco: Kapitol S.A. (trading as Infobel) (the "Infobel Content")
* Brazil: TeleListas S/A
* Turkey: Turkey Yellow Pages (Yellow.com.tr)
* Kenya: Yellow Pages Kenya Ltd (www.yellow.co.ke)
* Egypt: Egypt Yellow Pages Limited (yellow.com.eg)
* Saudi Arabia: Al Wahda Express Saudi Arabia (www.daleeli.com)
* Bulgaria: New Europe Directories Bulgaria EOOD (www.goldenpages.bg)
* Norway: Digitale Medier 1881 AS (www.1881.no)
* Italy: SEAT Pagine Gialle SPA (www.paginegialle.it)
* Republic of Ireland: Central Index (www.centralindex.com) and YourLocal.ie, trading names of Touch Local Ltd
* Czech Republic: Zlaté Stránsky (ZlateStransky.cz)
* India: INFOMEDIA Yellow Pages (www.yellowpages.co.in) and/or IndiaCom (www.indiacom.com)
* New Zealand: Finda
* Slovenia: Monolit informacijski sistemi d.o.o
* Taiwan: HongKu Info Co. Ltd. www.ipeen.com.tw

It is also mentioned that

> If you know that your business listing is supplied by \[...\] and you have any questions about it, you should contact them directly.

---

For data provided by Google, it should be possible to report them by finding the related business listing first, then following the steps on Edit business information in Google Maps or Report data or content errors on Google Maps.
> 4 votes

---
Tags: android-11, google-pixel-4
---


# Question
Title: How to stop screen from coming on with intermittent charging
I know we have this very old question and answers How to keep screen turned off when plugging charger? but why isn't this implemented by Android?

My scenario is that I use my phone for navigation on my bike, and it's connected to a hub dynamo charger. The charger output isn't buffered so it will stop charging if I go too slowly (a hill or traffic lights, etc), and then start again when I'm up to speed. This can cause the screen to come on a lot. Ideally I would like to disable this behaviour. What's the current best solution and why doesn't Android have a check box to disable this annoying behaviour?

# Answer
> 0 votes
One of the earlier answers on this recommend using Snoozy. However it's no longer on Google Play, so you have to load the APK directly from the website mentioned.

---
Tags: charging
---


# Question
Title: What is the default channel for Android Hotspots?
I have seen the other threads talking about you not being able to change the default channel, and that is fine as I can configure my router. Can anyone just confirm which one it uses though, or does it vary by manufacturer? If so would you know for Xiaomi and Samsung? Thanks =\]

# Answer
I can confirm that on OnePlus you can not choose the channel that is used. You can although choose if you wish to tether via 2.4 Ghz, or via 5 Ghz band.

On the 2.4 Ghz band it picked channel 8, so I doubt there is default to which channel uses, at least not here. It might either pick at random, or do a short channel scan itself and pick an optimal channel.

If you have a second android device, you may use something like Wifi Analyzer to find out which channel your device ended up on.
> 1 votes

---
Tags: wifi-hotspot
---


# Question
Title: Turn OnePlus 3 on with broken power and volume buttons
As title suggests, I'm looking for a way to turn my OnePlus 3 on but I have the following issues:

* Volume buttons do not work
* Power button does not work
* USB debugging is not enabled
* Phone is currently off...

Any ideas?

# Answer
> 0 votes
There appears to be no obvious workaround to power on your device, if neither your power button or volume button work.

You might be able to revive your buttons with some isopropyl alcohol and intensive button pressing. On the old Nintendo DS, you were also able to briefly revive buttons by breathing/blowing into the buttons and repeated button presses.

Another more advanced possibility, if you have nothing too lose, is to open up the device and see if you can bridge the contacts the button is supposed to activate. You might also find replacement parts on the internet.

---
Tags: power-on
---


# Question
Title: Is it possible to securely factory wipe a phone directly after encrypting it?
I would really like to make my phone more secure. But at the same time I want to be able to factory wipe it any time. I'm afraid that factory wiping could brick the phone/makes it unusable. So is it safe to wipe the phone directly after encrypting it?

# Answer
> 1 votes
Phones delivered with or since Android Lolipop, which came out in 2014, are encrypted by default. Android uses full disk encryption, same as Apple's iOS. This means that every block is encrypted, not just specific files, but also the meta information which describes where is what.

A factory reset will clear the decryption key used to access the data and descriptive information. So once you perform factory reset, it is effectively wiped, as none of the data blocks can any longer be accessed without that key, its practically random data.

> I'm afraid that factory wiping could brick the phone/makes it unusable

This is not an uncommon operation. Factory resets are frequently used by diy people installing their own custom ROMs. It is also standard practice when reselling or disposing a phone. It is likely a very well tested feature, since it a user accessible feature.

---
Tags: encryption, disk-encryption
---


title: SMS not received on new Android

text:
# Question
Title: SMS not received on new Android
I just purchased a new Moto G Power (Android version 10) and replaced my old iPhone 6s backup phone. When I put the Sim card in, everything worked except incoming SMS. Outgoing SMS worked fine, just not incoming. I figured it might be related to the Apple account and iMessage, so I found a link that would disconnect from iMessage. I saw on a website that it might take a few hours to take effect, so I was patient about it.

That happened yesterday afternoon (around 3 PM). It's quite a few hours later and I am still not receiving incoming SMS on my device. When I put the Sim card in the iPhone messages come in, and they come in as SMS rather than iMessages. So I'm not sure why it's not going to the Android device.

Does anyone have any recommendations for next steps?

# Answer
You need to reach out to your carrier's support team...

If you can send SMS and make/receive calls, then the issue likely isn't with your device. SMS uses the same transport and registration as is used for phone calls, so this likely falls on your carrier.

This has occasionally been an issue with some carriers when users are switching from Apple to Android, and a new SIM has to be issued sometimes.

Reaching out and working with the carrier's support team is probably best at this point.
> 0 votes

---
Tags: sms, ios
---


title: How can we avoid folders auto-creation?

text:
# Question
Title: How can we avoid folders auto-creation?
**There's a way to manage these system folders?**

I am struggling with some folders that are automatically created at boot, by system on the SD card, but I don't want them!

The folders are especially the following: LazyList, LOST.DIR

Into the latter I have found several, also big, files, and I don't want to waste the storage, maybe, with duplicated or deleted files. There's a way to better manage, or even better, completely avoid it?

**Thank you... as always!**

# Answer
> 1 votes
**EUREKA! I have found a way!**

After some deep "Guru meditations" I have had a "flash of a genius"... and found the way!

It relates to the file system itself. The rule is that where it is a file with a given name in a folder, there cannot coexist a folder with the same name, so, if you, after the deletion of the folder, create a file with the same name, that folder cannot be created anymore!

.

### So, if you want to get rid of an auto creating folder, just create a file,

### and if you want to get rid of an auto creating file, just create a folder,

### with the same name, in the same path.

.

The file or folder will substitute one the other, and voilà, you could avoid the creation of the almost useless folders, even included LazyList and LOST.DIR, and whatever else you want!

Man vs Filesystem: 1-0

---
Tags: external-sd, boot, file-system
---