# Question
Title: How to extract Google contacts pictures?
I would like to have all my Google contacts' pictures extracted in a folder, for instance in JPG format.

I know that it's already possible to export all contacts including pictures, for instance via the *Export* option in Google Contacts or via a third-party app such as Contacts Backup Ultimate. However, this generates a bundle of all contacts (for instance, a VCF file generated via the *Export* command above will contain all pictures Base64-encoded). I would like to obtain instead a image file for every contact so that they are easily viewable.

Is there a way to do so?

# Answer
To extract Google contacts you can use the web application provided by Google for free: Google Takeout. This application helps to extract all the data stored in Google Apps including contacts saved on Google. All you need to do is sign in with the Gmail id where all the contacts are saved, and then choose the contacts section to extract the files. Later, you will receive an email that will be containing all the information of contacts in a vCard file.
> 4 votes

# Answer
For Android device follow below steps :

1. Go to Chrome & visit https://contacts.google.com
2. Select the contact whose photo you want.
3. Tap on option, select export & select Google CSV.
4. Then the file will be downloaded.
5. Open that file in excel sheet (WPS office or MS office Android app).
6. Go to column name photo & select and copy the URL.
7. Paste it on Chrome's address/search bar & hit enter.
8. The image is opened just press & hold on image and save/download it.

I think this will be helpful to you.
> 9 votes

# Answer
In Google Contacts on the web, click on contact then right click on photo. Select "inspect", The code for retrieving your photo will be highlighted in a popup window. Click on that URL and then do a screen capture and edit the photo.
> 0 votes

# Answer
Open the contact. Under the contact name, scroll down for Google Profile. If you right click on the photo, you have the option to save or download the image.
> -1 votes

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


# Question
Title: Chrome redirects to Messenger on Samsung mobile
I have been getting redirect notices on my Samsung Google Chrome browser with a link to Messenger, e.g. here is the last link: `https://www.google.com/url?q=chrome-native://recent-tabs/&usg=AFQjCNGr_fE_CEo3dlMRGaW3TnfE3S3U6Q`.

I once installed Messenger, but I have never used it nor do I even have a Facebook account. But now it makes it appear like I am using Play Store secretly, using Messenger, and my spouse believes I am secretly using Messenger.

How can I stop the redirection?

# Answer
> 1 votes
Try any of these steps:

* Clear Cache, Cookies, and Data of Chrome.
* Also Clear the downloaded data if there are any infected files.
* Check any previously installed apps causing troubles, if any, try uninstalling them.
* Scan using any good antivirus app or a built-in one.

# Answer
> 1 votes
I was having the same issue when I use Facebook on the browser and it redirects me to open Messenger even if I don't want to, but I finally got the solution:

1. If you're having Messenger already downloaded, then uninstall it. And reinstall it again.
2. Log in to your Messenger after the download but don't allow the permissions to access your contacts or media.
3. Keep it aside and go to your mobile settings.
4. Go to app manager
5. Click on Messenger.
6. It will show some options like permissions, notifications, open by default, etc.
7. Click on open by default.
8. It will give two options or more: click on open supported links in an app.
9. Click on disallow option.

But make sure that the Messenger you have is recently downloaded.

---
Tags: samsung, chrome-for-android, facebook-messenger
---


# Question
Title: Blocking apps to be installed in AVD environment?
Is it possible for developers to block their Google Play apps to be installed at AVD or am I just picking the unsupported AVD profile? I'm trying to install the app into the AVD and debug in a more controlled environment, however, it says:

> Your device isn't compatible with this version

So, it isn't an error message. It's a Google Play message before installing the app.

# Answer
> 0 votes
There are multiple ways to detect if an app is running on an emulator. But in your case it seems to be a general problem because the error already occurs on installation:

Emulators are usually x86 devices because of emulation speed (as PCs usually have x86 based CPUs). The number of real Android devices with x86 architecture is very very low hence if a developer does not support x86 this can result in an error like you encountered.

Try the latest beta emulators image for Android R it supports both x86 and arm. Therefore on on this emulator image you should be able to at least install the app. If it runs is a different question.

In any way a rooted physical device is usually suited better for an analysis.

---
Tags: installation, android-emulator
---


title: Installing lineageOS

text:
# Question
Title: Installing lineageOS
I have a tab S2 stuck on 5.02 I wanted to upgrade the software to lineagOS There are lots of information out there but nothing that can help me. A few things first that I need to share. Im usung a MAC I once unlocked my device and knox is now void so must be unlocked. the bootloader I cant tell if unlocked. using an app I tried to check but came back with an error of " Sorry! root access is not properly installed on this device" The tablet is in developer mode, there is no OEM mode or anything like that, usb debugging is turned on. I have tried several things using terminal but didnt work with home brew an adb services. these installed on my mac but got as far as trying to add fastboot devices but denied on the terminal, but that probably makese sense if the bootloader is locked.

MOst insgtructions imply that you know what to do and dont exxplain much. Can anyone please assist with step by step instructions so I can complete the process of installing LineageOS.

Id appreciate your time if you can help me.

KInd regards

# Answer
Samsung devices does not have fastboot mode, at least i am not aware of Samsung devices with Mediatek chipset

the bootloader lock status can be checked only from download mode screen

step by step instructions vary on device and android version. your android version 5.02 may not have OEM unlocking in developer options, you can skip this step

on the other hand be aware Samsung does improve security continuously and may roll-out new features even to old devices, which leads in non-working tutorials

also rooting apps like Magisk do silently change usage at will which may end up in data loss if tutorial isn't up to date
> 0 votes

---
Tags: bootloader, lineageos
---


