text:
Securing a young child's tablet
My wife has decided to get the kids a set of android tablets for christmas.  These are Coby Kyros 4GB wi-fi only models.  The kids are ages 6-10 so I don’t particularly want to let them have free reign of the internet or the app stores.  I also want to make sure the tablets are protected from the various forms of malware.
Ideally I would like to be able to establish a white list for the websites they are allowed to visit, and make it so that they are not able to add any apps or modify the white list without parental intervention.  However I am not familiar enough with the android platform to know where to start on any of this.
Google has helped me find out that apps exist which claim to be able to restrict access to other apps, but almost all of them have comments indicating that they are very easy to bypass.  Likewise I have been seeing mixed reviews as to the effectiveness and value of the antivirus options that are out there.  So far I have not been able to find anything about building a whitelist, or restricting content accessible from the web.
So I am asking for suggestions as to specific topics/apps that I should be reading up on, and/or other approaches that I can take to reach these goals.
EDIT:
I should note that this model does not come with the android market pre installed, it has some third party app store on it.  It does come with an apk manager installed, and I have played with one of them enough to get the market and gmail onto it.  So I should be able to get most anything installed/removed if I can figgure out what it is I actually need to do.

As I noted in your other thread, your best bet is probably to manually set a web proxy server via the devices network settings that filters by keyword or whitelists.  Even if they do go to another person's house or try to get on another network, they will be unable to browse (especially if you are hosting the proxy server yourself on your own network; in that case, they most likely won't be able to browse to anything at all).
From wikipedia:

In computer networks, a proxy server is a server (a computer system or
  an application) that acts as an intermediary for requests from clients
  seeking resources from other servers. A client connects to the proxy
  server, requesting some service, such as a file, connection, web page,
  or other resource available from a different server. The proxy server
  evaluates the request according to its filtering rules. For example,
  it may filter traffic by IP address or protocol. If the request is
  validated by the filter, the proxy provides the resource by connecting
  to the relevant server and requesting the service on behalf of the
  client. A proxy server may optionally alter the client's request or
  the server's response, and sometimes it may serve the request without
  contacting the specified server. In this case, it 'caches' responses
  from the remote server, and returns subsequent requests for the same
  content directly.

The overall outlook is not so great for you, AFAIK.
The Market has content filtering, check the Settings in the Market app.
For the browser, that's a wholly different kettle of fish.  The built-in browser doesn't have any kind of filtering available.  3rd party browsers might, but they'll be trivial to sidestep (by simply opening the built-in browser).
The next best thing you can do is filter the tablets at the router, if it allows for that.  However, that's only useful when they're at home (or other places where you can control their internet connection).

Yeah, setting up filtering on the router did occur to me. But as you said it falls apart as soon as they leave the house, or figgure out how to link into the neighbors connection.

You should also be able to change the hosts file on the device: /etc/hosts

@BryanDenny: Only if the device is rooted.  In which case, it might also be possible to remove the built-in browser.

This isn't really manageable from a technical perspective (you could go some way towards it by sorting out your own firmware, using something like Cyanogen) as we often point out over on security.stackexchange.com once an attacker (in this case, your children) have a device, they control it.
So, my alternate course of action would be as detailed in this question over on parenting stackexchange - start off with visibility, using the devices together, and education - that will go much further towards making your children safe than any technical control you can implement.
What I have done with my 3 (now 5, 9 and 11) was let them use computers in the main room while we were there (aged 3 - 5) and then unsupervised until about 8 (but knowing we would be walking in and out) and over 8 year's old I trust them not to be stupid.
It helps that their dad is a security and privacy specialist who often provides awareness training in this area :-)

+1 User education is an important step, but the tablet's nature as portable, concealable devices means the "we are walking in and out" bit doesn't work as well, sadly.

Use OpenDNS on your router at home. As long as they are accessing the Internet from home then you can whitelist or greatly restrict what sites they can visit. I use OpenDNS currently to restrict my children's access with the browser on their Nintendo 3DS. Since it is at the router level it doesn't require any support at the device level.
If they are accessing wifi outside the house then there isn't much you can do - for example at the library. But they could just as easily use an unrestricted computer at the library instead of the restricted tablet.
If you can remove the app store from the device, and then just manually install the apps you want them to use, that is probably the best way to go. You will be pretty close to a walled garden.
Additionally I would suggest you perform an "audit" on the devices weekly or at least regularly. Check out what is installed, and look for any worrying activity, or lack of normal activity. Also use that as a chance to talk to the kids about the devices and see if there are new apps they want you to get for them. If you install a new game or something every time you audit their tablets then they will be looking forward to it! Actual communication generally trumps technology.

I was going to suggest the same thing.  +1

Try using Surelock And Surefox. They will lock it down and give you a white list provisioning.

Note: the following extension has a whitelist feature as well. Works on Android. But might be a little harder to install.

What works best for me is a keyword filter. This is the best way to filter any content because it can catch almost 100% of what you target. Eg. if you're addicted to the game Warcraft, you simply add that to the keyword, and that will be gone from the internet.
It works only on Firefox version 56.0, using Procon latte filter. This extension no longer works on the later versions, and it's no longer on the addon store.
Introduction, https://www.howtogeek.com/howto/2617/filter-web-content-in-firefox-with-procon-latte/
What sets it apart from other keyword based filters, is the accuracy, and minimal false positives. Plus its totally free and has password protection on addons page.
Some keyword blockers are overly aggressive. eg. if you set it to block the word, "bra", it will block "branding", "brain", "library" as well. This makes it pretty much unusable.
For instructions on how to set this up on Firefox Windows and Android, https://github.com/hpaolini/procon/issues/29

Once you've decided on the browser to use, you will need to use an applocker to disable the playstore, and other browsers and apps that have open access to the internet.
Highly recommend Applock.

It's a free app locker, that is very full featured. Allows you to toggle between different groups of apps to be blocked/allowed. Password protection and email reset.

You can try Pluckeye android browser. Easy to install, and disables ALL images/videos. Might be blocking too much, but it's definitely safe.


text:
How do I fix my boot-looping Samsung Galaxy Tab 10.1?
I have a Google IO Samsung Galaxy Tab that has decided it no longer wants to boot properly. It just constantly goes from the 'SAMSUNG' logo that flashes a couple of times to the stars and lines animation that goes back to the logo. It does the startup sound on the first iteration only.
If I hold the power button while it is doing this, it goes to a screen that just says
====================================
 Entering upload mode...
     Upload_Cause:  undefined
====================================

and hangs there. Holding the power button again will take it back to the boot loop. In order to get it to actually power down properly I need to just wait for it to run out of battery.
I assume I'll have to stomp the firmware or something, but I'm not sure how to actually go about it. My computer is a Mac, so instructions that work there would be good, but if necessary I should be able to commandeer a Windows machine for a while.
Also the colour rendition became bad leading up to this problem (this is a reasonable approximation of the situation - it is clearly not right, but the image is still identifiable). I'm not after a separate fix for this problem (yet) - if it's still a problem once the bootloop is fixed I'll be back, but I figured it might be a relevant datapoint.
Update:
I've tried to get clockwork recovery on it, by following these instructions, but after actually getting the image file on there (end of section 4), it comes up with the 'Samsung Galaxy Tab' logo with an open padlock image at the bottom, and then goes back into the animation -> 'SAMSUNG' logo loop. Sooo, not that useful...

I had the very same problem with my IO tablet (samsung logo loop, sometimes the upload_cause screen, but never actualy booted). Took me a lot of try/fails before I found a working solution. And this is it: You have to reflash not only the stock rom, but the stock bootloader too. I followed this tutorial and my tablet is working without a hitch! Good luck!
http://rootzwiki.com/topic/2525-guide-wi-fi-flashing-stock-bootloader-to-io-tab/

The odin in the zip file on that page didn't actually work for me, but the other files and steps were all good with a different odin I'd already downloaded

@Cebjyre you should give a link to the zip you used so this helps others with the same problem.

Have you tried a factory reset by fiddling the power and volume buttons?
Reset Galaxy Tab with Hardware Keys
If Android OS is not loading then you can hard reset Galaxy Tab using hardware Keys combination.

Make sure tab is turned off (press and hold the Power button for about 10 seconds to turn it off).
Press and hold the “Volume Up” and “Power” buttons at the same time, when logo appears on the screen release the “Power” button and continue press the “Volume” button
When recovery screen appears use “Volume Up/Down” buttons to navigate and select “wipe data / Factory reset” by pressing the “Home” or “Power” button (Depends on Galaxy Tab model).