# Question
Title: Xiaomi M8SE Fastboot loop when trying to install TWRP
When trying to install TWRP (latest version for Xiaomi Mi 8SE) I manage to install the newest TWRP using adb (fastboot flash recovery "C:\Program Files (x86)\Minimal ADB and Fastboot\twrp.img). However, once I boot into TWRP, it does not set it as a default loader. After wiping the data, and trying to reboot in recovery like here: https://youtu.be/FEN7Ujb4vdo?t=390 it simply reboots into fastboot and from there, I cannot do anything anymore. I then have to install a Chinese developer version using MiFlash.

Can someone help me with this issue? I am trying to install a xiaomi.eu MIUI 11 version for my better half - she is tired of the Chinese ROM and half of the OS is in Chinese...

# Answer
> 1 votes
The solution to get out of the fastboot loop was to fresh install the developer MIUI with the MI Flash tool and then sign into the MI Account when setting up the phone. This is essential and the only way to install TWRP. I am guessing it has to verify that the bootloader is unlocked with the Mi account first.

---
Tags: adb, twrp, fastboot, xiaomi
---


# Question
Title: Does Android save videos from Instagram live in the cache?
I hosted an instagram live interview yesterday and when it came to saving it to post to IGTV there was an error. I believe it was either due to a network error or that there may not have been enough space on my phone to save or process the video (I have 3.1 GB available, it was a 57 min live video.)

Eventually after editing the title and text multiple times thinking it was a character limit or doesn't like punctuation etc, as well as switching off flight mode and switching on data in case it was the network, I had to abandon the video. It is not saved in my stories or my archive on Instagram or anywhere on IGTV.

I've looked in the Android files on my Samsung S8 under com.instagram, cache and videos, and in movies and downloads, but cannot find it. Would it be saved somewhere on my phone?

Would the reason for the error be insufficient storage space or more likely network error?

# Answer
You're only able to save a live video right after you've ended it. Only you will see the option to save your live video. So, I doubt it's cached somewhere...
> 0 votes

---
Tags: video, cache, instagram
---


# Question
Title: Android Apps can't access my SD Card storage BUT file managers can
Apps like Youtube, NetFlix, prime video do not have a "Store to SD Card" option. I have tried 3 different sd cards with my phone, formatted them but still, apps are unable to detect the sd card and do not have an option to download to external storage. However, file managers and apps like vlc, album, and basically any media app can access and browse files stored in the sd card. How do I fix this?

I want youtube to store downloaded videos to sd card same for NetFlix and prime video. I also tried uninstalling the apps and reinstalling them on my phone. I haven't found a fix yet.

My phone is running Android 8

# Answer
> 0 votes
Doing a Factory Data Reset on my phone fixed the issue. Apps are able to write to SD Card. I would like to thank @IrfanLatif for helping me identify why this was happening. Ultimately i decided to factory reset my phone and it did fix the problem.

---
Tags: applications, external-sd, sd-card, storage
---


title: Blackberry Q10 to Samsung Galaxy S6

text:
# Question
Title: Blackberry Q10 to Samsung Galaxy S6
Want to get my contacts from Blackberry Q10 to Samsung Galaxy S6.

Tried MobileTrans, Dr. Fone (neither support Blackberry anymore) and even tried to use Samsung Switch software. Neither worked. What can I do ? I just want to import the contacts over ..

# Answer
I think you have two options: **1: Transfer to a Google Account** login to a Google account on your Blackberry and go to the `contacts app > gear icon > General > Contacts Management > Copy Contacts` and you will be able to copy them straight to the Google account. Then login on your Galaxy S6 and enable contacts sync.

**2: Export as a vCard or .vcf file** `contacts app > gear icon > General > Contacts Management > Import/export` and select an option. Then transfer the file from your Blackberry to your S6, and go into the contacts app and click import.

If in option one, for whatever reason you are not able to login to a Google account and transfer the contacts, you can export them as a vCard or .vcf, and import them into Google contacts on your PC directly.
> 1 votes

---
Tags: samsung, blackberry
---


# Question
Title: Two types of internal storage, what is the difference
When I go to `System Settings > Storage’ I see two storage classification both by the name of`Internal Storage\` one is around 2 GB and other is 11 GB. Also there is no SD Card present in my device.

Issues is most of the times the 2 GB Internal Storage gets full and I get insufficient space error, however the other 11 GB space is almost empty.

Why is that why two types of storage, and is there a way I can make both of them one so my device could use complete 13 GB as Internal device storage?

I am using Galaxy Note N7000 with custom Cyanogen Rom.

# Answer
> 4 votes
# SOURCE : http://gadgetstouse.com/gadget-tech/internal-phone-external-storage/20812

Most of the today's Android have **Three** types of storages.

1. Internal Storage
2. Phone storage
3. External storage.

# Difference between Internal, Phone and External Storage.

## Internal Storage:

In laymen term, it is the *personal space* of Android, where it stores your (system) applications and its data as well as other sensitive data.

In short this memory is reserved for your operating system and personal data.
And you cannot access it directly, even with a PC.

If you get a *Low storage space* you can move apps to SD-CARD to free up some space.
**This storage gets erased to default by Factory Reset**

## Phone Storage:

This is the storage that is **available to you**. When you "move" Applications, this is where they get stored. It is shown as **SD-CARD** or similiar name. You can use like a normal memory storage.
It doesnot get erased by Factory Reset.

## External Storage:

As name suggest, it is the **external storage** available to you ie your **Memory Card**.
For Note N7000 is 32/64. So it atleast supports 32 GB memory card.

**Apps2SD:** To move apps to SD card. download Apps2SD APP. The App will give you full list of apps which you can transfer to SD card and will prompt you in notifications whenever you download an app which can be moved to Sd card.

Not all apps can be transferred to your SD card. (If developers check ‘Apps2SD’ option in there apps, only then you can move that App to SD card.) Another important thing to note is that complete app will not move to SD card. If you move 25 MB Adobe Flash Player to SD card, about 10 MB space will be freed on your internal storage.

## How to get more?

In order to get even more that that 2GB (Its a lot already!), you need to do some Advanced Steps which requires basic knowledge of root and/or partition.

By simply rooting your phone, you get the freedom to use it as you want to, but that voids your warranty. you can move most apps and other data to SD card even without root, but even that is something basic users shouldnt have to be bothered with.

## ---

# For Rooted Devices:

# Partitioning Memory Card:

A great article is written over here which explains all the steps in a lucid way.

By following the above steps, you will get extra internal storage from your memory card.
Please note that the above method will **Erase your memory card** so dont forget to make a **Backup** in your PC.
Please note that, once done, if you remove your memory card, all the data and apps that you linked **wont be available** to you anymore. Hence use a memory card (I suggest 16 GB) that can suffice your storage needs.

---

---

# Advanced:

*This section is for advance users only as the knowledge require and risk is much higher. Continue on your own discretion.*

# Partitioning **Internal Storage**:

Rather than partitioning memory card and get stuck with it, why not **partition Internal Storage itself!**

> Here is the link to the Guide which is **Especially made for N7000**
> http://forum.xda-developers.com/showthread.php?t=2642299

# Swapping Internal and Phone storage.

This Article shows how you can even increase the internal storage. Combining with the above and get even more space!

Kudos. It takes a lot of hard-work to write a good answer, a thumbs-up is always appreciated!

# Answer
> 1 votes
Until Android 3.0, with security in mind, the Linux /data partition was allocated around 2GB to install apps from the app store and all its data. While the remainder of the available storage (16GB+) would be devoted to media which can have larger files and needs larger storage for movies for example. But this architecture caused problems with users running out of /data space to install new apps while still having tons of space under /sdcard for media. So, Google decided to merge the two partitions into one from Honeycomb onwards. From Honeycomb, onwards

• User apps from the app store was still stored on /data/app & • apps' data was still stored on /data/data.

But now, all media was also stored on /data/media and this would be fused with /sdcard during bootup and a FAT file system would be emulated. In recovery this is done by mounting /data/media to /sdcard. Mounting is just like what happens when you insert a memory stick into a USB slot in Windows. A foreign partition is accepted by the Windows system into its directory structure. Similarly, /data/media and its contents could be accessed through calls to /sdcard.

A problem is /data/media uses ext4 file system. This is NOT recognised by windows so if /data/media was ever to be directly offered to Windows, Windows would state that this location has not been formatted and would offer to format it with disastrous results. For this reason, Android intervenes and emulates FAT file system before passing the contents of this location onto Windows.

Hence in current versions of Android, there is indeed a /data partition but at the same time, there is also an emulated VFAT /sdcard partition.

At the same time, Google has made the physical /data partition much larger so the out of ‘memory’ space errors would no longer occur when trying to install new apps. Users could choose how to split the allocation of their device storage between apps and media or user documents.

So, for this reason, there exists a physical /data partition where all the apps are installed with their data and this location cannot be accessed by users through a file explorer. Yet the media /data/media section of this partition will be made available through FAT /sdcard emulation.

* Music is saved on /sdcard/Music;
* Photos are saved on /sdcard/DCIM;
* Videos are saved on /sdcard/Videos;
* Other app data are saved on /sdcard/ (App Folder);
    + Other apps choose to store their app data on /sdcard/ ..., such as Minecraft: /sdcard/games.
* Downloads are saved on /sdcard/Downloads, and can be easily found if you have the Downloads app.

Source: https://twrp.me/faq/datamedia.html.

# Answer
> 0 votes
To answer your question directly...

The difference between the two types of 'Internal Storages' are as follows...

1. The internal storage that's embedded into the phone that's non removable...Usually between 32 - 128 GB Most phones are expandable up to 1TB with an SD card as follows below.
2. A SD Card in which the phone has adopted as additional internal storage, allowing apps to be installed and ran from it, this combines the overall amount of storage a device reads but are housed in separate parts of the device

Am I right?

---
Tags: cyanogenmod
---


# Question
Title: How to recover open opera tabs from backup data after phone bricked?
I had more than 200 tabs open on opera and they would normally reopen again, even after reboots.

My phone broke, but I have a backup of the external SD Card, internal SD Card, and a backup from TWRP which is of a size of 23.7 GB but does not have an obviously accessible structure.

Following the advice from another QA, it is possible to concatenate the `data.ext4.win000` to `data.ext4.win009` files and access them as a tar archive (It's a good idea to cd to where you want the backup to be extracted to first):

> `bash cat data.ext4.win??? | tar xvfi -`
>
> What this does is concatenate each file matching the pattern data.ext4.win??? and then pipe the concatenated files to tar for extraction. the - as the filename tells tar to extract from stdin. The i option ignores zero blocks which will be in between each archive file concatenated.
>
> In this example I used the ext4 formatted data partition. Change data.ext4 to match the partition you are extracting.

Although the tar command exits with

```
/data/magisk_backup_bd5d0aa87b96353c78a3bf3a455121d0c767089c/boot.img.gz
tar: Exiting with failure status due to previous errors

```

it extracts quite a few files before this hapens.

However, it is probably better to simply extract each of those files on their own without concatenating them, as in the comment by alecxs:

> side note: concatenating win\* files is wrong, that files are standalone tarball archives

Now that I have my `/data` directory again, I have access to `/data/data/com.opera.browser` and `/data/app/com.opera.browser-2`. What do I do with them to extract a list of urls that were open?

### Directory Structures

data/data/com.opera.browser

```
├───app_opera
│   ├───Application Cache
│   │   └───Cache
│   │       └───index-dir
│   ├───blob_storage
│   │   └───9b46839e-470e-4a3a-aa32-e9bc919a25f0
│   ├───databases
│   ├───databases-incognito
│   ├───File System
│   │   ├───026
│   │   │   └───t
│   │   │       └───Paths
│   │   └───Origins
│   ├───GCM Store
│   │   └───Encryption
│   ├───GPUCache
│   │   └───index-dir
│   ├───IndexedDB
│   │   ├───https_hackernoon.com_0.indexeddb.leveldb
│   │   ├───https_mobile.twitter.com_0.indexeddb.leveldb
│   │   ├───https_www.epicgames.com_0.indexeddb.leveldb
│   │   └───https_www.independent.co.uk_0.indexeddb.leveldb
│   ├───Local Storage
│   │   └───leveldb
│   ├───paks
│   ├───Platform Notifications
│   ├───saved_pages
│   ├───Service Worker
│   │   ├───CacheStorage
│   │   │   ├───5a6f7e336992bc24678958dc2f1f9b9eec83593b
│   │   │   │   ├───281ffb34-a074-4397-a60c-e3dc55aee5e5
│   │   │   │   │   └───index-dir
│   │   │   │   └───8d34090e-e00a-4f69-9450-bbe1b4b0dc9d
│   │   │   │       └───index-dir
│   │   │   ├───96f3041722d8f6857b95786ee88fa6a107a86943
│   │   │   │   └───11ccf6ea-9e2a-4648-8c61-a635e1cca5c5
│   │   │   │       └───index-dir
│   │   │   └───e60030e2e5440743857a39cacd108634434c91f1
│   │   │       ├───0045349f-4331-4037-bf9d-e9711e515a08
│   │   │       │   └───index-dir
│   │   │       ├───4a447cca-f7ca-41f1-9464-e40337cd7ed1
│   │   │       │   └───index-dir
│   │   │       └───907b2396-da18-4880-a0df-e3608abac640
│   │   │           └───index-dir
│   │   ├───Database
│   │   └───ScriptCache
│   │       └───index-dir
│   ├───Session Storage
│   ├───shared_proto_db
│   │   └───metadata
│   ├───Sync Data
│   │   └───LevelDB
│   └───VideoDecodeStats
├───app_optimized
├───app_textures
├───app_webview
│   ├───blob_storage
│   │   └───3f7cc261-4c0e-41cc-947b-2dc712733f49
│   ├───GPUCache
│   │   └───index-dir
│   └───Local Storage
│       └───leveldb
├───cache
│   ├───cache
│   │   └───index-dir
│   ├───Crashpad
│   │   ├───attachments
│   │   ├───completed
│   │   ├───new
│   │   └───pending
│   ├───crash_dumps
│   ├───distiller
│   │   └───index-dir
│   └───okhttp
├───code_cache
├───databases
├───files
│   ├───AFRequestCache
│   ├───ds
│   │   ├───10
│   │   └───E
│   ├───images
│   │   └───share
│   ├───keychain
│   │   └───0
│   ├───reading
│   └───recently_closed_tabs
├───no_backup
└───shared_prefs

```

data/app/com.opera.browser-2

```
├───lib
│   ├───arm
│   └───arm64
└───oat
    ├───arm
    └───arm64

```

data/data/com.opera.browser/files/

```
# 332 files of the nameformat "thumbnail_-214748????"
# 3   files of the nameformat "searchengine_j_<UUID>"
AFRequestCache
appstate.bin
audience_network.dex
cards_settings.dat
ds
favorite_25
favorite_29
favorite_31
favorites.json
images
keychain
newsfeedback
permissions.bin
reading
recently_closed_tabs
reksio.ini

```

### System Info

I think I was on Android 7.1.1
Rooted with Magisk, but stock ROM

### Recently Closed Tabs

Not what I am looking for right now, but I stumbled upon the location of those, in case a future viewer is looking for them:

```
data/data/com.opera.browser/files/recently_closed_tabs/state-2147481796

```

### Related Links

### Promising Files `appstate.bin`

`data/data/com.opera.browser/files/appstate.bin` contains at least some urls and their titles, separated by a null-byte. `strings appstate.bin` outputs more than just the urls that were open though. And some of those doubly or not completely. I shall document my journy with this file below.

Looking at `data/data/com.opera.browser/files/appstate.bin` shows that it's a binary data file, but it contains readable strings. Open it with `vim appstate.bin` or look at `hexdump -C appstate.bin`.

```
strings appstate.bin | grep -A3 reader_mode_state

```

already spits out quite a few urls. But it's not yet obvious to me how the structure of that file actually works.

Some entries prefix the url with `l` or `O` or `K` or `]` or not at all.
In some entries the first line after "reader\_mode\_state" is the url, in others it is "operaui://startpage" and the url follows further below.

But what stands out is that the urls all seem to start with `http` or `https` \- unless you had some ftp or such open, which I'm pretty confident I did not.

```
strings appstate.bin | grep http