(I got this from
http://www.trickyways.com/2010/12/how-to-reset-samsung-galaxy-tab-to-factory-settings/ and have not actually tried it myself.)

Based on the date of the article, I assume this would work with the model before the IO version, but on mine it doesn't actually do anything. Using the 'Volume Down' button instead gets to a screen with a USB icon and an android dude digging as the options, which seem to be related to different ways of getting new firmware onto the device, so now I'm exploring this path (there doesn't seem to be much in the way of Mac love though)

On mine it doesn't actually do anything either.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
How to ensure that the data traffic is going over the VPN connection?
I have Motorola XT910 and I would like to install the Motorola AnyConnect by Cisco to use when out in public and using open WiFi. Once I do that how can I check if all the traffic that is coming from my phone is going over those VPN tunnels?

The application, Motorola AnyConnect, takes care of that for you.
When you sign on to your corporate network, the Cisco AnyConnect Secure Mobility Client for Android only allows the traffic thru the VPN Tunnel created, preventing any armful or unauthorized access or data transfer outside the parameters defined by your corporation security policies.

Cisco AnyConnect provides reliable and easy-to-deploy encrypted network connectivity from Motorola Android devices by delivering persistent corporate access for users on the go.

One thing that's not clear on your question is if you're aware that this Cisco solution is a corporate solution, not for the end user who just want's to navigate the web covertly.

Whether providing access to business email, a virtual desktop session, or most other Android applications, AnyConnect enables business-critical application connectivity. Through the use of Datagram Transport Layer Security (DTLS), TCP-based applications and latency-sensitive traffic (such as voice over IP [VoIP]) are provided an optimized communication path to corporate resources.

Users have to authenticate to their enterprise networks in order to use this app and the features provided, but you can navigate the internet as usual, only restricted by the security policies applied.

Additional Reading about this solution:

Motorola AnyConnect from Google Play Store
Android User Guide for Cisco AnyConnect Secure Mobility Client
AnyConnect Secure Mobility Introduction Video from YouTube

I do work for a company that has a VPN in place so it will benefit me a lot :)

@Darius Nice, you're good to go then! This App will secure your connection every time, provided you authenticate at your company :) ps: I had to mention "One thing that's not clear..." part to be sure ;)

I should have checked before but I know now that the app in question works with Cisco implementation of VPN only.

@Darius Yes, you are correct. It is a Cisco Solution for Cisco Implementations :)

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Can I customize the list of text messages that I can send when I slide to 'Text' instead of 'Answer' for an incoming call?
I love the ICS feature that allows you to select 'Text' instead of 'Answer' or 'Ignore' for incoming calls, but I would love to be able to set what the options are for outgoing texts. Is this possible?
I am running ICS on a Droid RAZR MAXX.
Thanks!

1) Go to Phone app

2) Tap Overflow Menu (triple verticle dots) > Settings

3) Tap Quick responses

Thanks! Just want to point out that it's a little different on my phone, although I couldn't have found it without your answer. On mine, I:

Went to the phone app
Went to settings
Quick responses

Thanks again!

Just want to point out that it's a little different from the accepted answer on my phone, although I couldn't have found it without the accepted answer.
On mine, I:

Go to the phone app
Went to settings
Quick responses

Hope that helps.


text:
Enable “USB Internet” for Android 6.0
With earlier versions of Android, there was the option to connect your mobile phone via USB cable with your Windows PC and enable "USB Internet" to share the internet connection from your PC with your phone (in case you don't have Wi-Fi nor Mobile Data). But with Android 6.0, this option is no longer available from the settings.
Is there a way to a) enable this setting again or b) share the internet connection (reverse tethering) via additional mirroring apps (all without hacking/rooting the phone)?

Have you considered the ReverseTethering NoRoot app as described in this answer?

Well, I had a look at it. But you need to install Java JRE, USB Drivers, Servers, etc - all of that really need some additional know-how which is everything else than an easy solution.

After some sweat it really worked! But I would still prefer the simple "Enable USB Internet" option which worked with earlier Android versions. Running a server on my PC is just not what I want to do in general. Also, you reach very easily the limit of the app (max. 10min) and need to buy the "Pro" version, so it is not really a nice option.

Not using Reverse Tethering NoRoot, there are two ways to make reverse tethering.
Method 1:
It requires Android 5.0+, a 20KB .apk to install, and a command-line PC program (1MB).
You can use Gnirehtet (It is similar to Reverse Tethering NoRoot, but uses less space and has no usage limit), which can be downloaded here on GitHub. You will also need the ADB tools in the same folder.
Method 2:
It works with all versions of Android (without ADB), but requires Windows 10. It, again, will require a program on your Android device and PC.
This article explains how to create reverse tethering using OpenVPN. It will take much more space on your devices (and much more time setting up everything), but it also works.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How to type "Control" on Termux?
There is a good app "Termux" which can provide a powerful shell environment without gaining root permission. However, the touch-screen keyboard doesn't include the "Control" and "Alt" buttons. But some interactive programs (for example, nano, emacs) require these buttons.
Is there any way to add this button or use some other way to replace this button?

You will want to use Hackers Keyboard (available on Play Store as well as on F-Droid) for that, which was explicitly written for such purpose:

Hacker's Keyboard (source: Google Play; click image for larger variant)
That would be the most convenient approach – though the app hasn't been updated lately. But if you don't want that, just take a look at the corresponding Termux help page (or the matching Termux Wiki page): Termux utilizes the volume keys for "special combos". You can also have the most common keys shown on the screen to be "tap ready":

The docu writes: To enable the extra keys view you have to long tap on the keyboard button in the left drawer menu. You can also press Volume Up+Q.
Or, as Death Mask Salesman stated in a now deleted comment: "Volume Down equals Control, while Volume Up is the same as Alt."

@Izzy I'm afraid I don't have a means to contact the dev, though.

Why not? But, as pointed out, my blindness, so no need. So I will now integrate the facts from our comments, and then clean up, OK? (if-not-OK, X-M-P-P :)

No. Vol-Up is closer to Fn than Alt.

When you slide on the left-hand side of the screen, you get two options:

Keyboard
New session

Click and hold on the keyboard and all the essential keys will appear on your keyboard. That's all you have to do.

Not sure why you were downvoted.  This option gives access to all the needs keys on the standard keyboard.

Press VOLUME UP+Q to enable and VOLUME UP+K to disable extra keys in termux.
To edit extra keys and shortcuts in termux
nano ~/.termux/termux.properties