```

outputs 1506 lines though. some links are duplicates, others are links I do not care about. e.g. like so:

```
Qhttps://www.linuxuprising.com/2018/06/fix-no-sound-dummy-output-issue-in.html?m=1
Qhttps://www.linuxuprising.com/2018/06/fix-no-sound-dummy-output-issue-in.html?m=1
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com

```

Since I don't care about duplicates, we can apply `uniq` to reduce that number down to 967 urls. With `sort -u` we would get down to 833 instead. But both are still too many. It seems to me like opera also stores the tab's history in there.

Removing some obviously unwanted lines gives 523 lines, so ~260 urls:

```
 strings appstate.bin | grep -v -e 'operaui://startpage' -e 'Speed Dial' | grep -A2 reader_mode_state | uniq | grep -v 'reader_mode_state'

```

As a target number to consider:

```
strings appstate.bin | grep reader_mode_state | wc -l
231

```

That means - assuming this target number is a good estimate of how many tabs were open - that I have about thirty urls too many. I think I can live with that.

# Answer
> 2 votes
## Use on New Phone

1. Install opera on the new phone
2. Copy the old `/data/data/com.opera.browser/files/appstate.bin` to the new phone at that location. (Requires root).
3. Open Opera. All the Tabs exist (but will have to be loaded again).

---

## Export URLs as List

This will find slightly more urls that you were hoping for. Probably something from the tab's history.

`data/data/com.opera.browser/files/appstate.bin` contains that data. To get a list of only the URLs, you can run

```
strings appstate.bin | \
grep -v -e 'operaui://startpage' -e 'Speed Dial' | \
grep -A2 reader_mode_state | \
sort -u | grep -v 'reader_mode_state' | grep -oh "http.*$"

```

If you care about the order of the urls, use `uniq` instead of `sort -u`.

---
Tags: opera-browser, browser-tabs
---


# Question
Title: genymotion icon is not shown in android studio
i want to use genymotion in android studio. i have installed genymoiton and oracle virtualbox. in android studio i went to: File\> settings\> plugins , and installed genymotion. i should say that, previously, i have create a virtual device in genymotion. the problem is: i expect that the genymotion icon to appear in android studio but: nothing appears

any help is highly appreciated...

# Answer
After installing Genymotion plugin and restarting Android Studio you should see the Genymotion device manager icon in the toolbar:

On newer Android Studio version the toolbar may be disabled or not fully shown. Make sure the toolbar is activated: Menu **View** -\> **Appearance** -\> **Toolbar**

Additionally when you click the Genymotion icon the first time you have to manually specify the Genymotion installation directory, e.g. by default it should be this path:

```
C:\Program Files\Genymobile\Genymotion

```
> 0 votes

---
Tags: genymotion, android-studio
---


# Question
Title: How to enable silent mode during calendar events?
I'd like to disable all notification sounds whenever there is a current event in Calendar. How can I do this automatically?

# Answer
Llama will let you do this, and it is free (Tasker costs money). It has many of the features as Tasker and Locale, and it can even use Locale plugins. I have grown fond of this app and have set up many automated events.

To do this in Llama, you create two events and two profiles.

### Profiles

1. Create a new profile and name it something like "No Notifications". Uncheck all of the volume options except for `Change notification volume`. Set the volume level to 0.
2. Create a second profile and name it "Normal". Again, uncheck all volume options except for `Change notification volume`. This time, set the volume level to whatever you want, like 5/7.

### Events

1. Create a new event.
2. Under `Actions`, click `Add Condition` and select `Calendar Event`. Use the defaults.
3. Next, click `Add Action`. Select `Profile` and choose your silent profile.
4. Create a second event. This one will be the opposite of your first event, so change the condition of the calendar to "Event finished/Not current event" and set the action profile to your normal profile.

The developer of Llama is still working on it and adding new features, and you can get details here.
> 9 votes

# Answer
Tasker will do this for you. It allows you to automate tasks when certain conditions are met (and is a truly awesome app). Tasker works by monitoring Contexts and then performing Tasks when those contexts match the conditions you set. Contexts and Tasks are grouped together to create Profiles.

You can set up a Tasker Profile with the `Calendar Event` Context (set to whatever conditions meet your needs, e.g. "From my Google Calendar \[Calendar\]," "When event shows me as \[busy\]," and/or "With title \[Title\]") and a Task containing `Silent Mode > On`.

You can find more information about Tasker from the Tasker Homepage and from the Tasker Wiki.
> 4 votes

# Answer
You can try Silent!. It's a very easy app to put your phone insilent mode.

It has a schedule plus a white list (to prevent you from losing important calls). It also has a location option; so it turns your phone to silent mode only if you're in a specified place. It's very simple to use and doesn't need a lot of configurations to work.
> 2 votes

# Answer
I wrote an app, Free Busy Silent Mode which will be useful. Very minimal configuration needed, you just need to pick which calendar account to sync, that's it.
> 0 votes

# Answer
I've defined a custom flow in automate app from llama.

I use location based rules in combination with my calendar like: At work, set ring tone to low level At work and occuring meeting, enable do not disturb profile Etc. Works pretty well!
> -1 votes

# Answer
I also wrote an app Polite which allows you to pick keywords in your calendar events
> -4 votes

---
Tags: notifications, calendar, silent-mode
---


# Question
Title: YouTube Premium: Downloaded videos - Original channel deleted?
I have subscribed for YouTube Premium and have downloaded some tutorial videos I want to keep. However, the channel owner will be deleting his entire channel soon.

Research online is difficult and I'm seeing mixed results, where some say the downloaded videos are kept when this occurs, and others saying they are deleted as well when the channel is deleted.

Will the YouTube app save these videos? If not, how can I hang onto them?

# Answer
> 0 votes
> Closing your YouTube channel will **permanently** delete your content, including videos, comments, messages, playlists, and history.

Also here, support says

> ... If you delete a video, it's **permanently deleted** — you can't recover it through YouTube.

(Emphasis added)

* So, the videos are lost. Even if you download them for off-line viewing, you will not be able to play them because they aren't available any more. For more details on off-line viewing see this answer. It's an old answer but still valid because I see many videos which I bookmarked or downloaded go missing because of channels removed / videos being deleted because of ownership disputes (private videos) in addition to YouTube updates.

Your best bet may be to reach out the content creator and explain the situation to them and explore if it is possible that they upload to a private cloud and give you access (provided this arrangement doesn't run foul of YouTube copyright)

---
Tags: video, downloading, youtube
---


# Question
Title: Opening compressed file attachments from GMail using Total Commander
On a newly configured Android 9 tablet, I installed **Total Commander** which can open most of the known compressed file types (`zip`, `tgz`, etc). I want to open such a compressed attachment directly from the Gmail application without first saving it. However, when I tap to a `zip` attachment in a mail, only a list of other installed applications that can handle the `zip` file are shown, but not Total Commander. How can I add Total Commander to this list?

# Answer
> 3 votes
The Total Commander app can only work with saved ZIP files. This is defined in it's AndroidManifest.xml:

```
<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <data android:mimeType="application/zip" android:scheme="file"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

```

As you can see there is only an entry for the `file` scheme, but no for the `content` scheme.

On Android users can not modify which app can handle what file format. Hence without a change by the author of Total Commands you can't do change this behavior on an unrooted device.

# Answer
> 0 votes
I contacted the developer of this software. They are going to make the necessary modifications in the coming releases. Currently, the first beta version fulfills my need with a limitation ("*only when Total Commander was already running in the background when I click on the downloaded file*"). This limitation will be addressed in "*beta 2*". I will update my answer when this is generally available.

---
Tags: gmail, 9.0-pie
---


# Question
Title: How to block YouTube in general on my daughter's phone while allowing her to follow her favourite YouTubers?
While YouTube Kids app is allowed on my daughter's Android phone, YouTube app is blocked. Recently I realised she still accesses youtube.com through her web browser so she can follow her favourite gaming YouTubers (on YouTube Kids app she can't follow their channels, she can only find their videos one by one through a general search, which is extremely annoying and unsatisfying).

Is there a way to either follow a channel in YouTube kids or to allow the following of a channel in YouTube app or in web youtube.com while blocking YouTube in general?

# Answer
There is a "combined approach" that should work for you, requiring multiple components:

### 1. Block `youtube.com`

As alecxs successfully tested, blocking `youtube.com` will only affect the web browser, but not the YouTube app (and thus neither the YouTube kids app). You could block that in your router, but then it would only apply when your daughter is home and not using mobile data. Do do that directly on-device, you can use e.g. Netguard (yes, the one from F-Droid – the one from Play Store doesn't have that feature as the Play Store policies do not permit, see here).

### 2. Use a child-protection app

While 1. would work, it would not prevent your daughter from simply "quitting Netguard". So you need something that restricts the apps she can use. For this there are plenty of child protection apps¹ – but you should choose wisely: many of those come with a bunch of trackers (Analytics, Ads etc), which is an absolute No-Go in this context. JoLo seems to be a good choice – it got very good reference from MobilSicher.DE, which never just scratches the surface (aka "looks great and has many features") but also checks what apps do "behind your back" (aka tracking, calling home, extracting data…). With such an app, you can establish a "Kiosk": only the parent can change settings – and the child only gets access to what the parent configured.

So combining 1+2, `youtube.com` would not be reachable from the browser, the kids app would still work, and the official YT app could be hidden. On top you get an ad blocker (less traffic, and also protecting your child against "unwanted content"), which you'll certainly welcome.

### 3. Put the YouTube app into "restricted mode"

You could try putting the YT app into restricted mode and see if that works for you, so the girl can "follow her channels" from there. Not sure how well that works, or how you can keep your daughter from changing that setting (probably only by using Google Family Link which from a privacy perspective can **not** be recommended, as all data will be logged with Google (again, found out by MobilSicher.DE).

---

¹ disclosure: link goes to my own Android site
> 1 votes

# Answer
I find Kaspersky Safe Kids to be very good. In the app store. You should be able to block sites under the internet tab.
> 0 votes

---
Tags: youtube
---


# Question
Title: What is the meaning of the SAT/SIG/TTF GPS status info?
When you turn on GPS and some app subscribes for GPS notifications, GPS status info shows up with "SAT", "SIG" and "TTF" info (the last one I know, Time To Fix) but what is the meaning of the first two and what is the meaning of the numbers/symbols (like infinity) shown up next to them?

**Update:** example of the Android GPS status:

```
SAT 0/2 | SIG 19/∞ | TTF 27s

```

The last one means "it took 27s (so far) to acquire GPS signal". I don't know about the first two ones and all those numbers.

# Answer
* Android developers defines the standard parameters GPS Status to be used by apps.
* Apps can obviously provide more than the minimum information, as in the case of GPS Status & Toolbox, whose help page and Android documentation put together help decipher.

+ `SAT 0/2` Number of satellites: GPS in use \[+ GLONASS in use\] / Total visible. So your phone could detect 2 Satellites but none were used to get a fix (indoors or yet to acquire fix?). This likely corresponds to `getMaxSatellites` in the documentation.
    + `SIG 19/∞` Average signal to noise ratio (0-40dB). This corresponds to `getsnr` in the documentation. The second value is the **D**ilution **o**f **P**recision value . You were surely indoors or fix just started, so without fix the error of the position is . Linked wiki says readings having value \>20 should be discarded.
    + `TTF 27s` is `getTimeToFirstFix` meaning the time required to receive the first fix since the most recent restart of the GPS engine.
> 1 votes

---
Tags: gps
---


# Question
Title: What can class 0 message (flash SMS) do to Android devices?
I'm using a Samsung phone and I recently got an anonymous message via Class 0 Message

> **Class 0 Message**
>
> URGENT MATTER ,CONTACT
> ME MY EMAIL NOW
> (email redacted)
>
> From: (phone no. redacted)

I saw a concerning article regarding the issue, it said that it can apparently reboot your phone? Is that true?

What I did was I responded to the email not knowing it might be a scam.

# Answer
> 0 votes
1. Try to install a good antivirus, on Google there are free good antivirus like AVG, Avast and the like. Then, try to full scan on your device looking for some malware and don't forget to full scan the sdcard too.
2. If after made the step 1 succesfully you still are getting that SMS message, so I highly recommend you to **factory reset** your device, which one means that your device *go back to the factory settings* and all the data stored on the device will be deleted except the sdcard data (of course, if you didn't encrypt the sdcard).

**Important:** if you factory reseted your device, pay much attention when installing apps again, check out apps are really *trusted*.

References:

---
Tags: security, sms
---


# Question
Title: How to make Ethernet work on Android over OTG?
I am trying to use an LTE modem connected to an Android 7 device over an OTG cable. The kernel recognizes the device and registers it with `cdc_ether`, but I am unable to use the connection from the device. Is this because it is subsequently mounted as USB storage?

The device does not show up as a device in the Android UI / status bar.

If I disable MTP support, then the device wont register `cdc_ether` at all.

`dmesg`:

```
[10946.408785] usb 1-1.3: new high-speed USB device number 21 using msm_hsusb_host
[10946.525287] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1225
[10946.525306] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10946.525316] usb 1-1.3: Product: ZTE Mobile Broadband
[10946.525325] usb 1-1.3: Manufacturer: ZTE,Incorporated
[10946.525335] usb 1-1.3: SerialNumber: MF8610ZTED000000
[10946.529662] usb-storage 1-1.3:1.0: USB Mass Storage device detected
[10946.532702] scsi host19: usb-storage 1-1.3:1.0
[10947.538579] scsi 19:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
[10952.740595] usb 1-1.3: USB disconnect, device number 21
[10953.087891] usb 1-1.3: new high-speed USB device number 22 using msm_hsusb_host
[10953.232955] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1405
[10953.232969] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10953.232977] usb 1-1.3: Product: ZTE Mobile Broadband
[10953.232984] usb 1-1.3: Manufacturer: ZTE,Incorporated
[10953.232991] usb 1-1.3: SerialNumber: MF8610ZTED000000
[10953.260856] cdc_ether 1-1.3:1.0 usb0: register 'cdc_ether' at usb-msm_hsusb_host-1.3, CDC Ethernet Device, 36:4b:50:b7:ef:da
[10953.262322] usb-storage 1-1.3:1.2: USB Mass Storage device detected
[10953.262652] scsi host20: usb-storage 1-1.3:1.2
[10954.261139] scsi 20:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2

```

`dmesg` with MTP disabled:

```
[10664.987934] usb 1-1.3: new high-speed USB device number 19 using msm_hsusb_host
[10665.105272] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1225
[10665.105291] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10665.105301] usb 1-1.3: Product: ZTE Mobile Broadband
[10665.105310] usb 1-1.3: Manufacturer: ZTE,Incorporated
[10665.105320] usb 1-1.3: SerialNumber: MF8610ZTED000000
[10665.110339] usb-storage 1-1.3:1.0: USB Mass Storage device detected
[10665.111320] scsi host17: usb-storage 1-1.3:1.0
[10666.110748] scsi 17:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
[10671.223090] usb 1-1.3: USB disconnect, device number 19
[10671.407859] msm_otg 78db000.usb: OTG runtime idle
[10671.407887] msm_otg 78db000.usb: OTG runtime suspend

```

`ifconfig`:

```
TB-8504F:/ # ifconfig
wlan0     Link encap:Ethernet  HWaddr 40:a1:08:36:5b:0d
          inet addr:192.168.1.133  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2605:a601:ab2b:9900:b19e:4f2e:5d28:5fa9/64 Scope: Global
          inet6 addr: fe80::42a1:8ff:fe36:5b0d/64 Scope: Link
          inet6 addr: 2605:a601:ab2b:9900:42a1:8ff:fe36:5b0d/64 Scope: Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27906 errors:0 dropped:4 overruns:0 frame:0
          TX packets:17795 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14342222 TX bytes:8697917

dummy0    Link encap:Ethernet  HWaddr c6:b9:c8:82:8f:7e
          inet6 addr: fe80::c4b9:c8ff:fe82:8f7e/64 Scope: Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 TX bytes:210

p2p0      Link encap:Ethernet  HWaddr 42:a1:08:36:5b:0d
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:0

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 TX bytes:0

```

`ip l`:

```
255|TB-8504F:/ # ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/ether c6:b9:c8:82:8f:7e brd ff:ff:ff:ff:ff:ff
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default
    link/sit 0.0.0.0 brd 0.0.0.0
20: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 40:a1:08:36:5b:0d brd ff:ff:ff:ff:ff:ff
21: p2p0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether 42:a1:08:36:5b:0d brd ff:ff:ff:ff:ff:ff
31: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 36:4b:50:b7:ef:da brd ff:ff:ff:ff:ff:ff

```

The device does show up as `usb0` with the MAC address that was listed in `dmesg`.

# Answer
> 11 votes
There is a long list of Ethernet related questions but none has a comprehensive answer covering all aspects. I'm generalizing your question in order to share my knowledge on this.

This is what you need to do in order to make Ethernet work on Android:

* Make sure OTG support is available
* Kernel must be built with Ethernet (and USB Ethernet) support
* Handle USB mode switch and kernel module loading (if applicable)
* Make Android framework do network configuration or do it manually

***Note:*** *Everything described below requires a **rooted device**, or at least the one with unlocked bootloader.
You should be familiar with commandline interface.*

---

## OTG SUPPORT

Your device must be able to operate in USB host mode.`EthernetService` is started only if device supports feature USB host (`android.hardware.usb.host`) or Ethernet (`android.hardware.ethernet`). You may also need to use a powered USB hub if Android's USB power supply is not enough for connected device. Related question:

## KERNEL CONFIGURATION

In order to use Ethernet over USB (adapters or modem-like devices) kernel must be built with `CONFIG_USB_USBNET` and other configurations like `USB_NET_CDCETHER`, `USB_NET_HUAWEI_CDC_NCM`, `USB_NET_CDC_MBIM` etc. depending on the type of connected device and the protocol it talks. Related questions:

## USB MODE SWITCH AND LOADING KERNEL MODULE

Many USB network devices are multi-mode or *flip flop* devices. They appear as USB Mass Storage device (also called ZeroCD mode) when inserted and need to be switched to Ethernet/PPP mode. USB\_ModeSwitch is a Linux tool commonly used for this purpose. See some details here how it works. You need to build this tool for your device, or may download this binary for `aarch64`. Get device database from here.

In order to automatically switch mode whenever the device is connected to Android, we need to listen to kernel USB *uevents*, either through hotplug helper or a userspace daemon (like `udev` on Linux and `ueventd` on Android). Additionally the kernel module can also be loaded/unloaded automatically. I'm defining an `init` service here to achieve this, you can do it manually too.

**Note:** There is an Android app PPP Widget (by the developer of USB\_ModeSwitch, I have no affiliation) which handles mode switching automatically and needs *"no kernel driver modules, the 'driver' implementation is based on the Android USB host API"*. You might be interested in that too.

```
# /system/etc/init/custom.rc

# kernel hotplug or uevent daemon service
service cust.udevd /system/sbin/busybox uevent /system/sbin/udev.sh
    seclabel u:r:magisk:s0
    disabled
    writepid /dev/cpuset/system-background/tasks

# set kernel hotplug helper or start uevent daemon on boot
on property:sys.boot_completed=1
    #write /proc/sys/kernel/hotplug /system/sbin/udev.sh
    start cust.udevd

```

* In case of hotplug you need to define custom SELinux policies to let kernel make changes (see this answer for details).

```
#!/system/bin/sh

# /system/sbin/udev.sh script is executed from kernel hotplug or uevent daemon

# set PATH where you placed binaries
export PATH=/system/bin

# save log
exec >>/dev/udev.log 2>&1

# don't execute multiple instances
exec 200<>/dev/udev.lock
flock 200

VID="12d1"          # USB vendor ID of a Huawei devcie
PID_UMS="1f01"      # product ID in ZeroCD mode
PID_ETH="14db"      # product ID in Ethernet mode
MODULE="cdc_ether"  # kernel module for USB Ethernet
IFACE="usb0"        # Ethernet interface name

matches() {
    [ -e "/sys/$DEVPATH/$1" ] || return 1
    [ "$(cat "/sys/$DEVPATH/$1")" = "$2" ] || return 1
    return 0
}