and add save
extra-keys = [['ESC','/','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]

You can include shortcuts you like by changing termux.properties.
Reference link

You can use Volume Down + C to get the same job.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How to set default resolution in YouTube app?
Such that every time I open a YouTube video, it opens on that resolution. It is annoying when it changes automatically according to the network, and for every video, I have to change the resolution.
How to set default resolution in YouTube app?

YouTube app doesn't have this feature. However, YouTube Vanced comes with this feature. Go into its Settings - > Vanced Settings - > Video settings, and configure the resolution for both Wi-Fi and Mobile data separately.

Except, what is not noted on the FAQ page is that "fully" closing the YouTube app by "home button then swiping it away", closing web browser and clearing cache, or restarting the device will revert YouTube back to its default behavior of:

The speed of your Internet connection
Video player/screen size: Higher quality videos generally play better on larger screens.
Quality of the original uploaded video: If the video was recorded in standard definition, it won’t be available in high definition.

Setting a persistent default video quality is no longer possible.
However, this setting has been added for Android to the custom YouTube Vanced app if you're brave enough to sideload apps in Android.
https://forum.xda-developers.com/android/apps-games/app-youtube-vanced-edition-t3758757

According to the official YouTube product document, the video player do remember the settings done by user,
Below is the Note mentioned on the official page

Note: Choosing lower video quality (such as 240p and 360p) will make
  videos start more quickly. The video player will remember this setting
  for future videos you watch.

So essentially, you need to follow the below steps...
To adjust video quality while watching on your mobile device:

In this page, it is only mentioned as Mobile device and it does not say the YouTube App.
However, I myself did tried the above steps, and I found that YouTube Player remembered my previously set video quality setting.


text:
App names are not shown on the home screen of Trebuchet launcher
All my apps lost their text labels!

I tried rebooting, but it didn't help.

This turned out to be a setting and not an error.
Long-press on the home screen, click on Settings, and then slide "Icon Labels" to ON under both "HOME SCREEN SETTINGS" and "DRAWER SETTINGS". This eliminates the need to clear any cache or data.
Thanks to Rahul for helping me troubleshoot this.

Just in case, my labels weren't showing because I had a black backround and the text was black. Changed it to text color yellow, and labels showed.


text:
Brand new Moto G6 won't send or receive SMS
My brand new out of the box Moto G6 won't send or receive SMS. I'm using the official SMS app which has SMS permissions (triple checked this) and is the default SMS app.
I tried everything: cleaning cache, reinstalling, updating, rebooting, turning off both SIM cards, rebooting the radio through phone commands, etc. Nothing worked.
How to fix this?

After installing another generic SMS app and seeing it was receiving and sending SMSs, I uninstalled it and opened the official SMS app and it worked.
It makes no sense but I'm posting here to help.
And yes, the official SMS app was setted as the default SMS app AND had SMS permissions.

It might be that the phone hadn't received the SMSC/MMSC settings yet from the carrier - strange that the other app would possibly force it to or it was just timing.  Glad you got it working!

I forgot to mention that 4G and phone calls were working!

Phone calls and data are different than SMS, at least with GSM networks - the phone needs to be set to use a specific SMSC (Short Message Service Center) phone number that the carrier sends to the device which then relays messages on behalf of the cell phone.

To confirm... I had the same problem today with a brand new Moto G6 plus. No receiving and sending of SMS with the standard app. Installing another app worked. Removing that one... the standard app also kept working. As a sidenote: the SMSC number is still missing when I dial *#*#4636#*#* (see this answer) but at least it is working.

Had the same problem. Turned out that the default SMS app didn't have the phone number entered in the app's settings (in the SMS app click the 3 dots, then Settings then Advanced, then Phone number). Once the phone's number was added - text (both send and received instantly started working). Hope this helps others!


text:
Microsoft Teams for Android "not compatible" on Samsung Galaxy S8?
I have Samsung Galaxy S8 on Android 8. I try and install MS Teams for my organization, but I get the message "Your device is not compatible".
Is there anything I can do?

You could always try downloading the APK from APKMirror. The site is safe.


text:
Audio jack not working on Xiaomi Redmi Note 4
I have the Xiaomi Redmi Note 4 and this phone is NOT rooted yet. However, I am not sure if this is a hardware-specific issue or not. The phone is a day old, so I don't know if it should have been working before.
When I insert an audio jack (headphones, tried two pairs), no audio is played through them, but instead, continues playing through the main speakers.
Xiaomi support lines are reportedly bad, so I won't try, especially since I can't find their support email/ticket site in the first place.
Following is the specs:
Device Android ID/Codename: Nikel
Android: 6.0.1 MMB29M - MIUI8
Patch Level: 2017-04-01
MIUI Version: MIUI Global 8.2 Stable (8.2.5.0 MCFMIDL)
CPU: Octa-Core Max 2.00GHz
RAM: 3.00 GB
Internal: 32GB
Kernel: 3.18.24-perf-g798c6bf

Is this a hardware issue, or a software issue?
If it's software, what should I do to fix it, and is this a known issue?

I rebooted and it started working, but I'll leave this question unanswered because I don't know what the problem was.

Seeing that it works (see question's comment), this answer is somewhat unnecessary, but for the future in a Q&A fashion, I'll put in my 2 cents.
There are a couple of things to know here. Glitches happen, and stuff breaks. We obviously prefer the first. Here's a couple of steps to isolate the cause.

Quoting the IT crowd "Have you tried turning it off and on again?". Seems dumb, but it works. If this fixes it, it's a software issue. (Hopefully one you won't be seeing again)
Quoting the IT crowd again, "Is it plugged in?". Check that the connections inside the port are clean and nothing is stuck in there. Don't go sticking anything wet in there, but maybe a very very mildly damp q-tip could do the trick.
If neither of these do anything, try a factory reset. If that doesn't work, it's hardware damage.


text:
How does the Android 7.0 Nougat Easter Egg work?
I just installed the newest version of Android (Nougat) for my Sony Xperia Z5 and I know that in each version of this OS there is an easter egg in the options menu, so I tried to activate it by tapping on the right menu items, it shows the Nougat logo but after that nothing happens.
Does anyone know how it works?


text:
How do I play MP3s from my Dropbox?
I have the Dropbox app on my Droid, and it can "download" files to the local storage on the phone, but for some reason, the music player app can't see those files.
How do I make the music playing app see the mp3s in my Dropbox? Is there an alternative way I should think about the problem or sync the files?

In Dropbox, simply add MP3s to favorites and they become available in a stock Google Play Music application (Tested in Android ICS)

That used to work for me, but after downloading the latest Dropbox, it no longer does. Now, even if I favorite an mp3 song on Dropbox and play it within the Dropbox app, it does not appear in my HTC phone's default music player nor Google Play Music.

I see. In this case, after tapping on a song it will be downloaded. Once it is saved, the Play Music app should see it.

If you export the tunes to the SD card rather than the music app then they will show straight up in the music player. Just a little annoying that you've got to do them one at a time rather than as a group.
Dropbox > More > Export > Save to SD card > select Music folder

PowerAmp seems to be able to scan the file system automatically. At least when I opened it, all my offline available sound files (regardless of format, I have many WAV and M4A files) were playable, while the solution with RescanMedia (amongst others) didn't work.
The Android version is 5.0.1. Dropbox and PowerAmp are from 12/13/2015. It costs 4 Euros (there is a 15 day trial) but to me this is worth it.

Some of the more advanced music players have the ability to rescan media from the phone.
In PlayerPro you can do Menu->Settings->Music Library->Refresh mediastore
This should then show up any music added since the last scan.

Hate to be the critic here but PlayerPro reports to no longer be able to Refresh the mediastore programmatically since 4.4 and will remove support for it (it would do that when media would be added to the sd card but I don't have one (yet) in my device...)

You can use Dropsync on your Android device to sync your device with your music folder on Dropbox.
In Dropsync, you pair a folder on your device with a folder on Dropbox. You then choose from several options how those paired folders should sync.
I pair a Music folder on Dropbox with my device's default Music folder. In Dropsync, I use the 'Download mirror' setting, so that any changes I make on Dropbox (add songs, delete songs) sync to my device, but changes on my device won't affect my Dropbox folder.
The stock Google Music Player then watches my device's Music folder and updates the music library automatically.

In dropbox just click the arrow on the right of the mp3 you want and use the "export" option and then save it to device. Done.

Indeed.  I would merely add that long-pressing a folder before export allows exporting all files in that folder at once.


text:
Tasker if-else-if hierarchy and default setting, like Locale
I use a Google Talk status plugin (written for Locale) with Tasker, and the one thing I miss from Locale is the priority order of situations. That is, if I'm driving, then set status "Driving", else if I'm at work, "At work", else if [...] else "Available". (Locale does allow multiple situations to be active, but each type of action (e.g. Google Talk) will only get run once.)
I'm struggling to replicate this in Tasker. The priority setting on a task seems only to affect the order in which multiple tasks are run, whereas I'd like this particular plugin to be run once per situation-change, with only one status (the one with highest priority) even if two situations are active. I also lack a place to put the default "Available" setting (exit tasks aren't really suitable).
Example: I start driving to work. Status "Driving". I get near the office. Status should still be "Driving" (highest priority). I arrive and disconnect from the car. Status should now be "At work".
...whereas if I naively put the plugin in each situation and set exit tasks of "Available", I will instead get "At work" when I get near the office, and "Available" when I get out of the car (from the exit task of the Driving situation).
I'm reluctant to go back to Locale because Tasker is more flexible for the other conditions and settings I'm using, and because it has more built-in conditions (e.g. power source mains/USB), meaning fewer Locale condition plugins need to be kept running in memory.

Great question and exciting challenge. I'll have a ponder..

That's something not easy to be simulated by Tasker, but should be possible. The most likely trick is working with variables -- an approach you find described at Google Groups: How To Default Profile? (check the post by Nikita Popov).
That example just defines a single default profile to fall back on if no other profile is active. A more complex example would properly make use of variables like %PACTIVE (currently active profile), in the way that a "lower-priority" profile would contain the condition that the higher is not contained in %PACTIVE (so it only becomes the active profile if no "higher-priority" profile is currently running).


text:
Exploiting Janus (CVE-2017-13156) - what do these error messages mean?
I am working on a school research project about the Janus vulnerability (CVE-2017-13156).
Janus is a vulnerability of the signature scheme v1 while installing APKs. I know this does not correspond directly to the Android version, but I would like to make a statement in the text of my project, that says something like "Janus is a vulnerability that affects Android versions ABC to XYZ". I was researching the vulnerable versions and I found a small inconsistency between the Guardsquare Janus writeup and the CVE record:

Guardsquare says that Android versions 5.0 and newer are vulnerable and that apps using signature scheme v2 on Android 7 and higher are safe.
The CVE records lists the vulnerable versions as following: 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0 (notice that 5.0 is not on the list).

I decided to make an experiment with Android Studio Emulator to find out which of the vulnerable version lists is correct: I created a simple app that puts some text in the TextView in its Main Activity and I signed the APK with v1 scheme only (APK compiled for API level 19). I disassembled the APK using APKtool, then I changed the TextView text in the Smali files, compiled it back and prepended its DEX file to the original APK (standard way to exploit Janus).
I attempted to install this Janus-forged APK on various Android versions . The results are following:

Android 4.4: printed this message while attempting to install:

attacked.apk: 1 file pushed. 40.0 MB/s (3378792 bytes in 0.080s)
WARNING: linker: libdvm.so has text relocations. This is wasting memory and is a security risk. Please fix.
pkg: /data/local/tmp/attacked.apk
Failure [INSTALL_FAILED_INVALID_APK]

Android 5.0-7.0: The installation was successful, the installed app was showing the text manually edited in the Smali files.
Android 8.0 and 8.1: Show the error message:

Performing Streamed Install
adb: failed to install attacked.apk:
Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION:
Failed to parse /data/app/vmdl173040809.tmp/base.apk: AndroidManifest.xml]

My questions here regard the error messages as I don't understand why they show up (I googled some possible reasons, but they didn't really fit my case).
My questions are:

Why are Android versions older than 5.0 safe if they use signature scheme v1 as well? Why does Android 4.4 say the APK is invalid, but Android 5.0 does not?
What does the error message of Android 8.0 and 8.1 mean? Is there a better APK check in Android 8 that reveals Janus even for APKs signed with signature scheme v1 only?

Thank you for your help!

Apps with v1 signature exploit bugs (like master key and janus exploits) cannot be installed on Android 7.+  Source: https://engineering.case.edu/groups/xusheng-xiao/sites/engineering.case.edu.groups.xusheng-xiao/files/docs/ase_signatures_cr.pdf

Thank you for the paper recommendation, it's a useful reference for me.
However, even this paper mentions Janus being present on Android 5.1.1 to 8.0 -- they even cite the same CVE record as me.
APKs with v1 can be installed on 7.x -- I managed to install my forged APK on 7.0 successfuly. What they mention in the paper are APKs with rollback protection issues -- you can sign your APK with both v1 and v2 and rollback protection issue means i.e. that your APK has indicated that it has both, but only v1 was found (not my case).
So even though you helped, my two questions still lack an answer.


text:
Does the Google Play Store app requires a SIM card?
I noticed on a device that the Play Store app didn't work until I inserted a SIM card: is this just a bug or does the Google Play Store app requires a SIM card being present?
Background:
I've installed LineageOS + OpenGApps Nano on a Nexus 5 device (without a SIM card). Almost everything worked as expected, including the Google account creation.
What didn't work was the Google Play Store app, though. When going to the 'My apps' sections, there was just an endless checking for updates/connecting animation. Installing apps wasn't possible. Clearing the cache/app data etc. didn't make a difference.
What helped was this: inserting a SIM card! After that and clearing the app data/cache again, the Google Play Store app worked as expected.

No SIM or service is required. How long did you wait, possibly was just Google Play or its services updating?

@acejavelin, I waited ~ 45 minutes, also tried it several times with reboot and cache-clearing in between. Downloads via other apps (e.g. fdroid) finished with normal speeds.

Odd. A SIM is not required, we have lots of devices in our test bench, from Gingerbread to Nougat, includes lots of Nexus 5's, never had to have a SIM in any of them to use Google Play.

I have the same issue. I read somewhere that in order to solve play store connection issues, you need to enable automatic time and time zone. This takes its information from the cellular network, which in turn needs a SIM card.

No, a SIM is not required to access to Google Play on any device.

If it were, it couldn't work on SIM-less tablets :)

@Izzy, well, technically, the play store app could only require a SIM card if the device also has a sim card slot. Sure, acejavelin's answer contradicts this possibility.

I was trying to use one of those Calypso phones AT&T sent out for my child to do Zoom. I had to download it from the website directly instead of the Play Store. I was afraid if I used the SIM card they gave me, it would activate the phone instead of the new upgrade I got after receiving the Calypso.
I'm signed into my Google account, but it tries to update or download apps, but then quits and points me to a help page that said to clear the cache - no mention of requiring SIM card, yet it seems to. I got into the developer options by tapping the build a bunch of times, but it still has no setting I can find to bypass the SIM card.

Regarding "no mention of requiring Sim card, yet it seems to.", could you provide the exact message and/or provide a screenshot of it? This might help in collecting the info on which situation the user needs a SIM card to access Play Store.

A SIM card is required to download from the Google Play store; I just verified it through my Galaxy Note 20.

Could you also explain what would happen if no SIM card was inserted? I'm using Pixel 3a without SIM and I have no problem installing and updating apps from Play Store.

I had to insert a SIM and then sign into the Google Play store first. Then after that, I can remove the SIM and still be able to download through WiFi. Tested on LG V10, Galaxy S23, Revvl 6 pro, OnePlus N20.

The first part does answer the question, you need a sim to sign into google play, then after that you can remove and still install apps through wifi.  The second part is related to not being able to install apps through google play with sim removed, once signed in.

Hi, I removed the second part because it's tangential to the question, and I also think it's still incomplete: have you tried downloading through wire while the SIM card is in place? Otherwise, it's unrelated to the SIM card. (I noticed that you also have posted the question regarding that issue)


text:
Why does Android keep APK files of installed apps?
Android keeps APK files of installed user apps in /data/app directory and system apps in /system/app directory.
Does it mean Android extracts the dex files from the APK files every time the app is launched? If not, can I safely delete the APK files and still run the app?

An Android APK usually contains these things.
assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex

Upon installation, the APK file is copied to /data/app, and classes.dex is extracted and "optimized" by running dex2oat on it (on Android 5+ lib/ is also extracted). Result of the optimization is stored in /data/dalvik-cache/ so an app needs to be optimized only once per installation or update. Everything else is kept inside the APK. So the first answer is very clear: Things like assets and res that's required by the app must be provided, and they are inside the APK. The APK file is kept for supporting purposes. If you delete an APK, the app definitely won't start at all. (App: Where's my assets?)
Second, Google Play added support for "Delta Update" very long ago. In the delta update procedure, the difference between the old package and the new package is calculated. Then GP downloads the "Delta" and applies changes to the original APK to yield the updated APK, thus reducing download size.
An APK is always signed. This can prevent malicious modification to the package. You definitely don't want to install a modded app without knowing what is changed, or whether a virus has been injected. The META-INF/ inside the APK works for this purpose. Unofficial changes will result in non matching signature, and the Android system will refuse to install the modded app.
Also, when you update your Android OS, all dex files are "optimized" again so that you don't need to re-install them one by one. As is said above, optimization requires classes.dex file from the original package.

Note that Google Play Store's delta update abilities depend on having the APK to compute the delta between the installed and the updated versions, and the subsequent patching. Plus, the APK is compressed so it saves some space (anyone remember ye olde ZipAlign?)

@Tamoghna Space isn't really a problem, otherwise Android 5+ wouldn't have extracted lib/ from APK, iOS wouldn't have extracted everything from IPA. It's just for basic integrity check.

Executables rarely compress well - the space saving is more related to compressed resources like the binarized XML files, which aren't extracted. Also, about that ZipAlign - resource access can be somewhat faster on optimised (read word-aligned) compressed files.

So the asset files such as html and js files are not copied from apk to a specific location in android file system?

@user1788736 Yes. They're left in the APK.


text:
Why does this string of LTR and RTL markers cause Android devices to 'hang'?
I received this innocent-looking message forwarded from my brother on Whatsapp claiming that it could 'hang' my phone.

And sure enough... touching it would make my Android Samsung J2 running Android 6 freeze over for a while; it would ask me if I wanted to force close the app or wait.
I suspected there was more than met the eye here and copied the message over to my laptop and pasted it on an editor and opened the file through python and this is the string that I get from python. Turns out whoever is doing this is using/misusing the Unicode \u200e left-to-right, \u200f right-to-left, and \u2067 'right-to-left-isolate' character interspersed with some spaces to do this mischief. All the apps I've tried are falling victim to this tiny prank.
Below is the message in its Unicode hex format:-
"\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f \u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u200e\u200f\u2067 ereh-hcuot-t'nod"

Questions:

What does this string actually cause text editing programs to do? Make them go left and right too many times?
Why does this cause Android apps to 'hang' or crash?
Going off reports from my friends, this problem doesn't seem to affect iPhones. Why?

Tom Scott did an interesting video on the subject
Fundamentally, the fact that it is triggered by touching the text probably means it's a bug in the code responsible for working out which part of the text is highlighted (which is not at all trivial in Unicode) so it can be copied/pasted or otherwise manipulated. Given it hangs, it is possible there is an exponential blowup or infinite loop in the algorithm due to the many LTR/RTL transitions. I'm not aware of any detailed analysis of the source code and bug, though one may appear from the android team at some point.
iPhones have a completely different set of text rendering and interface libraries, so they will likely use a different algorithm here, or at least one which suffers from a different set of bugs.


text:
Trucaller unable to send media files (images/videos), only contacts
I'm using Truecaller on my Samsung Galaxy Ace J1 SM-J111F and I'm apparently unable to send images or video files, only location and contacts.

How do I rectify the issue where I am able to send videos and images?

Trucaller disables this feature when the phone in question lacks sufficient storage space, typically there is only about 100 MB left.


text:
What is this "N with waves emanating" notification icon?
Does anyone know what the symbol at the top of the screen between 'Bluetooth' and 'silent' is? The one that looks like an 'N' with waves emanating from it?

It must be an NFC tag notification, looks like your device has support for NFC tags


text:
How do you disable autoplay in the YouTube app when you are watching a playlist?
I have set autoplay to off in settings, but when I enter a playlist video, the next video still starts when the one I am on ends.

No, you can't set Autoplay to OFF for playlist.
Since it is a playlist, so the concept of Autoplay doesn't lies here as you are playing a list and not a single video.

It looks like you're right.  I had thought that you could turn off autoplay for playlists in the browser but not in the app, but I cannot do it in the browser, so I was mistaken.

Your answer is correct, and your reasoning makes sense at first glance. But remember that a playlist is often not intended to be played as a long chain, but rather just a grouping of videos. For example, the YouTube default Favorites "playlist", and the "playlists" that channels use to organize their content by topic, are really just groups of videos.

Google's main concept is to make you watch more whether you want it or not

Despite being commonly used to organise channels videos in to themes, rather than as more traditional playlists, this is an oddly unavailable option.
This is a particularly odd omission as there is ordinarily an auto-play on/off toggle within the video controls and this option used to be available for playlists in the browser, but only when not using a playlist.
While a bit of a cop-out, your best bet is to use a browser such as chrome and a plugin to do this for you.

Note that Chrome on Android doesn't allow browser extension though.

If you install NewPipe Legacy from the F-Droid store, you can share a single video from the playlist to it and play it this way. This way, it will stop playback when the video finished.

Turnoff the loop option. Check the image

That is to loop the whole playlist, i.e. if the playlist ends it will be played again from starting if loop is enabled.


text:
How to open all numbers from WhatsApp directly in Truecaller?
I'm part of some WhatsApp groups and there are people whom I know but am unable to map them to those phone contacts which do not show anything but blank profile photos and no name. Asking everyone will be too much work.
Is there any way to directly open the contacts in Truecaller instead of the default Android app?

Aren't there names present in the group information?

@beeshyams Nope, I only see numbers. They are not my contacts so.

What i do in your case is, i copy the contact to true caller and then i see the name. I don't see a more direct way of doing this

@Abochur isn't this too much work? This is crazy frustrating man

The simple way to get people's details for WhatsApp messages is to use Auto-Search in Truecaller by allowing Notification access to Truecaller.
Go to Truecaller->Settings->General->Auto-Search and switch Messaging apps to ON.

And whenever you get a message from person who is not in your contact list, you will get a notification like:

This also works for messages from groups too, but you will get notified only when someone sends you a message (can't fetch all unknown contacts from the WhatsApp group).
Allowing notification access is a dangerous permission.

Truecaller will be able to read all notifications, including personal information such as contact names and the text of messages you receive. It will also be able to dismiss notifications or trigger action buttons they contain. This will also give the app the ability to turn Do Not Disturb on or off and change related settings.

P.S. WhatsApp does show names (which the user has set in his WhatsApp profile) in group info for each person.

I needed Copied numbers also to be enabled. Anyways thanks for this!

Yes, that will immediately pop up information of any copied number.

Yup, the copy number option makes life a little easier. But it's still too much work. Can't WhatsApp by default integrate TrueCaller into it?

I don't think that's gonna happen. Since they both are completely different apps.

Since WhatsApp Groups are meant to "keep in touch with the groups of people that matter the most, like your family or coworkers" so they don't assume that unknown people are bunched into Groups.


text:
How to make Google Maps Navigation show forward as up?
It used to be that Google Maps Navigation on my phone would show the direction of travel = as "up" on the screen. However, ever since my phone upgraded to Gingerbread, navigation is displayed with North as "up" on the screen.
How do I revert to the old behavior?

It turns out that the solution to this is rather easy, but scarcely documented.
To switch between forward-is-up and north-is-up, simply tap the red/white compass needle in the upper left hand corner of the screen.
On the updated maps, where the red/white compass icon is no longer there, goto settings and turn off "North is always up'

tapping on it did not change anything. It still points to north. Any ideas how to get it back to the direction of travel orientation. It started when offline maps were downloaded an used.

As of 7/2019 it's in "Navigation Settings" near the bottom.  "Keep map north up"


text:
Reinstalling apps after replacing an SD card
I recently had an SD card die in the field.  I've tried everything I know and can't get anything out of it or have it recognised on any reader with any OS, so I'm pretty much resigned to the fact that it's gone. Nothing irreplaceable on it.
I bought  a replacement 8 GB card and now some of my apps don't work. Is the only way to fix them a remove/reinstall or is there some other option, especially a batch repair/update?  I've had some apps update in the normal way, some work, some don't.
Android 2.3.3
HTC Desire HD, Sense 2.1

Most apps save their settings and preferences to the internal memory.  However, many apps are written to use the SD Card for some storage as well.  This is usually done to prevent taking up too much space on the (often very limited) internal memory.  For example, many apps with "offline" mode (e.g. news readers) will place downloaded content onto a folder on the SD Card.
Some apps handle disappearance of such cache from the SD Card better than others.  In most cases though, you can get away with clearing the app cache and data via Menu -> Settings -> Applications -> Manage applications menu, then tapping on the app, and tapping "Clear data" and "Clear cache" buttons, if available.
Uninstall and re-install is a last resort option and should always work.

I believe it depends on how that app was using the sd card or if it was installed on it. If the app was moved to the sd card it will probably have to be uninstalled/reinstalled.

This sounds most reasonable to me. If the app was installed to the SD card and you switched to a new SD card, then the app will no longer work.


text:
Is there a way to enable WiFi-tethering without root access?
Is there a way for WiFi-tethering without root access.
I mean before Froyo.
I have HTC Hero 2.1, and frankly, I don't want to root it for security reasons.

Anyone care to elaborate on if there actually are any security reasons not to root?

Here is the ultimate answer:
First, on your phone, install a terminal-emulator from Android market, then run
cat /proc/cpuinfo

which will show you the detailed processor information of your phone (ARM5 in my case).

Afterwards, you need to install an ARM5 cross-compiler environment on your Linux box (download Ubuntu and VirtualBox if you are a Windows/Mac-freak and  don't have a Linux box), in order to compile native code for your phone.

You do this in order to be able to start a privilege escalation attack ON YOUR PHONE.
So, next, you need to cross-compile a privilege-escalation attack for ARM5 (HTC Hero microprocessor). For that, use the RageAgainstTheCage attack made by Sebastian Krahmer of Suse Linux Berlin (in binary only), reverse-engineered here:
http://pastebin.com/fXsGij3N

A precompiled version is available here
http://cmw.22aaf3.com/common/rageagainstthecage-arm5.zip

Download the Android SDK starter kit from Google.
Install the appropriate Android Platform SDK (version 2.1 for me).
http://developer.android.com/sdk/index.html

Then, download the superuser (su) package:
http://cmw.22aaf3.com/common/su-2.3.6.2-efgh.zip
Put all, the superuser package, the su program, and the RageAgainstTheCage exploit in the same folder as adb (a program to connect to your android phone from the Android SDK).
You need to enable USB-Debugging, and switch of internet sharing.
Next, you transmit the file rageagainstthecage.bin to folder /data/local/tmp on your phone (initially, as normal user, you have write access only to the sdcard and the temp folder, but this is sufficient)
adb push rageagainstthecage.bin /data/local/tmp/

Then you start a shell on your phone:
adb shell

And change ownership on rageagainstthecage.bin to all
chmod 755 /data/local/tmp/rageagainstthecage.bin

Next, you start rageagainstthecage on your phone as normal user
/data/local/tmp/rageagainstthecage

When the exploit finished, your adb connection should terminate.
If it doesn't type
exit
adb kill-server
adb start-server

Now connect again to your phone:
adb shell

ADB shell now runs with escalated privileges (root).
So now, remount the file system so you can write on the system partition.
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
exit

Now push su and superuser to your phone (remember, you have write access now)
adb push su /system/xbin/
adb push Superuser.apk /system/app/

And then change ownership on su to all
adb shell chmod 4755 /system/xbin/su

Next download and install one of all those free tether apps that require you to root your phone.
Start superuser.
Now start your tether app.
A popup will appear, which will ask you whether you want to grant this app root access.
Say yes, and check remember.
Now switch of your phone and restart.
When it has restarted, everything is back to normal, no more root privileges.
But su is still there and executable for everyone.
So, when logged in, start the wifi tether app.
Since you checked remember in the superuser app, it will use su to switch this application to root, which means it will now run fine, with only the tether app with root privileges :)

Next, connect with your Linux box to your brand-new working Android WIFI hotspot. After you're sure it works, don't forget to put access restrictions for the hotspot in place.
BTW, if you use your escalated privileges to export some apk packages for reverse-engineering, you will notice that android lacks the cp command.
You can circumvent that restriction by using cat (copy-cat) instead:
cat /data/app/superuser.apk >> /sdcard/Downloads/superuser.apk

;-)

I don't know of any way to do wifi tethering without root (before 2.2).  You can, however, use bluetooth or a USB cable with PDANet which does not require root.

I have no Bluethooth (and don't want it either). And unfortunately, the USB cable is wearing out.

micro USB cables are cheap to buy: http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=micro+usb+cable

Yea, you see, here in Switzerland, the cheapest USB cable you can get is 10 $. While you can buy it for 1 - 2 $ on Amazon (and delivered for 5$), I mind the 60 $ customs processing fee. And apart from that, having to connect and disconnect (and bring with you) the cable is immensly annoying.

Update: Got Bluetooth working on my Laptop by patching the driver myself. But the quality is poor. PDAnet Bluetooth connects much faster than USB thethering, but it disconnects often.

@Bryan Denny: Unfortunately not a solution, because I've now no admin access on the windows machine anymore (company laptop).

My samsung galaxy s (android 2.1) had a tethering option build in from the start.
Settings->wifi-Mobile AP and I only had to check a checkbox for it to work. And it works really great. (not locked here t-mobile/netherlands)
I can't find the application name though.

That application is called Android 2.2+.

Yes but its locked by the provider and you have to pay money to unlock it per month. Sprint wants 30 bucks per month.

I'm not a Sprint user, I'm an Orange user ;-)) But I don't have 2.2, yet.

Unfortunately, This does not work on the Samsung Galaxy S Captivate via AT&T here in the USA.

my galaxy s is 2.1 and this method works for me too

Easy tether is an awesome app that allows wifi tethering. http://www.androidzoom.com/android_applications/communication/easytether-lite_eoqh.html

I thought it was just usb tethering...

@colithium: it is...

He mentioned WiFi tethering.

@colithium: But it definitely doesn't.

Which is why I commented...  The questioner asked for a wifi tethering solution.  Easy Tether is a USB only tether solution.  Hints the problem with this answer. I'm confused

You can get unrevoked, its an app which gives you root access without changing your kernel/flashing a rom/voiding your warrenty, use that on every startup (its automatic) and then get the superuser app. Then you can use the Open Tethering app which requires root access.
Thats the ONLY free way to do wifi tethering. Otherwise pay sprint or your provider the monthly enable tethering fee.
Worst Case Scenario you can tether using EasyTether app. It creates a forwarding mechanism for HTTP requests through the USB port. Requires software on android + computer. Its not WiFi Tethering, but its free, rootless tethering. For 3 bucks you can get the pro version and do HTTPS as well. Better than nothing (or 30 bucks a month --err thats insane--)

Unrevoked doesn't work on my hero, I can't get root.

Poo! I have that problem on certain builds as well. Most unfortunate. Easy Tether might be your only solution. Requires USB cable and some set up on both sides, but better than nothing.

You won't like this answer but your carrier may provide the service if you're willing to pay extra for it. Sprint offered a WiFi hotspot feature for $30/month on the Evo pre 2.2. Ridiculous, yes. But may be your only option.

I have 2.1 not 2.2 . And yes, ridiculous, but hey, Linux is FOSS, just compile your own and that WiFi thingy is unlocked. I suppose that is why Motarola digitally signs the bootloader and prevents any non-Motarola ROM from running...

I think xda got around that. But WiFi tethering was possible on 2.1 with Sprint. Just to be clear.

Are you sure it was 2.1 ? If yes, interesting.

Positive. I'm sure you can find press releases mentioning 2.1 being the launch version and the wireless hotspot feature. Sprint disabled 2.2's built in feature and still wants you to pay them of course.

Short answer, you need to root for wifi hotspot tethering, or pay Sprint $30 a month. I thought about purchasing the package, but decided against it because they already charge you $10 extra per line for no legit reason. My thought there is they expect you to tether and can't do anything about it really, so they charge you extra and every month, 10 bucks adds up quickly per line, especially for those on your plan who don't even care to tether at all.

Even if Sprint was my provider (it isn't, I'm in Europe) I wouldn't pay that.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/2.5/


text:
How can I disable root on a modded device?
Is it possible to disable root access to applications on an Android device again after installing modded firmware?
I would like to try Cyanogen or one of the other custom ROMs, but I'm wondering whether that poses a security risk. Do all installed applications get root access automatically, or can that be disabled?
I want to keep the Android security model the way it is or at least for applications to ask for my permission before they can access sensitive data.

Possibly related/helpful: How do I protect my phone from malicious apps once it is rooted?

Actually, another one that might help you: Security risks of rooting your android smartphone (itself closed as a duplicate of Are there any risks to rooting a device?)

If you install SuperUser you can control which apps are allowed root access.  By default it blocks all requests and asks you what you want to do.  You can give an app access indefinitely and revoke it at any time, or allow only specific requests with a timeout.  Most rooted ROMs come with it pre-installed, including CyanogenMOD, and many rooting methods will install it for you as well.
As an alternative, you could remove the su binary and Busybox from your device to effectively un-root it.

Question from zpat: Where do I remove the su and busybox from exactly?


text:
Data Recovery - How to Restore Deleted / Formatted Files on HD Micro SD Card
Background:
I put in a friend's SD Card to format it because it was having problems. Then I put mine back in and I think my phone formatted my SD Card. I had a ton of pictures on there that are now gone! I put the card into the computer and there's only 2mb of cache files on there and none of the original directories.
I already tried the following freeware recovery applications:

Undelete 360
Recuva

Neither of them were able to retrieve any files.
Undelete took 1minute to scan for files and came up with 0 files.
Recuva took 10 minutes for their "deep scan" which doesn't seem thorough enough at all for this 8GB SD Card. I need something that's a lot more heavy duty.
I don't mind paying for an application to get the data back if necessary...
Questions:

Which application can I use to recover my deleted picture files from my 8GB HD Micro SD Card?
Why did Anroid format my SD card?
How can I tell if it's a phone problem, data problem, or SD Card problem?

I think this probably belongs on SuperUser since it's not really about Android.  There's already a question there about recovery software: http://superuser.com/questions/6810/best-undelete-tool-for-ntfs-fat

Undelete 360 does not work without drive letter, nothing to select to recover (SD card showed in the Windows snapin only as drive volumes). * Recuva (with deep scan in ~5min) didn't found anything.

Take a look at PhotoRec.
There are also similar question on Super User that may help:

Recover data from SD card
How do I recover files from an USB flash drive?

Here's the full list of Data Recovery Program links:

Easeus Pro
Data Recovery Tool a nice tool but it's not free
PhotoRec and TestDisk from CGSecurity
NTFS Undelete (works also with FAT32 unlike the name suggests)
WinHex
Active File Recovery
Scalpel

thanks for your response.  I visited all the pages on here and added the Data Recovery links to make your answer stronger.  Recuva is garbage freeware and only took 10minutes to search for their "Deep Recovery". I asked one of the IT guys at work and he found the files right away with •Easeus Pro - http://www.easeus.com/datarecoverywizardpro/download.htm and says it will take over an hour for 8gb's so it's pretty thorough :))))

+1 for PhotoRec.  Picasa used to have a "feature" of deleting files off my camera even if I didn't export them.  PhotoRec isn't the easiest to use, but it worked, and I recovered photos of my daughter's first 2 months of life.

@Chance, thanks for the input. I edited the answer to highly recommend photorec and Easeus Pro :)

@Chance, any idea Why did Anroid format my sd card? How can I tell if it's a phone problem, Data problem, or SD Card problem?

@Brian, not sure. I've only had my Android phone for a couple weeks.  Did you shut your phone off between swapping SD cards?

Before going to PhotoRec, try TestDisk first (they are part of the same package). It was able to repair the FAT boot block and get the SD card usable enough to copy all my photos off immediately, without having to use the nuclear option. I still reformatted it afterward, just to be sure, and copied my stuff back onto it.

Easeus is a pretty garbage. Trial version hangs and does nothing. Tested twice in 2 months.

Here are a few more to the list:
Pandora Recovery: It is very specifically recovers deleted files on drives formatted with the NTFS file system, not the older FAT or FAT32 file systems.
Puran File Recovery: It is a free file recovery program. The interface is simple and straightforward, simply select the drive letter or physical drive you want to recover from and start the scanning process.
Android Data Recovery: This program used to only retrieve deleted files from rooted Android devices and now it adds a new feature for SD card recovery.

Pandora Recovery (Disk Drill) failed to install with message Error 0x80070643: Process returned error: 0x643. * Puran File Recovery long deep scan (3 hours) and didn't found anything. Android Data Recovery (dr.fone) does not work without drive letter, so the next button is disabled (SD card showed in the Windows snapin only as drive volumes). Seems installs Wondershare crapware like Wondershare Application Framework Service and Wondershare Driver Install Service which does not uninstall on application uninstall.


text:
HTC HD2 Can't start certain App from SD with CyanogenMod Gingerbread 2.3.3
I've installed BOYPPC-SHIFTPDA DESIRE HD V7 & GINGER 2.3.3_V9 (NAND [DAF]Clean) on HTC HD2, everything is fine except I can't run some app (almost all app large than 1Mb) from SD (eg. Angry Birds from Market). I can run the app if it is installed on the phone memory, and I can install or move the app to SD, but when I click the icon, it shows "application…stopped unexpectedly". My friend running another mod with Ginger 2.3.2 don't have this problem. Is there anything I can do to make it work? Or this is the thing beyond my control?

There has been a V10 and a V11 released since yours, nothing's mentioned in the change notes but it is possible this issue's been fixed in one of those

@GAThrawn, V10 and V11 released in a week after V9 and boyppc(the developer) was saying app2sd is not supported, could this be the case?

It looks like those ROMs just don't support App2SD.  Someone else was asking about it: http://forum.xda-developers.com/showpost.php?p=12193603&postcount=453

@Matthew, thank you, can you recommend another rom?

I don't have an HD2 myself, so I don't know from experience, but this one has app2sd and is built from CyanogenMOD so I would expect it to be good: http://forum.xda-developers.com/showthread.php?t=769026

do I need to format sd with a EXT4 partition in order to use app2sd? if that is the case, than I don't think it was the issue, as my friend on another mod never formated his....

You shouldn't need to do that, app2sd works on my Galaxy S and my card is the default FAT partition.  But I don't know how CM works.

Thank you Matthew, I'll update to another ROM with App2SD support and have a try.

@Matt. The ROM you suggested does work well on my hd2 and solve the problem I had before. Thanks a lot!

Great, glad to hear it!

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/2.5/


text:
Can any rooted Android phone be upgraded to version 2.2?
Assuming a given Android phone is root-able, is there any possibility that it cannot be upgraded to Android version 2.2 (or CyanogenMod 6)?
If such an upgrade isn't possible on a certain rooted Android phones, what are the factors that determine that? (hardware specs, other?)

possible duplicate of What is the minimum specification for Android 2.2 (Froyo)

There are more differences between Android devices than between different PC Machines. So you need to know things like which CPU and hardware and version of it you got in the device.  Then look for an Android firmware that supports your phone.  You might be able to compile your own firmware from source for your device, also depending on your devices hardware and how well you can handled fails there.
After an upgrade, your device will end up in different shape with regard to what works and not after the upgrade.  It might even work flawlessly.  You might even get a "bricked" device if you fail the upgrade and are a bit unlucky.
So, it all depends on what hardware you have and how good support Linux and Android has to your device hardware.
That is why the phone manufacturers and your telephone operator test the upgrades in many ways before they push it out to the customers.
But if you know this and are technical skilled and know that you might make your phone usless, you can always try.

This is a remarkably educating answer. The other thread pointed at the comment is very informative as well, but your answer adds a deeper level of understanding. Thanks + 1 + accepting.

Thanks.  It just states that you are on your own when upgradeing a rooted phone. So you should know that.  But it could be fun and usefull if you can find someone who has done this and it works for them (and some other). But I guess that you are still on your own, but the risk is less than making your own firmware :)

It depends on your hardware and the images of roms which may be available. There are many ROMS for many Android handsets out. Cyanogen has allowed many devices see 2.3.3 even if their provide hasn't released an update.
Like Anders said, there are possibilities of bricking your device deeming it unusable.
I know this, because I've done it to my HTC Magic, and half-bricked my HTC Desire Z (It's fine now! :) )


text:
Wil my HTC Desire auto-adjust for daylight savings?
Daylight savings is about to end, I was just wondering - will my HTC Desire auto-adjust for this?
Thanks!
(Need to set my alarm tomorrow morning and want that extra hour of sleep!)

Go to Settings -> Date and Time and ensure your time zone is properly set.  This should be enough, but you can also check Automatic or Use network time or similar to ensure it picks up the proper time.

If you've got your time zone settings set correctly then yes, it should be fine. If you are in any doubt you can set it to automatically pick up the time from your network.


text:
How can I flash back to the stock rom for HTC EVO 4G/Supersonic using just the phone and clockwork mod recovery and/or rom manager?
I need to flash back to my stock rom for just a few minutes to get my GPS working again (http://code.google.com/p/cyanogenmod/issues/detail?id=2090&colspec=ID%20Type%20Status%20Version%20Model%20Network%20Owner%20Summary%20Stars%20Priority). Everything I read says I need windows to do this, is there a rom I can download and just restore it with clockwork mod?

Did you make a nandroid backup with ClockworkMod before you flashed whatever you're currently running?

If I understand correctly you can find a stock rooted rom in an update.zip format. Although I don't know what baseband/kernel/version you would need.

http://goo-inside.me/evo/stock/ruu/ provides a straightforward guide, reproduced below, of how to revert to a stock ROM, and it looks like all you need is ClockworkMod.  You probably want the newest Dec. 15th software linked on that page.  Heed the warning!

WARNING! RUU'ing your phone will wipe all data on your phone, and if done incorrectly, can BRICK your device permanently!
  Performing an RUU entails completely wiping your user data, removing root, removing your custom recovery, and switching to the specified radio, hboot, and stock Sense ROM version that's in the file name.

  Instructions:

Download the UnrEVOked Forever S-ON tool and flash from ClockworkMod or Amon_RA recovery.
Download ZIP file for whatever software version you want to restore to. Note that you may not be able to downgrade, depending on your current software version.
Check MD5 (Windows: HashCheck, Linux/Mac: Use md5sum comand from Terminal).
Rename file to "PC36IMG.zip" (ensure that you do not have file extensions hidden, aka, that the file is not now "PC36IMG.zip.zip")
Place file on the root of your SD card.
Boot into hboot by powering off phone, then holding down Volume Down and Power until you are taken to the white screen with the skating Androids at the bottom.
When asked if you want to flash the file, press Volume Up to confirm. The remainder of the prompts should be self-explanatory after that.

This is a good explanation on how to completely revert to stock, but I just want to point out that it's really overkill for the GPS fix.

Definitely.  A clear case where "How can I solve this problem?" is better to ask than "How can I implement the solution I've already decided on?"

Agreed! :)