# check if a new USB device is added or removed
if [ "$SUBSYSTEM" = "usb" ]
then
    # check if a USB device is added, then match VID and PID for mode switching
    # also device must belong to UMS class: https://www.usb.org/defined-class-codes#anchor_BaseClass08h
    if [ "$ACTION" = "add" ] && echo "$PRODUCT" | grep -q "$VID/$PID_UMS/" &&
        matches bInterfaceClass 08 && matches bInterfaceNumber 00
    then
        echo "Switching USB mode..."

        # USB mode switching of flip flop devices (USB modems, routers etc.)
        # usb_modeswitch_dispatcher needs /system/sbin/usb_modeswitch binary and configuration files in /etc
        # so you need to modify the hard-coded paths in source code as per your requirement
        usb_modeswitch_dispatcher --switch-mode "$(basename "$DEVPATH")"
    fi

    # match VID and PID for module loading
    # modprobe should be built with the hard-coded path to where you place modules e.g. /system/lib
    if echo "$PRODUCT" | grep -q "$VID/$PID_ETH/"
    then
        if [ "$ACTION" = "add" ] && ! grep -q "^$MODULE " /proc/modules
        then
            echo "Loading $MODULE module..."
            modprobe "$MODULE"

        elif [ "$ACTION" = "remove" ] && grep -q "^$MODULE " /proc/modules
        then
            echo "Removing $MODULE module..."
            modprobe -r "$MODULE"
        fi
    fi
fi

# on network interface event
if [ "$SUBSYSTEM" = "net" ] && [ "$INTERFACE" = "$IFACE" ]
then
    if [ "$ACTION" = "add" ]
    then
        echo "Starting cust.eth_config service..."
        #start cust.eth_config    # uncomment if you want to do manual network configuration
    fi

    if [ "$ACTION" = "remove" ]
    then
        echo "Stopping cust.eth_config service..."
        #stop cust.eth_config    # uncomment if you want to do manual network configuration
    fi
fi

```

## NETWORK CONFIGURATION

Android framework has a hard-coded name for Ethernet interface (default is `eth0`, `eth1`, ...). Whenever an Ethernet interface appears, its name is matched with the hard-coded value. Renaming interface afterwards doesn't work because only kernel provided interface name is tracked.

So you need to make this naming convention consistent between kernel and AOSP by modifying one of the both (if needed). Kernel provided name can be seen using `ip` tool (as in your case it's `usb0`). Use `dumpsys` or de-compile `/system/framework/framework-res.apk` using apktool to see the AOSP value.

```
~$ dumpsys ethernet
...
  Ethernet interface name filter: eth\d
...

```

As soon as an Ethernet interface appears, Android configures it automatically, `NetworkMonitor` validates the connectivity and `ConnectivityService` turns off WiFi and Mobile Data (if it's ON). Other services and components involved in configuration include `UsbHostManager`, `EthernetTracker`, `EthernetNetworkFactory`, `IpClient.eth0`, `DhcpClient`, `DnsManager` and `Netd`.

EthernetService was added in Android 5. Before that AOSP was patched to make Ethernet work (e.g. see this and this). Still stock Android provides no GUI settings for Ethernet, but some custom ROM developers and OEMs do (e.g. see this). `EthernetManager` class which is used to set and save manual IP configuration (to `/data/misc/ethernet/ipconfig.txt`) is hidden. Default is to use a hard-coded configuration (see using `dumpsys ethernet` under "IP Configurations:") or DHCP provided configuration.

**MANUAL CONFIGURATION**

You might want to do manual network configuration e.g. if:

* Android framework doesn't configure the Ethernet interface (on older devices or due to interface name inconsistency).
* You want to set static IP address or different DNS server.
* You want to use Ethernet along with WiFi or Mobile Data, or want to share internet among any of these.

But in this case Android's Java network stack remains down, so some apps depending on Android APIs may not behave normally. For related details see Connecting to WiFi via ADB Shell.

```
# /system/etc/init/custom.rc

# Ethernet IP configuration service
service cust.eth_config /system/sbin/eth_config.sh
    seclabel u:r:magisk:s0
    disabled
    writepid /dev/cpuset/system-background/tasks

# clear routing and DNS
on property:init.svc.cust.eth_config=stopped
    exec u:r:magisk:s0 -- /system/sbin/eth_config.sh stop

```

```
#!/system/bin/sh

# /system/sbin/eth_config.sh script is executed from eth_config init service

# set PATH where you placed binaries
export PATH=/system/bin

IFACE=usb0                    # Ethernet interface name
DIR=/data/local/tmp/ethernet  # temporary directory
mkdir -p $DIR

# save log
exec >$DIR/eth_config.log 2>&1

if [ "$1" = stop ]
then
    echo "Clearing configuration..."
    ip ru del lookup main
    ip r f table main
    ndc resolver setnetdns 0 '' 0.0.0.0
    exit
fi

# destroy set network if any
ndc network default set 0

# turn WiFi and Mobile Data off
svc wifi disable
svc data disable

# set interfaces up
ip link set dev lo up
ip link set dev $IFACE up

# Android doesn't use main table by default
ip rule add lookup main

# set IP, route and DNS manually here
# or add any other IP/routing configuration
# or run a minimal DHCP client as follows

# create 'udhcpc' script
<<-'SCRIPT' cat >$DIR/udhcpc_default.script
#!/system/bin/sh

case $1 in
    bound|renew)
        echo "Setting IP address, gateway route and DNS for $interface..."
        ip address f dev $interface
        ip route f table main
        ip address add $ip/$mask dev $interface
        ip route add default via $router dev $interface
        ndc resolver setnetdns 0 '' $dns
    ;;
    *)
        echo "Ignoring $1"
    ;;
esac
SCRIPT

# start DHCP client to obtain IP from server
chmod 0755 $DIR/udhcpc_default.script
exec busybox udhcpc -v -f -i $IFACE -s $DIR/udhcpc_default.script

```

---

Do not forget to set proper permissions on `.rc` file and shell scripts. Once setup, Ethernet works as soon as you connect USB adapter.

---
Tags: networking, usb-connection-mode, kernel, usb-on-the-go, usb-drivers
---


# Question
Title: How to remove file from "Recent Files" on android 10?
In the Files app of stock Android 10 (Pixel 2 XL), there is a "Recent" category. For privacy reasons, I wanted to delete a file in this category. As far as I have searched for this file by filename, and it doesn't seem to exist on my system, but still appears in the list. I've tried clearing the cache/storage for the "Files" app, but it still remains. How can I remove this item from the recent list, clear the entire list, or get the file's folder location so I can delete the real file?

# Answer
**Files** app (`com.android.documentsui`) in stock Android (not that modified by OEMs or custom ROM developers) shows recently modified (within 45 days) image and video files (64 each at maximum) from whole shared external storage (`/sdcard` and external SD card) under **Recent** category. A multi-purpose list of all files is built and managed by **Media Provider**. See how files are categorized based on their extensions. Apps' private `files` directories aren't scanned by `MediaScanner` but `media` directories are (see where Android apps store data). Similarly directories starting with a dot (`.`) or those having a `.nomedia` file and their sub-directories aren't scanned.

So any existing files which are not excluded from scanning cannot be removed from **Recent** category. You may possibly disable the app to hide it from launcher. But the indexed files appear in any app which relies on **Media Provider**, including **MTP**. However if a non-existent file is wrongly indexed in database (`/data/data/com.android.providers.media/databases/external.db`) you can trigger a media scan or delete data of **Media Storage** app. See this answer for more details.
> 2 votes

---
Tags: privacy, files
---


title: Prevent ISP DNS Hijacking

text:
# Question
Title: Prevent ISP DNS Hijacking
I live in a country where some sites such as Reddit are blocked. On wifi I can change my DNS to Cloudflare (1.1.1.1) and be able to access those sites, but on mobile network my ISP doesn't seem to allow me to do so. All the solutions I see are for non-rooted devices and only affect wifi networks. My device happens to be rooted Android 10, is there anything I can do to be able to access Reddit without wifi?

Thank you for your time.

# Answer
DNS is not the only way to block sites. There is also port blocking, IP address blocking (though not very feasible and effective in the age of cloud as @Robert said) and protocol blocking (with DPI). See a brief description of censorship techniques here. But if you are sure it's only the DNS your ISP is intercepting, you can use encrypted DNS:
> 1 votes

---
Tags: mobile-network
---


# Question
Title: Switch to a new Gmail email address without losing account data?
Suppose I have some cheesy gmail address that is inappropriate for putting on resumes and such. What is the easiest way to change it, while retaining my documents in google docs, as well as photos, google music purchases and playlists, and so on?

Does Google have any provision for this, or are you supposed to start completely from scratch and painfully transfer all the data manually (as well as cancel music subscriptions and restart, etc)?

# Answer
> 1 votes

---
Tags: gmail, google
---


# Question
Title: What do I type in PATH variable for ADB server to start from CMD?
I am following a Wiki on how to install and set up Android SDK and I am stuck at a step where I am supposed to test if the ADB server works by using the command `adb start-server`. Is this command correct?

The Wiki can be found here: http://wiki.rootzwiki.com/Android\_SDK

I have done what it says in step 5. But it doesn't seem to work. I get the standard message in CMD that the command is not an internal, external command or a program.

> Add the following to the end of the Variable value field:
>
> Windows XP: ;C:\Program Files\Android\android-sdk\tools\\;C:\Program Files\Android\android-sdk\platform-tools\
>
> Windows Vista and later: Replace YOURUSERNAME in the following lines with your Windows username
>
> 32-Bit: ;C:\Program Files\Android\android-sdk\tools\\;C:\Program Files\Android\android-sdk\platform-tools\
>
> 64-Bit: ;C:\Users\YOURUSERNAME\AppData\Local\Android\android-sdk\tools\\;C:\Users\YOURUSERNAME\AppData\Local\Android\android-sdk\platform-tools\
>
> Click OK, OK, and OK to close the Advanced settings.

So what gives? The CMD prompt is at `C:\Users\myusername` when I run the command. Maybe I need to CD to the android-sdk folder first before running the command? But then what use is it to add the path in the PATH variable?...

# Answer
I have solved my own problem. Those search paths are all messed up!

I checked the installation path and it's installed in `C:\Program Files (x86)\Android` even though I do have a 64-bit version of Windows. But nevertheless, this is the default installation location.

So I updated the PATH variable with following line.

`C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\`

And now I can start ADB server from CMD regardless of where the prompt is at.

I have no clue why they are referring to `AppData\Local\` folder in the guide for the 64-bit systems. That makes no sense at all. If anywhere, the installation location should be in "Program Files" folder for a 64-bit system. They actually put this in for the 32-bit systems... like I said, it's all messed up.

I should point out that `adb.exe` has been moved from `C:\Program Files (x86)\Android\android-sdk\tools\` to the new location `C:\Program Files (x86)\Android\android-sdk\platform-tools\`. This has been done in later versions of Android SDK.

So if you are reading this in year 2013 then you can probably just get the latest SDK and use only this last search path. You don't need them both. At least not for ADB and Fastboot. If you're a developer then you maybe need to access tools from both directories, although if you're a dev then you probably won't need to read this at all.

**How to edit a system variable**

Here's a short how-to for the newbies. What you need is the Environment Variables dialog.

1. Click Start (Orb) menu button.
2. Right click on Computer icon.
3. Click on Properties. This will bring up System window in Control Panel.
4. Click on Advanced System Settings on the left. This will bring up the System Properties window with Advanced tab selected.
5. Click on Environment Variables button on the bottom of the dialog. This brings up the Environment Variables dialog.
6. In the System Variables section, scroll down till you see Path.
7. Click on Path to select it, then the Edit button. This will bring up the Edit System Variable dialog.
8. While the Variable value field is selected, press the End key on your keyboard to go to the right end of the line, or use the arrow keys to move the marker to the end.
9. Type in `;C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\` and click OK.
10. Click OK again, then OK once more to save and exit out of the dialogs.

That's it! You can now start any Android SDK tool, e.g. ADB or Fastboot, regardless of what your current directory is in CMD. For good measure here's what the dialog looks like. This is where you edit the Path variable.
> 18 votes

# Answer
I had platform-tools installed right from Android studio and that is where they were placed:

`C:\Users\{USERNAME}\AppData\Local\Android\sdk\platform-tools`

Then this is the directory needed for the `PATH` variable. AppData is usually a hidden folder and you will not see it in your directory unless you enable showing hidden directories.
> 4 votes

# Answer
instead of looking for a default location simply look for `platform-tools\` and `android-sdk`

or just `sdk`

those are the paths you need to add to the variable list
> 0 votes

# Answer
Just add this to System Variables "Path":

> C:\Program Files (x86)\YOUR\_ADT\_FOLDER\sdk\platform-tools\
> 0 votes

# Answer
Steps to set the path to the platform tools:

Step1: Open Android Studio, go to Tools/SDK manager and get the Android SDK path which is:

```
C:\Users\username\AppData\Local\Android\sdk