Just to note: You can actually do this from any Sense-based ROM - it doesn't need to be "stock" and it doesn't need to be unrooted. The important thing is the dialer app, because Sense's dialer has the special ##GPSCLRX# code in it and the AOSP dialer does not.
Probably the easiest thing to do is simply to get a Sense ROM and flash it like you normally would either via ROM Manager or manually via your recovery. There's a stock (rooted) 3.70 here, but you could also use something like Fresh 3.5 or MikFroyo if you prefer.
If you want to actually go back to a stock and fully unrooted ROM, then Matthew Read's answer is a good explanation which doesn't require Windows (or a PC at all, really).

I ended up using the ##GPSCLRX# code and the MSL reader app in the market since the GPS did not work in the stock ROM either. In hindsight, I would much rather have flashed to the ROMs you linked to but didn't know any better, if anyone is reading this they should do one of these ROMs since they are rooted already and you will need root to get the MSL code to do the ##GPSCLRX# (unless you want to call Sprint :/).


text:
Adb push does not work
When I run the command
adb push file.txt /flash/Data

it writes this error message
failed to copy 'file.txt' to '/flash/Data': Read-only file system

I tried to solve it according to this page
http://android-tricks.blogspot.com/2009/01/mount-filesystem-read-write.html but with no success.
Could you navigate me and solve the problem? thank you