```

Step2: Go to Control Panel/System/ Security/System and click on Advanced System Settings. Click on Environmental Variables. Click on PATH. Click Edit and append the following:

```
C:\Users\username\AppData\Local\Android\Sdk\platform-tools\;C:\Users\username\AppData\Local\Android\Sdk\tools\

```

Click Ok, OK.

Step3: To check if the paths are available, open the Command Prompt, type `adb`. Press Enter.

You should see a response that the platform-tools folder is in place.
> 0 votes

---
Tags: adb, android-sdk
---


# Question
Title: How to export/convert WhatsApp chat to PDF/Excel/HTML?
How do I convert/export WhatsApp chat (by chat person/group) to PDF/Excel/ HTML so that I can open it in a computer? I've tried several methods:

1. Manual way using screenshot and stitching it using Android app. To be honest, I really don't want using this method. It's the most cumbersome way.
2. The preferred way, using an app called Backup Text for Whats. This app is the one that has the most feature that I know about. It can filter to backup WhatsApp chat based on person/group chat, and can even convert all your chat to the desired format. It can convert to HTML (which can then be converted to PDF including the images downloaded), Excel (and download images separately), or even text. It's most versatile app that I know about when it comes to backing up whatsapp messages. You needed to install Tri-Crypt first to use it. My Android is 4.2, but now with the current WhatsApp version, it is not functioning. I don't know why.

Does anyone know any other method? Has anybody tried Backup Text for Whats app and why is it not functioning anymore?

Note: whatever the method, it should maintain how it is displayed in WhatsApp, if possible.

# Answer
> 7 votes
Fortunately for you, WhatsApp actually has a built-in option for this. No need for third party apps!

WhatsApp has an option called "**email chat"** which converts your chat into a word document containing all conversation with a specific person or group.

Simply open WhatsApp, press on the conversation you'd like to backup. Open the menu on top right, press on "more" -\>" email chat" it will ask you if you want to include your media or not. It will then bring you to your email app where you can select a recipient. You can choose yourself as the receiver. After you receive the email, You'll be able to open the conversation as a word document.

Depending on the app you use to view word documents, you should have an option to save as PDF.

This is how it will be displayed in your word document:

> 2/2/18, 03:55 - smith: *text*
>
> 2/2/18, 03:55 - jack: *text*
>
> 2/2/18, 03:56 - Smith: *text*

Emojis will be included in the word document. Media and voice notes will be sent in a separate file.

# Answer
> 4 votes
Not the Android stuff, but I wrote an extension for the Chrome browser that helps you save messages to your PC from WhatsApp Web.

If you check the ‘try grabbing media’ checkbox it will also fetch all the media that were ever sent in a chat.

It will create a ZIP archive with all your messages and media, easy to open and read in your browser. It will have the same look as WhatsApp Web.

Here’s the link to the extension: Backup WhatsApp Chats Chrome Store If it doesn't work, you can try a developer version Backup WhatsApp Chats Dev version

# Answer
> 0 votes
Dude, I was looking for answer *similar* to your question, and what I just figured out, that works at least for me, is is via directly selecting the text in the chat I want to export, and then click on the **"print"** option.

You know... like printing to a pdf file.

It worked just fine to export the ***formatted text*** (that was what I was looking for specifically)

Cheers

# Answer
> 0 votes
Not sure about Excel, but WhatsApp allows you to export an individual or group chat to a text file. You just need to open a conversation that you'd like to export and tap More \> Export Chat. Then, you can open the text file with MS Word and save it as PDF or html. Please note that formatting will get little messed up.

If you'd like to directly export WhatsApp conversations to a PDF or HTML, you will need a a third party desktop application like the one mentioned in this guide. Your chats will be displayed in a similar way they appear on the WhatsApp messenger app. I personally tried it to document and print my WhatsApp conversations for some legal problem. This is how it works:

* Install the app on your Windows computer on Mac.
* Enable the USB debugging mode on the Android device.
* Backup all the chats to your phone's storage or SD card.
* Connect your phone to your computer and let the load your WhatsApp conversation.
* Right-click on the conversation you'd wish to export and select "Export messages to file."

**Note**: I have no affiliation with the linked product. The software is paid. With the free version, you can only export a couple of messages per conversation/contact. You need to put the software to export more messages.

# Answer
> 0 votes
You can Export the Conversation to .txt file from within WhatsApp.

And then this web app can load the conversation file and "re-generate" the look and feel to rebuild the conversation, and even replay it back.

**Chat Viewer for Whatsapp:** https://overbits.herokuapp.com/chatviewer/

You can even tweak the look and feel if you know how to Right Click -\> Inspect Element and play with the CSS values in your browser.

---
Tags: whatsapp-messenger
---


title: How do I open a tg:// URL on Android?

text:
# Question
Title: How do I open a tg:// URL on Android?
I have a `tg://` URL like `tg://login?token=BTGjK95sf6QLckQBAZPtH_gSLOcpQoasQLCea18O9A` that I want to open in the Android Telegram app.

If I paste it into Chrome address bar then it searches for the URL, rather than redirecting to the app like on a PC.

How do I open this URL?

# Answer
I found a work-around using the Telegram app and the data encoded as a QR code: open Telegram app → tap the Hamburger icon → Settings → Devices → Scan QR Code.
> 0 votes

---
Tags: telegram, url
---


title: Rearrange items in a Google Keep list

text:
# Question
Title: Rearrange items in a Google Keep list
I maintain a master to-do list and a master "topics" list. Often an older list item becomes more urgent and I want to move it near the top of the list (so I can control which undone items show up in my Android widget)

Is that possible?

# Answer
> 3 votes
There is a small ribbon next to the check box. You can drag and move list entries with that.

# Answer
> 1 votes
In order to get the drag to work, I had to first click "+ List Item". This made the ribbons "dragable"for me.

# Answer
> 1 votes
The + doesn't have a "List Item" option. The last update to Google Keep broke the ability to move list items. Workaround: Highlight the list item, cut and paste in new spot.

# Answer
> 0 votes
When using my phone, I finally figured it out after trying just about everything. Make a very slight sweeping/swiping motion over the dots to the left of the item will stick it to your thumb right away so you can drop it elsewhere. Note, your thumb needs to be in the swiping motion before touching the icon... touching the icon and then sweeping will not work. Just touch the icon midway during the swiping. Just do the slightest little sweep or swipe, no clicking or pressing and holding worked for me. Works easily now 100% of the time with this itty bitty sweep on the icon, at least for me. Good luck, hopefully they will improve this.

# Answer
> 0 votes
Sweep the dots to the right first, so it is indented. Then move it up to wherever you want.

---
Tags: google-keep
---


title: app for typing with your PC keyboard

text:
# Question
Title: app for typing with your PC keyboard
Is there a app or something for android that let's you type through your PC on your device? Pecking on your small android screen seems so painful, I'd really prefer if a hostspot or wifi connected existed that let you type from your computer's keyboard.

# Answer
I use a bluetooth keyboard but you can connect any USB keyboard to your phone or tablet with the correct adapter and no app is required.
> 1 votes

---
Tags: applications
---


# Question
Title: With headphones plugged in, set incoming call ringtone to play through speaker
I use my phone to play music at work. When I wander away from my desk, I often leave my headphones plugged in. If someone calls my phone when the headphones are plugged in, the phone rings, but only through the headphones and I end up missing the call. What I would like is to be able to set different audio to play through different outputs: my audio player through my headphones and my ringtone through my speaker. I've looked through the sound settings and haven't found much that seems incredibly useful.

Are there any apps that currently support doing this? Does the android api even support multiple audio output targets?

Phone info:

* HTC Evo 4G (Rooted)
* FreshEvo 3.5.1 (based on android 2.2)

# Answer
I was going to suggest CyanogenMod also, if that doesn't work or isn't something you are interested in, you should try Tasker

http://tasker.dinglisch.net/

https://market.android.com/details?id=net.dinglisch.android.taskerm

It pretty much can do just about anything you can think of without quite as much work as writing an app yourself.
> 0 votes

# Answer
I had a similar issue at work. What i ended up doing was turning the "Vibrate" setting on in `Settings/Sounds`. My phone was bugging everyone else in the office before (which is why i started using headphones) but with that setting, the phone vibrates on receiving a call as well as ringing in the headphones. I didn't have to disturb anyone, and i still got calls when i forgot about my headphones!

Don't know if this would be practical for you, but it worked nicely for me, so i thought i'd share!
> 1 votes

# Answer
CM had indeed a `persist.sys.ring-speaker` property to do exactly this. I don't believe it was ever available outside of the android 2.3 tree though (and as of 2020, developers don't even seem to realize there is a need for "choice").

Then, while I think a "native routing selection setting" (like some vendors already independently offer) is the best solution, workarounds should still be doable. A phone dialer automatically switching/mirroring audio for you would be my second best idea, but unfortunately I'm not aware of any having such feature.

For this reason, the only other possible option is some kind of notification listener, re-routing the sound, or playing a new separate tone of its own, when a call approaches. In this thread "Shouter" was recommended, and I have to say it works quite neatly (a tasker recipe can also be found there, for more advanced users).

Take note, not all devices may like playing more than a single audio stream at once.
> 0 votes

---
Tags: 2.2-froyo, htc-evo, audio, headphones, ringtone
---


# Question
Title: Access the call-log to complement what has been banned by policy
I used to use Appliqato's Call Recorder.

A few days ago Google Play's policy changed so no call-recording application could access the call-log information. This means now the calls are like "anonymous" and you "have" to listen to them to identify them.

This represents a handicap: If you get a bunch of calls (say 50 per day) and you leave the batch for one week, you can face to have to "manually identify" 500 calls easily which is absolutely a no-brainer.

Instead, the "normal" call-log from the phone has the call numbers stored.

# Question

Is there any way I can download the call log information in a machine-processable way?

I'd do a script to post-process call logs and match the date and time to identify the numbers later.

# Answer
If you used a free edition (not the Pro), you can get an older version from ApkMirror.

Older versions of the Pro edition can also be found online, but since distributing it is not possible legally, you will only find it on dodgy websites where you must be very careful in order to avoid malware.
> 1 votes

# Answer
# Exports phone logs to an XML file

**SMS Backup & Restore** (exports phone log and text messages)
https://play.google.com/store/apps/details?id=com.riteshsahu.SMSBackupRestore

(a) Phone Number
(b) Duration of the call in seconds
(c) date: (Unix timestamp with 3 extra digits)
(d) Type of Call (incoming=1 / outgoing=2)
(e) Presentation of the call
(f) Date & Time of the call (human readable)
(g) Contact Name

The call date/time of the file is when the call ended. The call log has the date/time that the call began and the duration of the call. **From this we can do a filename to call log match-up.**

Appliqato's Call Recorder uses AMR files by default.

Here is how you get the duration of the AMR file (as a double check).
https://stackoverflow.com/questions/17447508/android-get-duration-of-amr-audio-file-programmatically

# Accessibility App Connectors allow access to phone call information
> 1 votes

---
Tags: google-play-store, contacts, logging, call-history, call-recording
---


# Question
Title: Can I remove the default clock without rooting my phone?
I have a modern Pixel Android phone on the most up to date version of Android.

I'd like to not show the time on the homescreen and the topbar.

I've seen many solutions that include rooting the phone.

Is it possible to get rid of these two clocks without rooting the device?

# Answer
> 1 votes
You can use adb to do this without root (But you need a PC). First download Android platform tools from https://developer.android.com/studio/releases/platform-tools now unzip them in a folder in your PC.

Go to that folder and open Command Prompt. Now in your phone, find the build number and tap it 7-8 times to enable Developer Options. Now open Developer Options and enable USB debugging. Then plug your phone with your PC. Confirm the box.

Now first type `adb devices`. Then enter the command `adb shell` to start adb shell. Now type the command `pm list packages | grep "clock"` or if you have problem with grep then use `pm list packages | find "clock"`. Find the package name of default clock. Now use `pm uninstall -k --user 0 package-name`. If you see Success message, then clock app will be removed.

---
Tags: google, clock, google-pixel, date-and-time
---


# Question
Title: Gmail App is not differentiating Read and UnRead Emails in Vivo Android Mobile
In Android Gmail App, It has unread emails with bold and read emails without bold to identify which emails are unread. But in my Vivo V7 Android Mobile I couldn't able to see that differentiations and all the emails are showing without bold and hence this app is not so helpful for me.

Below are the steps I tried,

1. Cleared Cache of App.
2. Signed out and Signed in
3. Rebooting mobile
4. Tried al the settings

Nothing helped me. Please give a solution for this issue,

# Answer
As mentioned by Robert and Andrew in comments, this issue was due to System Font, which was a custom one and not a default one. Once I changed to Default Font, I could able to see gmail is showing as normal fonts.
> 0 votes

---
Tags: gmail
---


# Question
Title: How an Android app can restrict all my accounts on my phone?
I'm using multiple accounts for an android app in my phone. today the app blocked all my accounts because it's not allowed to have more than one . I've had android 10 on my phone . the question is:

1. what type of data an app knows about my phone?
2. how they know I'm using multiple accounts?
3. What's the solution for this? how can i remain hidden with multiple accounts on one mobile phone?

App link :Slowly

# Answer
> 0 votes
# General way to identify you or your device

What information the app (and therefore the operator of the app) has about your device depends on the permissions the app have and the Android version installed on your devices (Google makes it harder to gain access to phone identifiers with ever release).

The most important ways to identify your device are:

1. Telephone number (depends on the SIM card, requires READ\_PHONE\_STATE permission)
2. IMEI (hard coded in your phone, requires READ\_PHONE\_STATE permission)
3. Android-ID (a random number generated on first start of the device, factory-reset clears it. Since Android 8 every app sees a different but static Android-ID)
4. Google Advertising ID (randomly generated, can be re-generated in Google settings)
5. List of active accounts on your device (requires GET\_ACCOUNTS permission)

Of course for online-services there exists various indicators that may indicate that only one device is used such as the IP address you use (especially relevant if IPv6 is used), and of course your usage. If two accounts are used from the same IP address but are never online at the same time this another good indicator.

Some those identifiers may change if you use a second user profile on your device, others will stay the same. In conclusion the only way to totally avoid getting detected as one user is to use two devices that use different accounts for every stored account (especially the Google account).

# Slowly app

The slowly app has the following permissions:

```
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.CAMERA
android.permission.INTERNET
android.permission.READ_APP_BADGE
android.permission.READ_EXTERNAL_STORAGE
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.RECORD_AUDIO
android.permission.USE_FINGERPRINT
android.permission.VIBRATE
android.permission.WAKE_LOCK
android.permission.WRITE_EXTERNAL_STORAGE
com.anddoes.launcher.permission.UPDATE_COUNT
com.android.vending.BILLING
com.android.vending.CHECK_LICENSE
com.google.android.c2dm.permission.RECEIVE
com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE
com.htc.launcher.permission.READ_SETTINGS
com.htc.launcher.permission.UPDATE_SHORTCUT
com.huawei.android.launcher.permission.CHANGE_BADGE
com.huawei.android.launcher.permission.READ_SETTINGS
com.huawei.android.launcher.permission.WRITE_SETTINGS
com.majeur.launcher.permission.UPDATE_BADGE
com.oppo.launcher.permission.READ_SETTINGS
com.oppo.launcher.permission.WRITE_SETTINGS
com.sec.android.provider.badge.permission.READ
com.sec.android.provider.badge.permission.WRITE
com.sonyericsson.home.permission.BROADCAST_BADGE
com.sonymobile.home.permission.PROVIDER_INSERT_BADGE
me.everything.badger.permission.BADGE_COUNT_READ
me.everything.badger.permission.BADGE_COUNT_WRITE

```

As you can see none of the afore-mentioned permissions are present. But I am not very familiar with some of the permissions. Thinking of how I would implement suc a check I see two additional possibilities:

The permissions `com.android.vending.*` allow to talk to the Play Services and identify your "license" - mainly this is for checking on in-app purchases, but even free apps without in-app purchases are managed by the Google Play Store and therefore get a license. may be this allows to identify if an the app is installed on two devices with the same Google account?

Additionally `WRITE_EXTERNAL_STORAGE` can be used by the app to write an identifier somewehere on your internal storage. This file can even survive if you execute delete Sloly's app storage and cache and therefore can be used as permanent identifier of your device.

---
Tags: privacy
---


# Question
Title: How to prevent Wifi auto-connect without forgetting that connection
In my workplace, we have both "real" and "test" wifi connection points. All are password-protected, with passwords that are difficult to remember. Normally I want to be connected to a real wifi, but from time to time, my work requires that I connect to a specific test wifi. I would like to retain the connection information for these test wifi services, including the password, but not auto-connect to them.

With my tablet (running Windows), for each connection listed, there is a checkbox for "auto-connect". I can uncheck that box and retain the information on how to connect, but connect only when I do so manually.

Is there anything equivalent on Android, or is my only choice to write down those passwords, and tell Android to forget the test connections after each time I use them?

Thank you for your attention.

# Answer
Looks like (if its still relevant) this may be a thing of the past, as manufacturers are implementing this feature in newer android versions a well as builds i.e there is an option to **disable wi-fi auto-connect**.

AFAIK, this feature comes 'out of box' for Xiaomi (MIUI based) and Samsung Galaxy phones, you can disable wi-fi auto-connection with just a few taps:

* If have a MIUI based device, navigate to WLAN settings → Tap the right arrow besides the wi-fi SSID name then toggle to disable the 'Auto connect' feature:

> * If you are on Samsung device you can control the “Auto reconnect” feature from
>
> wi-fi ssid name (long tap) → Manager Network Settings → Uncheck “Auto reconnect”.

<sup>(Image credits)</sup>

---

Nevertheless if you can't find this feature on your device, there is another workaround:

You have to install, an additional third-party application called WiFi Prioritizer (which seems to be working after trying dozens of related ones. *Note I am not affiliated with this app or developer*)

> WiFi Prioritizer aims to solve a simple problem by attempting to automatically reconnect to a higher priority wireless network when it comes in range while still being connected to a lower priority wireless network.

**Workthrough**

* After installation open the WiFi Prioritizer app, toggle the Enable Scheduled Job switch to On.
* The Access Point list contains all your saved Wi-Fi networks. Here, you'd have to set the priority of the networks. Start off by dragging your preferred connections to the top. From the problem onset you may want to leave out **"test"** connection.
* You may optionally set signal threshold (in case you have multiple defined APs apart from the test. As long as the job is running you are assured the device wont connect to test AP as its not included in AP priorities.

You may also want to take a look at WiFi Manager (again I am not affiliated with it).

Hope this helps

*Credits*

How to Prioritize Wi-Fi Networks on Your Android Phone
> 4 votes

# Answer
I have a Sony Xperia Z2 and this auto-connect to WiFi has been driving me up the wall for months, and the Z2 doesn't seem to have the setting to switch off auto-reconnect, but tonight I finally found out how to stop it:

**The answer:**

Go to Settings, tap WiFi. It will turn itself on, ignore that for now.

Tap the three dots menu top right, and tap "Saved Networks". This can only be done while wifi is on, it's greyed out otherwise.

For each saved network, long-tap it, a pop-up appears with an "auto connect" tickbox, pre-ticked. Untick the box. This should put an end to random wifi reconnects.

**Background:**

On the Z2 I have a VoIP app that connects to an Asterisk PBX inside a company VPN, via which I can receive Support calls. I also have 20 gig of 4G data a month, so no need to try and economise via wifi. So at home I'd turn wifi off from the top bar, connect to the VPN over 4G, and fire up my VoIP client to receive calls. And then after some random period of time the phone would decide to auto re-connect to wifi, breaking the VPN connection and disconnecting the VoIP. However the wifi signal in my workspace is very weak (router on ground floor, workspace in the attic - main PCs are on a wired network), so as soon as it had connected it'd drop off again. Plus all the random turning back on after I'd turned it off would waste battery power - if I turn a thing off I expect it to stay off. I came close to throwing the phone a few times.

I've googled this issue many times but all the threads on various forums referred to settings and apps that do not exist on my phone. Found the solution I've detailed above by chance this evening while out of desperation trying every conceivable option and tap-type. Given the number of frustrated users I saw on various threads, I hope this answer is of use to other people in the future.
> 2 votes

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


# Question
Title: I cant delete a google drive archive (pd: sorry for my bad english)
Ok so long time ago my google drive account was like ban so of course i cant use it but for some reason when i enter the google drive mobile app its appears some wierd photos i tried to delete but obviouly my account was banned so it pop up a message saying unable to open the menu of the archive

If there another way to delete this fotos

# Answer
Here's what you can try to delete photos from "Album Archive" (if that's the issue)