What device are you using?  I'm not familiar with the /flash folder.

my device is Archos 7. In OI File Manager I can see the flash folder. But folder is not important, I can copy it to another folder (but I don't have SD card)

OK.  As Bryan asked in his answer, what are you trying to accomplish?  Just store files?

I have problem with copying files (I asked another question about it), so I tried to solve it with adb push.

You have to have root access to mount the drive as that article is describing (calling su == becoming root).
What are you trying to accomplish? Can you push the file to the sdcard instead (if your device has one)?

I have problem with copying files (I asked another question about it), so I tried to solve it with adb push.

You can attempt writing to /data/local/tmp/ as it is writable even by normal users.

You normally have to be rooted to change how the filesystem is mounted.

I'd like to preserve warranty.

Then you should use an SD card or something to put files on, you can't write indescriminately to the system or data partitions without root.

We can use interntal flash.


text:
How to recover stored wifi password?
My Android device (A Samsung Galaxy S7 SM-G930F, version 6.0.1) has different wi-fi networks saved. I would like to recover some of the password it has stored.
Browsing through the web I searched possible solutions but none of it has worked for me.

Stored password in wpa_supplicant.conf are encrypted, and even if I change the build properties "ro.securestorage.support" to false, old password remain encrypted or get deleted, and I would like to recover those.
I know that wi-fi password usually get backed-up on google drive, but I have no idea how to recover them from the backup online.
I heard about an Xposed module "Wifi password" which supposedly should show the wifi password instead of the normal dots, but I have a TouchWiz device and if I install the Xposed Framework i'm afraid it would wipe my data, included my wifi password.

I understand that encryption is meant to keep safe your password, but as far as I know, every time I try to connect to a wifi network it uses the real password, so they have to be stored somewhere or decrypted on the go.
Can anyone help me?
EDIT: As I said, if I change ro.securestorage.support property on build.prop file, my stored password either get deleted or they remain hashed.
If i delete .system.wpa_supplicant

all saved WiFi hotspots will be lost for the first time.

Also as said in the comments, the password isn't encrypted so there's no "way" to decrypt it, but it's hashed and there should be a way to recover it

Possible duplicate of Decrypting wpa_supplicant.conf on Samsung Galaxy mobiles

I specified on the possible solutions every answer in that question, saying that changing build properties or deleting files would result in removing my stored passwords.

I appreciate the effort you put in researching and asking a question which can be helpful for future visitors. Usually it's better to mention in your question any previous questions - if you find - which can be considered duplicates. But duplicates are usually discouraged. As your question too doesn't have a solution to the problem, so one may justify repeating the question. The previous question doesn't have an answer up to your expectations because Android Enthusiasts isn't the right place to answer questions explicitly about cryptography.

Thanks for the guide, I'll consider in the future asking on a more specific StackExchange subsection. I tried here, since my problem was directly how to "recover" from an android device and not "decrypt" from the hex key. Any answer could belong in different subsections, since it's at the crossing limit. Anyway I got my answers, and I selected the one that could be more useful for anyone that could have the same issue.

The hex value you found in the wpa_supplicant.conf is the PMK (not the PSK directly but some intermediate value computing the PSK or something like this). This value is not encrypted, it is hashed as defined by WPA2 using PBKDF2 SHA-1 with 4096 iterations see Wikipedia.
SHA-1 is a one-way function, which means that it can not be reversed.
Wifi still works, because the PSK is the actual key Wifi requires to work. The passphrase is just for the "dumb humans who can't remember a simple 64 hex chars value" (aka user convenience).
Hence there is no "decrypt" function. The only way to retrieve the password back is to perform a brute force search on that password (trying all possible passwords). Depending on the length of the password and your hardware (CPU, GPU) this can take some days, weeks, months or years.
There is an issue on Github with indicates that the tool "hashcat" is able to break this value using mode 12000 (-m 12000):
See also Encryption algorithm used in WPA/WPA2

But I (as a dumb human) cannot use that psk in any way to access the wifi with another device?
Forgive my ignorance about encryption and hashing, I understand the difference but I misused the term "encrypted".

@Iztooi Some systems still allow to use the PSK directly instead of the password. If the password field is limited to 63 characters it only accepts a password. If it accepts 64 characters usually everything less than 64 characters is considered to be a password and if you enter the 64 digit hex code it is taken directly as PSK. Or on Linux in the wpa_supplicant.conf you specify the password in quotes, and the PSK without.

So I checked my wpa_supplicant.conf and every psk listed is 32 characters long, and it has no quotes (so according to what I read, it should be the hex string).
Is it possible that the entirety of the psk is not shown but the remaining 32 characters are processed and added every time I try to connect?

@Iztooi It seems like the 32 hex char value is not the final PSK value (therefore you can't directly use it, you have to crack it). See my updated answer, especially the hashcat part.

I read about hashcat in your edited comment and I'm sure it will work, I'll mark the question as resolved but i'll add another answer that I found on stackexchange

Reading on StackExchange this question
Retrieve WiFi password
the user "life-on-mars" answered that if you do a backup of the provider settings (com.android.provider.settings) with adb and extract that backup with Android Backup Extractor in the end you will obtain a file called flattened-data which has all the network saved in the same way as the wpa_supplicant.conf but with the actual passwords not hashed/encrypted.

Didn't work on OnePlus 6 running Android 9. On which device and Android version did you test this answer?

I tested this in a Samsung Galaxy S7 (SM-G930F) on a 6.0.1 version


text:
How do I open an offline website on Android?
I have a directory with some .html files, some .jpgs, an index.html file, and some other stuff. If I drag the index.html into chrome (or other browsers) on my desktop PC this static/offline website will display in the browser and I can navigate the site without issues.
When I go to the same directory in Android Pie and open the same index.html file in Android-Chrome I get the error "file can't be found". I've tried other Android browsers with the same result.
In Android File Explorer the directory (and respective file) appear as:
/Internal Storage/my_site/index.html

How can I open a simple static offline HTML website on Android? Is there a specific app or browser I need to use?

You need to enter in Chrome address bar file:///path/to/file. In case you aren't sure about the path use any file explorer that tells you the path.
In this case it is file:///storage/emulated/0/my_site/index.html
Also many file explorers including MiXplorer offer to open .html files with all supported apps (registered mime type):


text:
How do I search the SD card with standard Android File Explorers?
My Android Pie SD card storage looks like this:
.
├── Android
|   ├──data
|   |  ├── com.amazon.mShop.android.shopping
|   |  |   └── ...
|   |  ├── com.amazon.venezia
|   |  |   └── ...
|   |  ├── com.android.providers.media
|   |  |   └── ...
|   |  └── ...
|   └── ...
└── LOST.DIR

If I navigate to /Android/data/ on the SD card you can see the first three directories are:

com.amazon.mShop.android.shopping
com.amazon.venezia
com.android.providers.media

If I search for the string venezia results are only returned for my internal storage, but nothing for the SD card.
Is there a problem with Android search, or is my search procedure wrong? I've tried on multiple Play store file explorers, all with the same result (inability to search SD card).

Edit - The following Termux commands provide the following output:
$ find /sdcard/ -iname '*venezia*'
/sdcard/Android/data/com.amazon.venezia

$ ls /sdcard/Android/data/com.amazon.venezia
cache files

What's returned by find /sdcard/ -iname '*venezla*' on Termux?

@Irfan Latif If I issue that command in Termux there's a silent response. In other words nothing happens after pressing Enter and I'm just dropped to a fresh command prompt with blinking cursor.

And what does ls /sdcard/Android/data/com.amazon.venezla show?

@Irfan Latif I had a typo. venezla is actually venezia. That said, I had to reword the original question. My searches only look at internal storage, it appears the SD card isn't indexed at all. Is this true, and what do I do to be able to search the SD card from any standard Play store File explorer? Termux output included in above in the question. Thank you.

So now your question should be something like "Why search results in file explorers don't include results from external SD card?". Please consider re-phrasing. // Android provides no search indexing, file explorer apps search files in their own way. Apps don't have filesystem level access to external SD card but they do can search files using SAF for instance. Again it depends on the app you are using.

he mentioned he was looking for files on sdcard. but find command is targeting internal storage, so find /storage is command for searching all

@alecxs SD card came into scene after edit: https://android.stackexchange.com/revisions/218359/1. And he was unable to find the directory because of typo which he has fixed. Now the question is different.

android 7 file explorer searches case insensitive in both locations by default
https://i.sstatic.net/QnuXV.png
https://i.sstatic.net/JMA5t.png
https://i.sstatic.net/l7hb1.png
https://i.sstatic.net/DX2j6.png


text:
How can you prevent Google from saying "if you just said something..."
If I start a voice search but change my mind and cancel it, sometimes it will say " if you just said something I didn't hear what it was".
Is there any way to disable this?

Are you rooted ?

Yes. Sorry I forgot to mention it.

Xposed module App settings..give it a shot and see if you can mute...too busy for me to check

and if you're not rooted? I don't want things to activate on their own or if i accidentally knock against something


text:
Fully Remove Google Voice Search
I am running Lollipop on the LG G3 and due to a loose connection on the audio jack google voice search gets activated everytime a slight movement of ANY attached cable.
Now, I would like to deactivate google voice search completely. My phone is rooted and i am willing to raze any part of the file system to stop this annoying hellfire.
It is annoying because I can be on a free-hands call and google voice search asks me over the speakers "In order to do a google voice search please unlock your phone".
Additionally, the same physical problem results on the default music player starting to play music. Is there a wat to deactivate the wire control for the music player ?

Open your Google app (not chrome).
Press "more"
On the new screen press "settings"
You should see "google assistant" and "voice", press "voice"
Press "voice match" under the"ok Google" section.
You have finally reached the screen you need. Here turn of the setting "access with voice match"

It should be pretty simple to just remove the app, I've done this on many devices without issue.
I recommend using Titanium Backup. Just find voice search in its app list, tap it, and choose uninstall.


text:
Can I use the Samsung Galaxy S5's Finger Scanner as a finger-print scanner for laptop?
Can I use my Samsung Galaxy S5's finger scanner as a finger-print scanner for my laptop? Because I want to register on a site that requires my fingerprint from home. My phone is rooted.

Currently, the general practice ongoing is that androids by default only support being connected as camera or as mtp to PC. So by default atleast this is not possible.
However, you can make it support by adding some module in kernel for this purpose. But since no such such module exists (ayleast not the one I could find), so you will have to create one yourself and implement it.


text:
How do i fix a white screen after replacing digitizer on Nexus 7?
I replaced the screen and digitizer on my nexus 7. Now when I power up the nexus 7, it is only a white screen that flickers. I checked all wires and they are fine. How do I fix this?

There's too little info here. Without knowing how your device was behaving beforehand we can only assume that you did mess up the connection or broke something.

Are you sure that both your screen and device are functioning, and the problem does not lie directly with either device but the connection between them?
Start diagnosing your problem by finding out whether the screen works correctly (with another device), or the device works on it's own and it's not a problem with the motherboard (another screen)?
Also try contacting the company that you bought the screen from for troubleshooting instructions and double-check you've setup the screen with your device correctly.