1. In Auto-backup select the folder holding a picture or pictures
2. Click the 3 dot option: Manage in Google Photos
3. select the photos followed by the 3 dot option to Move to trash
4. When empty refresh the page by hitting F5 on Windows or the refresh circular arrow to the left of the URL
5. Wait until the page is fully reloaded

If the deleted photos reappear, you can go to https://photos.google.com/ and click on the 3 bar menu: Help and feedback: Send feedback, and copy/paste the following sentence:-

I provide consent for you to look into my account in order investigate issue #b\_120099634 followed by the folder name causing problems and any other information you determine is important.
> 0 votes

---
Tags: google-account, google-drive
---


# Question
Title: How do I sort whatsapp media files according to sender
Is it possible to sort out whatsapp media files with the name of the sender?

# Answer
By copying the photos to your computer you can sort it by different exif details like camera taken, date, location etc. So try cleaning and organizing by that. you can copy back the needed photos to your mobile later. Hope it helps.

But as far as I know, there'sno such option.
> 1 votes

---
Tags: media-files
---


# Question
Title: How do I prevent GPS location being enabled automatically on Android 8.0.0
The GPS is sporadically enabled on my phone without my consent or even a notification. I have to keep an eye on it and turn it off when I notice it's on. Is there a "global" setting I can use to prevent this or at least ensure I get a notification when it's about to be enabled?

# Answer
as suggested in comment seems to come close to what OP wants.

Many automation apps are available. I prefer using MacroDroid , since it is free (upto 5 macros) and easy to learn. To understand how MacroDroid works and required **settings**, my answer here

---

Your macro would look like this

* **Macro : GPS on Alert** (name of macro )

**Trigger**: *GPS enabled/disabled* →\*GPS enabled *

**Actions**:

* *Display Notification* → Enter the desired text. I suggest you choose hour, minute and second to pinpoint the exact time
* *Speak text* \- enter the desired text

**Constraints**: None ( Macro runs always )

This will not tell you when it is *about* to be enabled but tells you *after* it is enabled.

Once you have the time stamp, use an app or other methods suggested in & to try and pinpoint the app causing it (read their tag wiki's by clicking on learn more). Disable or uninstall such app(s)
> 0 votes

---
Tags: gps, gps-tracking
---


# Question
Title: How to long-press in android 4.1.2 and 4.2.2 using ADB?
I discovered that the command below does not execute in android 4.1.2 and 4.2.2 but it executes from android 4.4+.

```
input touchscreen swipe x1 y1 x2 y2 [duration]

```

I am using my old android 4.1.2 and 4.2.2 in kiosk mode and I need my script to long-press on some areas but I can't get the above command to do the trick for me but it does work perfectly in my other android 4.4.2 and 4.4.4? My question is, what files should I copy from my android 4.4.2 to my android 4.2.2 to get the above command to work in android 4.2.2 ?? Or is there any other means of doing it? NOTE: I don't need `sendevent` method please, I only need `input touchscreen swipe` method. Thanks

# Answer
> -2 votes
Does the --longpress modifier works?

```
input keyevent --longpress ##

```

---
Tags: adb, shell, scripts, input-methods
---


# Question
Title: Disable priority inbox on Android Gmail application?
I suspect that there isn't a way to do this, but just in case...

Is there any way to disable Priority Inbox on the Android Gmail application?

I don't use this feature and can disable it in the web based full desktop client(\*), but I can't disable this on either the Android Gmail application or the mobile web Gmail client, it's very annoying.

* Gmail version v2.3.4.2
* Samsung/Google Nexus S
* UK / Three network

Not for the first time I find myself wanting "Minimalist for Gmail™" for Android!

*edit* * after further investigation it would appear that my desktop inbox is set to classic, but I can still see priority inbox esque things in my messages like "Important mainly because of the words in the message." in the details of my messages. It may be that my Priority Inbox is only half-turned off, if that is even possible?

I have removed a (second) work Google Apps account so I only have my personal email account on my phone and I have disabled IMAP on my Gmail account.

# Answer
> 7 votes
Menu button -\> More -\> Settings -\> Priority Inbox. I have it enabled on the web and that option unchecked to disable it in the app. Latest Gmail v2.3.4.1.

# Answer
> 2 votes
I found that by opening the local Gmail app and navigating *MENU \> MORE \> SETTINGS \> USERNAME@GMAIL.COM \>* (Uncheck "Make Priority Inbox your default inbox...") and click on "Sync inboxes and labels" and change the option for "Priority Inbox" to "Sync None".

This seems to work for me. However, I just tested it once and I didn't get the Priority notification so I hope this will help you.

# Answer
> 2 votes
All you need to do is...

* Open the gmail app
* Go to *Settings*
* If you have multiple accounts, click the specific account for which you want change it
* Make sure the *Priority inbox* check box is unchecked.
* In the same page under the *data usage* look for a 3rd option *Manage labels* and click that
* Click the 2nd option you ll find " Priority Inbox" option click on that and uncheck all the options there.... Now all the features under the priority inbox option will be disabled.....

This absolutely worked for me.....

# Answer
> 1 votes
There is no checkbox for `Priority Inbox` anymore.

All those answers are not valid for version `2020.05.17...Release`. *

---

Go to

* Menu
* Settings
* Inbox \> Inbox type
* Select "Ordered Inbox" (German: "Sortierter Eingang" \**)

---

Against my understanding, **this brings you back the full inbox**.

\*) Maybe sooner. Please edit if you know.

\**) Please edit the English translation if it isn't correct, else remove the comment.

---
Tags: email, gmail
---


# Question
Title: Some groups are not visible in my WhatsApp
I am not able to see some of the groups for which I am a member. My name appears in the group admin's phone. But he is also not able to remove my name and add it again. Other group members cannot see my name in the group member list. So I don't know exactly what the real problem is. I have uninstalled WhatsApp and re-installed it, but the problem remains the same. (Still I cannot see some of the groups in my phone). Can you please find some way to come out of this?

# Answer
Try the following steps:

* Make sure that admin user have your phone number in your address book.
* Ensure that admin user is using WhatsApp Messenger.
* Make sure that admin user have the latest version of WhatsApp.
* In admin users Android phone book, make sure that all contact accounts (i.e. SIM, Google, Phone) are "visible" or "viewable".
* In your Android phone book, ensure that all contact groups (i.e. Friends, Family) are "visible" or "viewable".
* You can make your contacts "not visible" and then "visible" to force a refresh. After doing this launch WhatsApp \> \> Menu Button \> Refresh.
* Alternatively, you can use all your contacts, not just the "visible" ones. To do this go to Menu Button \> Settings \> Contacts \> Show all contacts.
> 2 votes

# Answer
Ask your group admin to create a new group and add you. This is the only solution. As I did with one of my friends who had the same problem. I am the admin of the group and he is visible to me and them. But when I try to delete him it is not possible. So we created a new group and added him again.
> 0 votes

# Answer
This is a version problem. It appears later versions are not compatible with lower version. Latest version also asks for end to end code or QR
> 0 votes

---
Tags: whatsapp-messenger, contact-groups
---


title: What is "rmnet_gsi" USB function?

text:
# Question
Title: What is "rmnet_gsi" USB function?
I was looking through the `init` files from my boot image and noticed a USB flag labelled `rmnet_gsi` here.

What does this setting do?

Example source:

```
on property:sys.usb.config=diag,serial_cdev,rmnet_gsi,adb && property:sys.usb.configfs=1
    start adbd

```

# Answer
> 1 votes
In addition to Android's generic USB functions (like `adb`, `mtp`, `rndis`), `rmnet_gsi` is a hardware specific USB function which exposes some of your GSM/3G/LTE modem's functionality to PC over USB. Usually this is not something an ordinary user is concerned about.

---

It involves understanding two core concepts:

* How Android communicates with modem/BP (which lives on SoC along with other core components including CPU/AP and RAM) for internet data. Communication with modem/BP occurs e.g. through serial channels (like USB or UART, as other components of SoC do: QDL 9006/9008, EDL, `fastboot` etc.), or by sharing a reserved area of RAM (e.g. SMD or SSM in case of Qualcomm).
* How different USB functions of Android Composite Gadget driver (which is an extension to Linux kernel's USB Gadget API) are used to expose Android in *USB device* mode to a *USB host* like PC. Different USB functions (like UMS, MTP, RNDIS etc.) can be configured and switched using `sysfs` or `configfs`.

On devices with Qualcomm's MSM SoCs (like USB modems or phones), **RmNet** (Remote Network) is modem's data transfer and control protocol which exposes Ethernet like IP interface as data channel and uses QMI as control protocol. Generic Software Interface (**GSI**, which replaced BAM) transports communication with IPA core of the modem. Internet Packet Accelerator (IPA) is an IP packet processor which performs better than CPU/AP for this specific purpose.

IPA/GSI can be used with different tethering protocols including RNDIS, RmNet and DIAG/DPL/QDSS. In order to access BP from PC (e.g. to use internet or do some debugging), Android kernel includes USB functions (like `rmnet_gsi`) for these protocols in order to expose them through USB (so that Android device appears like a USB modem). Proprietary protocols may not be used without vendor provided software. E.g. on Android devices we have RIL and `cnd` \- vendor provided daemons - to communicate with BP. However there are open source tools like QCSuper which can talk Diag protocol over `/dev/diag`.

---

**RESOURCES:**

---
Tags: usb-connection-mode
---