Moto E Not Starting Properly After Changing runtime to ART I have recently bought a MOTO E and it's working cool. Then I have enabled Developer options and changed my runtime from Dalvik to ART. Afterwards I restarted my device. I got the message saying Android is upgraging. After completeing the process I got exceptions like

unfortunately the process com.android.phone has stopped

Please help me how to get out of this problem. I am getting that message for around 10 times and mobile restarting once again.

/data/property/persist.sys.dalvik.vm.lib contains the name of the runtime library you wish to use - libart.so or libdvm.so. So, you can switch back to Dalvik like so:

adb shell 'echo libdvm.so >/data/property/persist.sys.dalvik.vm.lib'

Source


Deleted thumbnail file but no space was freed I'm using an xperia z3 and used file commander to browse and found that i kept running out of space because of a 4gb thumbnail/preview file/folder that grows rather quickly. I tried deleting the folder but after deleting the folder I saw that no space was freed and it was still there. So I tried moving the folder to my SD csrd which resulted in 4gb of space taken up on my SD card and no space freed. I dont think I can find the thumbnail previee folder anymore but I think new files are building up because I'm running oit of space again. Does anyone know whats going on?.

.thumbnails folder has a file of the format .thumbdata4* whose size is shown to be really big usually. But in reality, it's not a big file and it's size is shown as such is because it's not a normal file. It's a sparse file and it's real size can be seen using du command from a terminal emulator. ls shows the file size from it's metadata like most tools do and it'll be a big no.
On my phone, it looks like this
/storage/emulated/0/DCIM/.thumbnails $ du -h .thumbdata4--1967290299
172K    .thumbdata4--1967290299

/storage/emulated/0/DCIM/.thumbnails $ ls -alh .thumbdata4--1967290299
-rw-rw---- 1 root sdcard_rw 11G 2020-07-30 19:18 .thumbdata4--1967290299

So it's actually a small file and you don't have to worry about it's size.
See the size difference. ls shows size to be 11GB while du shows it to be only 172KB.


How to get setting information before booting Android devices like in BIOS? Is there any method by which we could get the system information before booting android OS.

Like wise in PC/laptop, we can get into BIOS setting before booting and get the system information. Do Android devices have such thing?

If yes, how can I go through before booting? Is there BIOS like setup in android? Shed some light.

There is no BIOS type thing in Android, although there is the Logcat and DMESG.

There is an app on Google Play that allows you to change your boot animation to show you the live logcat as your device boots.

If you want the System Info, as per your question, you would just have to Google your device, or use a site such as GSM Arena to lookup your devices hardware.


Is it possible to simulate a button press on an Android application from another application (Android or Desktop)? I need to automatically click on a specific button on an app. Is there a way to do this on a completely controlled environment?

By controlled environment, I mean the phone could be rooted, it could be connected to a desktop machine, any external app could be installed, and any other requirement.

Note: the button is NOT on an exposed activity.

You can use adb command to simulate touch

adb shell input tap x y

where x y are the co-ordinates of the pixels on the screen to be tapped.


How does update_engine validate a differential update-image with dm-verity enabled? I am working with Android 8, Android verified boot with dm-verity, and block-based differential seamless A/B updates. To my understanding, the Android update_engine performs some validations of the received update image before it proceeds to write the target partitions. AFAIK, update_engine checks if the differential update can be installed atop the current partitions. How is this check performed?

I can imagine two possibilities, but I haven't found authoritative documentation of either hypothesis:

The differential update package contains a linear hash of the source partition. On the device, update_enigne computes a SHA-256 hash of the entire partition on top of which the differential update is to be applied. It compares this value with the one provided as part of the update package and proceeds only if the two values agree.
The differential update package contains the dm-verity root hash of the Merkle-Tree used for block-wise validation with dm-verity. The update_engine compares this target root-hash with the one provided on the device in the vbmeta structure. Only if the two match, it proceeds to install the update.

Is either one of these hypotheses correct, or am I missing something? Similarly, how does the update_engine validate the target partitions once they have been written? Via a linear hash, or using the root hash? Or otherwise?

Is either one of these hypotheses correct?

I haven't experimented with A/B device so far but what I understand from official documentation and source code is that it's both. SHA-256 hash of target partition is checked against the one received from update server. And after reboot dm-verity check is performed.

From Life of an A/B update:

  "5. The whole partitions are re-read and verified against the expected hash."

Additionally implementer can put extra post-installation checks. And:

  "After rebooting, update_verifier triggers the integrity check using dm-verity".
  ...
  "After the check completes, update_verifier marks the boot successful."

.

  Android update_engine performs some validations of the received update image before it proceeds to write the target partitions

A/B updates differ from old non-A/B recovery-based updates. In latter case update package is verified twice against public keys in /system/etc/security/otacerts.zip (normal boot) and /res/keys (recovery boot). In case of Block-Based OTAs dm-verity is an additional check. But A/B updates have support for streaming updates:

  "Updates can be streamed to A/B devices, removing the need to download the package before installing it. Streaming means it's not necessary for the user to have enough free space to store the update package on /data or /cache
  ...
  update_engine will update the raw blocks on the currently unused partition as it streams the update package."

So it's not always possible to verify the integrity of whole update package (payload) before flashing. Instead integrity of update package is verified after updating. If something goes wrong, the older partition slot is still intact as a fallback while the updated slot is marked unbootable until next update.

.

  Does that mean that update_engine computes a complete linear SHA-256 hash of all source-partitions that it is supposed to update?

"During incremental or delta updates, the binary data from the current slot is used to generate the data in the new slot". But update_engine computes hashes of all target partitions after those are updated. From source code:

  "This action will hash all the partitions of the target slot involved in the update. The hashes are then verified against the ones in the InstallPlan. If the target hash does not match, the action will fail."

.

  dm-verity does not perform an exhaustive check on every boot, because that would take way too long. That's why I assume that update_verifier, in contrast, does the exhaustive verification upon a reboot after a successful installation

From the details found in Implementing dm-verity, hash of every 4k block is pre-calculated and appended at the end of system.img (or vendor.img) in dm-verity table (metablock; slightly different details in case of AVB) which is signed by OEM's private key. Public key is saved to kernel's system keyring (on A/B devices) which kernel uses to verify the integrity of verity table on every boot.

  "One way of verifying a block device is to directly hash its contents and compare them to a stored value. However, attempting to verify an entire block device can take an extended period and consume much of a device's power.
  ...
  Instead, dm-verity verifies blocks individually and only when each one is accessed. When read into memory, the block is hashed in parallel. The hash is then verified up the tree. And since reading the block is such an expensive operation, the latency introduced by this block-level verification is comparatively nominal.
  ...
  If verification fails, the device generates an I/O error indicating the block cannot be read."

update_verifier reads a list of blocks on next reboot. No I/O error means new system.img is signed by genuine key and the updated slot is marked successful.

  for a very small differential update, only the blocks that have changed are checked. For a full update, all blocks are re-read. Is this assumption correct?

Documentation says:

  "update_verifier will read only the blocks listed in /data/ota_package/care_map.txt, which is included in an A/B OTA package"

It won't read other blocks whether updated or not.


Looking for help choosing the correct stock recovery.img file for my phone I have a Moto G5 XT1676 with Android 7.0 stock firmware.

I rooted the phone with Magisk and installed TWRP but I never backed up my recovery.img partition. Now I want to flash a stock recovery partition so I can apply an ota update and in case I want to sell on the phone I want to be able to take twrp off and unroot. I don't want to flash an entire firmware.. Can someone help me in choosing the correct stock recovery.img for my phone?

Here are details of the firmware currently on my phone:

Baseband version: M8937_22.29.02.56.01R CEDRIC_EMEADSDS_CUST
Kernel Version: 3.18.31-perf-g4a0c859 Wed May 2 06:29:31 CDT 2018
Build Number: NPPS25.137-93-12
Blur Version: Blur_Version.25.321.18.cedric.retail.en.US RETGB

Here are the details of another stock firmware I downloaded.

SW Display Build ID: NPP25.137-93
SW Version: cedric-user 7.0 NPP25.137-93 12
release-keysM8937_22.29.02.56R
Build Date: Wed Nov 22 03:19:24 CST 2017
Blur Version: Blur_Version.25.281.12.cedric.retail.en.US

You see the two firmware are almost identical but I don't have enough experience to know if it would be safe to take the recovery.img out of the second one and use it in the first?

I tried booting into bootloader then..

# fastboot boot recovery.img

... to test the recovery .img file from another firmware but I got a picture of an Android lying down with red above him and his lid open and the words "No Command".
I think that # fastboot boot is disabled on Android OS these days.

Any help much appreciated !!

Flex

The stock recovery booted perfectly fine. On Pixel, Moto , Nokia and several other devices, you will be presented with No Command screen. You need to follow the following combinations to proceed to recovery from there:

At no command screen:

Press and hold Power key.
Press and release Volume Up key.
Release the power key.

You will be in the stock recovery. If that works, you can flash the image to your recovery partition.


Centrally managing large number of android tablets I'm involved in a project that will deploy approximately 400 android tablets. All the devices are on the same network. Is there an easy way to centrally manage the following:

Creating and updating policies to restrict users from launching apps or updates
Update a custom written application
Set device into kiosk mode and auto start an app

Any help would be appreciated.

VNC server + shell script or try some thing like air_droid etc

Install in each tablet
enjoy :)


Location high accuracy mode with wi-fi turned off My understanding: location mode «High Accuracy» is more efficient than «Device only» because it unburdens some of the GPS task by using Wi-Fi networks information.

Consider these settings:

«Scan always available» is set to «off»
«Keep Wi-Fi on durin sleep» is set to «always»

If «location» is enabled in «High Accuracy» mode, but the Wi-Fi is disabled, does this mean that location works as if in «Device Only» mode?

So in order for the «High Accuracy mode» to actually work you have to have either «Scan always available» «on» or the Wi-Fi on. Is that correct?

No, high accuracy mode without WiFi is not the same as device only because

The mobile network provider location source is also used in high accuracy mode but not device only.
Assisted GPS may be used to reduce the time to get a location fix when you use a network connection, either WiFi or the mobile data connection. "Download GPS assisted data only over WiFi networks" determines whether the mobile data connection is used for assisted GPS. Information about the GPS satellites expected to be in view is passed over the data connection, and this is much faster than the GPS receiver searching for satellites.

No, for high accuracy mode "to actually work" does not require WiFi. GPS provides better location accuracy (~5m) than WiFi location (~25m) regardless of whether WiFi is enabled. That is why it is called high accuracy. WiFi location is much faster than GPS, but not as accurate. For many applications, it may be sufficient to know what city you are in but not what street.


Cannot hard reset Huawei P9 (Reset failed) Recently my Huawei P9 somehow got updated to EMUI 5.0, and everything was going well except the updater setting and camera app was gone and the flashlight would not turn on. I decided to backup my data and perform a factory reset. However, the reset failed and when I turned it on the only keyboard installed was Google Voice Typing and I coudn't use it because I'm Asian and it woudn't recognize what I said. I tried skipping all the steps but it seemed to be stuck at "checking info". After countless times of resetting it i found out I could connect to wifi when I reset it from eRecovery. After doing so, I installed a keyboard using the built in SD card. I tried to use ADB but it only managed to connect once and I made a typo and I cound't connect again. I tried rolling it back but I simply coudn't get past the factory reset stage. Any help would be appreciated, thanks in advance.

Edit: I forgot to mention that I unlocked the bootloader and flashed TWRP onto my device(though I'm not sure if the failed reset removed it).

Turns out I just had to skip the intermediate package and jump to the stock firmware.

EDIT: On the official page, to downgrade, it states to flash an intermediate firmware. The fix was to simply skip it and flash the old one.


How to get rid of ads popup? Possible Duplicate:
  Is this red star icon malware? How to get rid of it?

Recently I often get the popup ads like the snapshot as below.

I wanna get rid of it. Please help!

Those are Airpush ads, and the only way to truly get rid of them is to remove the app that is displaying them.

The other way to get rid of them, is to use the airpush opt out system to opt out of airpush ads, this however has been reported to not work by loads of users.

As such, the only way to truly get rid of them is to remove the app that is using airpush - uninstall apps you have recently installed, sequentially, until they are removed, or long press on the notification and select the App Info button that is displayed. This will take you directly to the app's settings page. (This is only available for Android 4.1 plus).


Why each android application runs on a different Dalvik VM process? I have read that each android applications runs on a different Dalvik VM process (all forked from zygote).

I also read that these VMs are really lightweight and use copy on write buffers and all that, so far so good.

But, I also read that this was not done for security reasons (e.g. isolation) - in fact dalvik vm should not be considered a security boundary, says Google.

So my question is this: Why each process has to run on a different VM?

In Android, every application runs as a separate user. In the Linux kernel, each process is owned by a single user, therefore it is not possible to run multiple Dalvik applications on a single Linux process.

The overhead of running multiple Dalvik VM instance is lightweight because Linux fork() system call is copy-on-write, a write to a shared COW page will cause a "page fault" and that page will be copied; so even though most of the VM's memory region in the RAM is shared there are no "shared state" between VMs.

Forking processes provides only state isolation, but not privilege isolation.

  dalvik vm should not be considered a security boundary

That is because the VM cannot enforce a security boundary. The VM is running on user mode (the same mode as the program it's executing), which means a bug in the VM might allow the application to modify VM state in a way that is not intended; the kernel, however, runs in privileged mode and can enforce security boundary.


How to prevent Google aggressively associating my account to my searches? I understand they can access my searches when I'm logged in, and of course know the search terms I use, but how can I prevent them to logging searches to my account when:

I'm not logged in
and in private mode
my account has search history turned off already (updated thanks to Izzy's answer)

I'm on Nexus One with CyanogenMod 7, using stock browser with no patches or add-ons.

Steps to reproduce:

open browser
enable private mode
clear all cookies
search for "asdf unique search"
close tab
clear all cookies/history/cache
exit private mode
close browser
open Google search
type "a"

Expected behaviour: Google knows nothing of my search
What happens: it autocompletes "asdf unique search"

Also, all my Google Accounts on this phone have history.google.com turned off.

Is there any way to stop this happening?

First, you can delete your search history:

  Visit your Web History page at https://www.google.com/history or click the gear icon gear icon on the upper right corner of a search results page, and go to Web History.
  Click the gear icon gear icon again on the upper corner of the Web History page, and go to Settings.
  Click the delete all link.
  Click the Delete all button to confirm.

Next, you can turn off your Web History completely (same source):

  Visit your Web History page at https://www.google.com/history or click the gear icon gear icon on the upper right corner of a search results page, and go to Web History.
  Click the gear icon gear icon again on the upper corner of the Web History page, and go to Settings.
  Click the Turn off button next to "Web History is on." To start keeping track of your web search activity again, click the Turn on button.

So now you have deleted all past sources, and prevented new ones from being created. Hopefully.

Further, Turn off search history personalization gives you details on how to opt-out of "Signed in searches" and "Signed out searches". For the latter:

  Visit google.com/history/optout when not signed in to a Google Account. (If you see the Google homepage, try visiting the link again.)
  On the resulting page, click Disable customizations based on search activity. (Because this preference is stored in a cookie, it'll affect anyone else who uses the same browser and computer as you).

Further readings

HOWTO turn off Google's search-history logging and erase your stored history
How do I view, edit, and disable Google search History?
Defending your secrets from Google's prying eyes: The simple three-step solution that keeps your browsing history private
Google search: "google disable search history" (all the above is from the first results page, btw ;)


How do I export my Google Fit data to iPhone and keep it in sync in the future? I have used Google Fit on my Android phone for a while, and recently switched to the iPhone. How do I import my step counts and other fitness data into Apple Health on the iPhone from Google Fit?

Are there cross-platform cloud services that store this data in the cloud and have both iOS and Android clients so that I don't have this problem again the next time I switch phones?

I posted the same question on apple.stackexchange.com to get answers from iOS users.

To answer the first part of your question - the Android part:

You export your Google Fit data by going to Google Takeout.  It is not exported from within the Fit app itself.

Takeout is part of Google's Data Liberation project.  It enables you to download a copy of your data held by Google and attached to your Google account.

The Fit data can be downloaded in TCX or CSV format.


Where is my storage? I have 12gb on my phone storage, but only half is accounted for. How can I reclaim my storage?

My phone is a OnePlus 1 running CyanogenMod. I get it that the extra space is taken by some system files or cache. The amount of space used by the system keeps going up (Half the storage space now) and I want to figure out a way to clean this. I tried several "cleaning" apps with no success.

Storage (click image to enlarge)

Update: disk usage shows me 4gb used by system, no details or options to delete. Any idea how to reclaim this space?

It doesn't usually add up properly.  Once you take into account system data, the OS, cached data (from apps, email clients, web browsing etc) it goes down pretty quickly.  Although it's not normally that far out!  What phone are you using?


Can I flash Nexus 7 with Odin? Current status

Device issue

I have a Asus Nexus 7, I can't flash anything with fastbootbecause all flash procedures I have read need to unlock (using fastboot oem unlock) or mount /cache partition and for some reason when I try something I get freezed mounting /cache partition.

More details about this please read: Nexus 7 Error: Failed to mount /cache, which still UNSOLVED.

Asus support

I asked to Asus Support Service (in USA and Mexico) and they answer that this device do not have support.

My claim

So I want to try to flash using a tool like Odin. Maybe it can solve my problem (now I have an expensive paperweight).

OEM device-info? I found plenty of confirmation of what I suspected which is a corrupted bootloader. Look at Google issue here, here, and here. OK what you need to do is.

Download a factory OTA for your device.Here is a collection of OTA's but verify md5 to be sure.
Take OTA for the OS you currently have get the upgrade. Based on your other post recovery picture it's KK 4.4.4 KTU84P to LR50
Sideload the next OTA with ADB command.

  adb sideload 0xxxa.signed-nakasi-version-from-version.0xxx9.zip

It should start to load once complete reboot. Don't worry with an official OTA your bootloader needs to be locked.

Repeat OTA sideload but this time from LR50 to LR51.

This should get you back up and running. If somethings off then the OTA should abort. If you need a debugging script refer to first here reference and check with with csm.hrm's example.


How to update Google Play Services without having a Google account? I have installed an app which apparently requires a newer version of Google Play Services. How can I upgrade these services to a newer version without having a Google account?

This is on Android 4.4.2.

You will need to goto a 3rd party website that hosts Google apps and download the newest (for your device) version. The one I use is  http://gappsandroid.blogspot.com/ , you can download EVERY single Official Google app.


Xperia M dual stuck at boot screen after unlocking bootloader! Help needed it's urgent. So I have unlocked bootloader successfully via fastboot.
Everything went fine until the end without any error. So I disconnected the device from PC and rebooted it and now it is stuck at boot animation forever. It's the only phone I have now. Any suggestions?

I've solved my problem for myself by re-locking the bootloader and then repair the device using Sony PC Companion. Device is again in mint condition ;)
I'll add a supporting link later.
Support links-

(1) How to get into recovery mode in Xperia devices?
(2) How to repair software using Sony PC Companion on Windows and using Mac Bridge on OS X?


How to access /storage/emulated/10 (multi-users env) in adb shell on Android 9+ without root access? I have two Android system users configured.

$ pm list users
Users:
    UserInfo{0:Owner:13} running
    UserInfo{10:security space:13} running
    UserInfo{999:XSpace:800010} running

When the mobile is running at Android 8.1, I can access the secondary user's space /storage/emulated/10 easily in adb shell.

But after I upgrade to Android 9, I can no longer do it:

$ ls /storage/emulated/10
ls: /storage/emulated/10: Permission denied

Any ideas how I can access my second user's space in adb shell?

Btw, my /sdcard/ always points to the first user's space /storage/emulated/0 at adb shell regardless what my current user is at mobile UI. The adb shell connection remains the same when I switch users at mobile UI too.

When I switch users at mobile UI level, my adb connection remains the same. And I do see the current user changes with the following command:

$ dumpsys activity | grep mCurrentUser
    mCurrentUser=0
$ dumpsys activity | grep mCurrentUser
    mCurrentUser=10

WHY IS ADB DENIED ACCESS TO MULTI-USER STORAGE?

Access to /storage/emulated/10 is denied from adb shell due to this change in Android 9:

  Add "default_normal" support to vold.
  This new flag isolates each user on a multi-user device for security reasons.

What the mount option default_normal does in sdcardfs is explained here:

  The default_normal option causes mounts with the gid set to AID_SDCARD_RW to have user specific gids, as in the normal case.

The whole story is about Android's filesystem emulation in order to have a permission-less directory (/sdcard) which makes file sharing among multiple UNIX users (apps) possible. It's achieved through mount namespaces and different VIEWs of /data/media mounted in /mnt/runtime/. Apps belonging to secondary as well as primary user have isolated mount namespaces. For details please see What is the “u#_everybody” UID? and What is /storage/emulated/0/?.

  Btw, my /sdcard/ always points to the first user's space /storage/emulated/0 at adb shell regardless what my current user is at mobile UI.

For all native processes running in root mount namespace (including adbd), /sdcard is a symlink to /storage/emulated/0 and /storage/emulated is bind mounted from /mnt/runtime/default. The device owner's (User_ID: 0) files in /storage/emulated/0 have ownership root:sdcard_rw (0:1015) and permission mode 0771, while secondary profile/user's (say with User_ID: 10) files in /storage/emulated/10 have ownership 0:1001015.

It means that non-root processes can read the directories only if they are members of supplementary groups: 0001015, 1001015, 11001015 and so on, "others" can only traverse the directories. Since adbd is member of only 1015 GID, it can read only device owner's files, not of secondary users.

However up to Android 8 there was an exception to the above rule: to all the processes running in root mount namespace (non-app processes), sdcardfs always returned the directories /storage/emulated/[N] owned by GID 1015. So adb was able to read these directories. However the exception has been removed in Android 9 using mount option default_normal.

HOW TO ACCESS MULTIPLE-USERS FILES FROM ADB?

WITH ROOT ACCESS:

You can mount the emulated filesystem without default_normal option:

~# umount /mnt/runtime/*/emulated
~# /system/bin/sdcard -u 1023 -g 1023 -m -w -G /data/media emulated

Or to make changes permanent, replace sdcard binary with a shell script:

~# cd /system/bin/; mv sdcard sdcard.bin; touch sdcard
~# chown 0.2000 sdcard*; chmod 0755 sdcard*
~# chcon u:object_r:system_file:s0 sdcard
~# chcon u:object_r:sdcardd_exec:s0 sdcard.bin

/system/bin/sdcard (remove -i argument passed by vold):

#!/system/bin/sh

set -- $(echo "$*" | sed 's/-i //')
/system/bin/sdcard.bin $*

After reboot you should be able to read files in /storage/emulated/10 from adb shell.

WITHOUT ROOT ACCESS:

On Android 9+ filesystem level access to secondary users/profiles is not possible from adb on user builds of ROMs (i.e. without root). Only interaction through adb commands which support --user option (am, pm, content etc.) is possible. Documented in What’s in Android 9 for enterprise apps:

  "To help keep work data in the work profile, the Android Debug Bridge (adb) tool can’t access directories and files in the work profile."

If the files owned by secondary users are accessible to primary user (through adb or any other means, except through Device/Work Policy Controller app), it breaks the intended isolation between users/profiles which is controlled through Android APIs. See more details in How to share files between regular account and work account?

It should be noted that Android Debugging Bridge (adb) is meant to be used by developers for debugging, not by end users. That's why a fully-managed device owner can completely disable adb.

There's a suggested workaround to transfer data with secondary users/profiles as explained in Testing Multiple Users:

  "adb (or more accurately the adbd daemon) always runs as the system user (user ID = 0) regardless of which user is current. Therefore device paths that are user dependent (such as /sdcard/) always resolve as the system user."
  ...
  "Access to /sdcard paths of secondary users is denied starting in Android 9."
  ...
  "Because adb runs as the system user and data is sandboxed in Android 9 and higher, you must use content providers to push or pull any test data from a nonsystem user."

For instance to transfer test.jpg file to /storage/emulated/10/Pictures/ run the following commands from adb shell:

~$ content insert --user 10 --uri content://media/external/images/media/ --bind _display_name:s:test.jpg
~$ ID=$(content query --user 10 --projection _id --uri content://media/external/images/media/ --where _display_name=\'test.jpg\' | grep -o '_id=[0-9]*' | cut -d= -f2)
~$ content write --user 10 --uri content://media/external/images/media/$ID < test.jpg

However it's not a practical approach for bulk data transfers on a regular basis.


Does Samsung Galaxy Grand Support USB OTG? Hii Everyone iam Using Samsung Galaxy Grand (GT-I9082) Duos Model and it is running with Android 4.2.2 Jelly Bean Version. I Just Wanted to know whether my device supports USB-OTG Cable Support For Connecting USB Drives i have Searched for the same in google and found different answers like this
video from YouTube is saying that my device doesn't support OTG and in other site here saying that my device will support OTG

Please Help Me to know whether my device supports OTG or not

Thanks in Advance

The Galaxy Grand kernel does not support OTG from what I can see. There may be a custom Kernel to support it if you are willing to root etc, the only one I found was for 4.1.2 and abandoned due to huge number of bugs.

Rooting will void your manufacturer/carrier warranty and is not for the wary or anyone who can't risk losing all data from their device.

Try XDA developers for your device and see what custom kernels are available. As it stands you don't have that option (unless something in the firmware has changed in the last few months). This XDA thread seems to confirm there isn't a kernel you can use for this I'm afraid.

This XDA thread has an experimental kerlel, which may help, but as previously stated there are warranty, and functionality issues with any custom kernel.

IF you decide to root your device, this link has a how-to guide which you use at your own risk!

Read, and read some more before you decide. Back up everything and follow the steps to the letter. Ensure that you have the EXACT same device as in the thread also.

DISCLAIMER: ROOTING YOUR PHONE WILL PROBABLY VOID YOUR WARRANTY FROM BOTH THE CARRIER AND THE MANUFACTURER. IF YOU DO NOT WISH TO ACCEPT FAULT FOR ANY ADVERSE EFFECTS OF ROOTING, THEN DO NOT RISK IT. HERE BE DRAGONS.


How can I change the voice used for the Navigation app on Android? I love the Navigation app on Android. The voice it uses is fine, but I'd like a little variety. I'd settle for it using the British voice that's available on the phone. However, I've changed the Text-to-speech setting on the phone for language to British, but it hasn't changed the voice used by Navigation. There is not a setting in Navigation for the voice. Assuming it uses the "locale" setting, my only options on the Droid are "English" or "Español".

Am I stuck? Does this require root?

In case it matters, I'm still currently on Android 2.2.

This is apparently not possible with Android 2.2 on Motorola Droid.


Can Tablets deal with USB Sound Cards? I've found this thing on eBay. It converts the USB to a microphone input and a jack-speaker output. I'm just curious, if my tablet is compatible with it as the description doesn't explicitly mentions it.

My device is rooted if that makes any difference.

Extremely doubtful, to the point where I'm confident saying no, it wouldn't work.  It would require either the OS dev team having included Linux drivers that would work with the USB device, or the USB device manufacturer having released Android-compatible drivers that you could install on your tablet yourself.


sharing windows 7 cable internet connection to nexus 4 via WiFi I am connected to the internet via an ethernet cable on my laptop pc. I want to share my PC's internet connection with my Nexus 4(Android 4.4.2).

I have created an ad-hoc network on my windows 7 pc but this network doesn't display in the available networks on my Nexus 4.

How can I share my PC's internet connection with my phone?

there are some ways to reverse tether, and the simplest one is to use Connectify. Free version is limited in uptime, the full version has no restrictions. It's not even hard to convince the program to allow all functions, btw.


STAMINA / Ultra STAMINA mode on Marshmallow? Since the update to Marshmallow, I can't find the STAMINA or Ultra STAMINA modes in the options or app drawer.

While there now is a option that seems to do a equivalent of the STAMINA mode, I presume it have been superseded by Android itself, but what about Ultra STAMINA?

The device I use is a XPeria Z3C, which should be equivalent to a XPeria Z3.

Stamina Mode removed in Marshmallow

Sony announced in their beta rollout for Marshmallow

  The Marshmallow version of Android has its own smart solution for managing power consumption (Doze and App Standby). These functions are integrated directly into Android 6.0, which made Stamina mode redundant. In other words, Stamina mode was removed from M.

However, Stamina Mode is considered better than Doze mode ( for details see earlier link) :

  Doze mode requires your phone to be geographically stationary (ie. sitting on a desk and not in your pocket).
  Doze mode can only be interrupted by high priority GCM messages. Your favorite app’s developer didn’t set a notification as high priority? Too bad, you have to wait until the next maintanence window to be notified.
  Doze mode’s white-list does not truly exempt an app from all restrictions.
  Doze mode cannot be disabled. Having issues with notifications on Android 6.0? Too bad.

Stamina and Ultra Stamina Mode Return

Stamina Mode users resentment at this perhaps forced Sony to reconsider and Stamina Mode and Ultra Stamina Mode have been announced as below:

Xperia Z5 series
Xperia Z2, Z3 series

Not as good as original Modes

But the Stamina Mode is said to be a watered down version and is more akin to stock Android Power Saving mode ( mainly because whitelisting of apps isn't possible):

  Presumably, Sony felt immense pressure from customers who wanted STAMINA back, but also did not want to break Google’s terms and conditions for using Android 6.0 Marshmallow. Quite where Sony will go now with their device software remains to be seen, but as it stands, the new STAMINA mode is simply not as effective or as usable as the old way.

As of now I haven't come across any mention of Stamina or Ultra Stamina Mode in Android 7


How do I make /sdcard link point to external SD Card on Android 4.4.2? I've got a Samsung GT-I9505 phone with Google Edition Rom installed. As my phone comes with 16Gb internal storage, I bought a 32Gb microSD. However, the phone still uses emulated SD card to store all data.

I looked through the filesystem and found two places which might be of interest:

  symlink: /sdcard -> /storage/emulated/legacy
  symlink: /storage/sdcard0 -> /storage/emulated/legacy

My actual SD card, however, is at /storage/extSdCard

As far as I get it, apps use the first symlink to access SD card. I tried to use terminal emulator with root permissions to make these symlinks point to the right direction, however, it says that the filesystem is read-only.

This is where I got stuck and ask for your help to make my phone use the right SD card.

As far as I know, you can change this by editing /system/etc/vold.fstab, but if it doesn't have what you need, you might have to tamper with init.rc inside boot.img.

I'm not sure if what you're aiming to do is safe though, what with the recent switch to fuse sdcards.


Session logout on device with multiple users? There is an option to switch between users, but there isn't an option to logout from an active user session.  The background apps and services for inactive users (once logged in and switched out) continue to run draining the battery.

The only way i think, is to reboot the device and not login the user.

So, is there any way that the owner can force subsequent inactive users to logout of their session? I have superuser access to the owner with android-5.0.2.

In a terminal app on Android, enter (requires root access) :

su
am stop-user USER_ID

E.g. For a Guest user, its USER_ID in my device is 11 so the command would be am stop-user 11.

am stop-user doesn't process multiple input so you've to execute the command for every secondary user which you want to pause.

This is bit different from restarting the device. If you check am's usage you would see,

am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.

As said, it simply pauses all the activities associated to that user account, so whenever an explicit start or switch is provided your session would resume rather than starting from scratch.

For confirmation that the user indeed has paused or is not running, see my answer for How to find out currently running user name/ID from ADB?

Briefly, pm list users or dumpsys activity would tell you whether the user is RUNNING or SHUTDOWN. The latter command is better. If the user-session  is indeed put on halt by am stop-user, you would see mState=SHUTDOWN for that user. However, if the user hasn't been activated even once since the reboot, you wouldn't see any of its entry.


How to upgrade Android 2.3 to 4.0 on ARM 11 based Tablet? I have tablet which has a IAMPX200 Processor and a M718 Main Board.

The current OS is Android 2.3, and I want to upgrade it to Android 4.0. Is it possible? If yes, please give any suggestions.

Simple answer: No.

ICS requires an Armv7 processor. Arm11 processors are armv6, as such your tablet doesn't support ICS.

however, a ROM maker may have ported it to your professor and hardware - I suggest you check forums such ad XDA Developers.


Connecting ZTE Axon 7 to Ubuntu via ADB - doesn't work with some cables, does work with others I've edited the question title and I'm adding this prefix. The problem of my computer (via ADB) not seeing my phone at all seemed to entirely depend on how I was physically connecting the phone to the computer. Via three different USB-A (old big rectangular plugs, computer side) to USB-C (phone) cables, the phone remained invisible. When I plug any of the same USB-A to USB-C cables into an old USB "extension" cable (USB-A female on one end, male on the computer end), everything works fine.

I'm trying to get my ZTE Axon 7 to connect to an Ubuntu 16.04 installation via ADB. I've actually done this before, but for whatever reason it simply does not work now.

The relevant output from lsusb is

Bus 003 Device 032: ID 19d2:0306 ZTE WCDMA Technologies MSM

I've tried the phone in every USB connection mode it offers, all with the same non-operational result.

From the Ubuntu machine, I run

adb kill-server
adb start-server
adb devices -l

The phone is plugged in via its stock cable (and I've tried two others). Running adb devices lists nothing.

The "USB Debugging" option is enabled on the phone. I've restarted the phone multiple times.

Again, I've done this before, and it worked without incident. I'm probably just missing some important step.

I'd connect with MTP if I could, because all I need to do is transfer files, but it doesn't work; mtpfs just hangs indefinitely when I start it. I've read that Ubuntu should be able to deal with MTP without any additional tools, but I have no idea how that's supposed to work. When I plug the phone in, here's what I get in kern.log:

Apr  5 23:02:44 turandot kernel: [ 7858.845536] usb 3-2: new SuperSpeed USB device number 34 using xhci_hcd
Apr  5 23:02:44 turandot kernel: [ 7858.862996] usb 3-2: New USB device found, idVendor=19d2, idProduct=0306
Apr  5 23:02:44 turandot kernel: [ 7858.863005] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr  5 23:02:44 turandot kernel: [ 7858.863009] usb 3-2: Product: Android
Apr  5 23:02:44 turandot kernel: [ 7858.863013] usb 3-2: Manufacturer: Android
Apr  5 23:02:44 turandot kernel: [ 7858.863016] usb 3-2: SerialNumber: 293baffd
Apr  5 23:02:44 turandot kernel: [ 7858.864244] usb 3-2: Enable of device-initiated U1 failed.
Apr  5 23:02:44 turandot kernel: [ 7858.864594] usb 3-2: Enable of device-initiated U2 failed.

I've tried ADB with my older Moto X Pure, and ADB can connect to it without issue from the same Ubuntu laptop.

I'm really not sure what the next step is; I've followed the exact same notes I used last time I transferred files to the Axon but it absolutely doesn't work now.

edit — well progress. I had in the past been plugging my phone into the computer via a fairly old USB "extension" cable. Today I was plugging the USB-C to USB-A cable directly into the laptop. When I returned to the old extension cable, the phone was recognized. I'll leave the question here because maybe somebody knows why that might happen.

I found following this article https://www.howtoforge.com/tutorial/how-to-connect-your-android-device-on-linux/ to setup your linux installation for mtpfs file system.  In a nutshell:

1) On your Ubuntu Linux:
    sudo apt-get install mtpfs
    sudo mtpfs -o allow_other ~/mnt
2) On your phone:
   Under Settings -> Connect to a PC, select "Media Device MTP"

This should immediately allow connection (with whatever cable in usb) to your Ubuntu 16.04 (which I use with my Axion ZTE 7 Mini) and allow access to phones internal storage and SD storage with file manager.


Overwritten Recovery Partition on Moto G Falcon My 2013 Moto G (falcon) was running Lineage fine, but I decided to 'fix it'!

OK - I wanted to try another build, but in flashing I've overwritten TWRP on the recovery partition, so I can't do anything now. I've got ADB installed on my Linux laptop.

I'd be grateful for any ideas, please.

Jim

You have two options to restore TWRP to the recovery partition.

The first option, and probably the most common, is to reflash it with fastboot.

First, make sure you have fastboot installed (adb does nothing here), and then download the latest TWRP image file for your device from the official site: https://twrp.me/motorola/motorolamotog2013.html

The file you are looking for is twrp-3.2.3-0-falcon.img and place it in a known location.

Now shutdown the device completely, and hold POWER and VOL DN to start the bootloader, then a USB cable from your phone to the computer.

Open a terminal window, and navigate to the directory containing the TWRP image file, and enter the following command:

sudo fastboot flash recovery twrp-3.2.3-0-falcon.img

Enter your password, then wait for the process to complete, and use the volume keys to select Start Recovery, and press Power to start TWRP.

The other option if you have a bootable, rooted device, is to install the official TWRP app, and install it from there.


How to set gmail sync frequency? I want to know how often Gmail checks for new emails because I need longer battery life. How can I see/set this? I want to set it so that, for example, it checks for new mail every 10 minutes and never more often than that.

I use this notification application on a Samsung GTi5800 that has Android 2.1update1

First, Gmail provides push email.. means, you get emails exactly when they arrive (if you are connected with internet).

Second, Gmail doesn't have dedicated sync module. It makes use of global Google Services Framework and Account sync module. You can turn off background data and Auto Sync from Accounts and Sync setting. When these are ON, sync is carried randomly.. but it runs when you connect to internet or turn these settings on.

To save battery, you can use toggle widgets (like Widgetsoid) to turn those settings on/off manually. Some provides way to force sync, too. To automate it, use Tasker app.

If your prime goal is to save battery, I would recommend you to use, Juice Defender. It takes care of all these effectively.


Can't install or update apps Whenever I try to install or update an app, it downloads to 100% and then just sits there. It won't proceed naturally from a completed download to app installation.

Sometimes, if I leave it alone for awhile (several hours - using the phone, but not bothering the installation) it'll suddenly finish the install. However, this is undesirable and unreliable.

I've tried all of the following several times alone or in conjunction with one another, and at least once in the following order:

Stop all pending updates/installations
Clear Google Play Store data
Disable Google Play Store
Force Stop Google Play Store
Clear Google Play Store cache
Reboot the phone
Enable Google Play Store
Clear Google Play Store data (again)
Attempt only one installation

None of this fixes the problem. The single installation still downloads to 100% and then just sits there. It doesn't matter which app or update I'm trying.

I'd much rather avoid resetting the phone if possible. Is there something else that I can do to fix this?

Platform:

Samsung Galaxy S8+
Android 7.0
Google Play Store 7.8.36.P-all

Go to the Home screen menu and touch on Settings.
Browse for the applications Manager.
Touch on it to run it. Once it opens, change the tab to ‘All’ and then browse for the app “Google Play Store”.
Press once on it to display its app information. Here, you will get the option “clear data”. Touch on that entry then restart Google Play Store.

If this doesn’t solve your problem, proceed as above but touch on “uninstall updates.”
Hope this works for you:)
I needed to restart my phone for this procedure to work.


Is it possible to have multi-android version in your android device? Similar to PC having multiple OS in which you can select during boot up. I was wondering, for the time being, is it possible to have two android version in a android device?

Example: A android device with both android 2.2 and 4.0 installed. During boot up, user can select which one they wish to choose.

So, suppose there is a Apps that cannot be run on android 4, I can just switch to android 2.2. Same goes as vice-versa - if an apps can only be run on android 4, I just switch to android 4.

There's an app called Boot Manager (paid | free) which will allow you to install multiple roms on your device.  You select the ROM you wish to use whilst in the main OS and the application modifies the boot mechanism to point at the specific ROM.  It's only available for some devices though, I know that Samsung phones are definitely supported.


What is meant by the Nexus S being a "developer Phone"? I have heard lots of times that the Nexus S is a "developer phone". What exactly does it mean?

It primarily means that the boot loader is unlocked so it is much easier to upload ROM's for testing. Additionally the default installation will be the original AOSP version of the code and include root access to the phone's software.

It does not mean that the hardware is a "test" model. It's a fully developed phone. What it doesn't have is more important than what it does have. What it doesn't have is the additional locks and proprietary junk that a carrier modified phone normally has.


Turn off syncronisation of contacts in LineageOS / CyanogenMod I want to use my phone with the google calender, but I don't want to upload all my contacts from my phone to google.

How can I achieve this?

I said in the contacts App under Settings that the App Synchronisation is off, but then I deleted some test-contacts online in Gmail and they were also deleted on my phone.

I also tried the App "Root Firewall" and forbin access to internet to the contacts app, but still, there was this sync going on.

How can I achieve this in CyanogenMod? In the standard Android 4.1 it worked fine: there was nothing synced.

Or do I need another contact app to achieve this?

In the syncronisation screen you have to turn Synchronisation on global. Only if that is on you have checkboxes next to each category inside the google account. you can uncheck the box at Contacts then.

If the global sync is OFF you don't have this option.

I think it is a bit dangerous the first time you enter that menu, because you have to be sure your internet connection is disconnected. Otherwise the first time, when all sync boxes are still ON it will start right away to sync everything before you have the chance to disable the sync-box for contacts.

If you are offline you can setup everything like you wish and then it's fine.


Can I share my wifi connection to wifi tethering? Can I do it on my android? I seem can't find any reference for it.

Tethering is a feature that is usually offered by the carrier for an additional fee.  You should check with your carrier.  Also it would have helped to include which android device you have.....


Storage space issues I've changed the default install location from my Galaxy 2 but now I can't use the apps because it says:
"to open Facebook, you need more free storage on your phone. Please uninstall applications or remove other media from your phone to free up additional space"

I literally have deleted everything in my phone to try free up space... apps, messages, media

About to throw this phone against the wall...

What are my options here to try and get apps?

Using the same steps you applied, Set default  InstallLocation to 0 which means the apps will be defaultly installed whether to phone memory or external SD card or set it to 1 to install apps to phone memory, but honestly I don't believe It's effective way since I didn't notice a big difference after applying that, but
If you root your phone you will be able to use Link2SD Plus app. (they call it Life Saver for those phones that come with small phone memory built in) which incredibly move the whole installed apps to SD using Linking method which makes the system thinks that the files of app you installed are still stored on phone memory but in fact they're in External SD memory saving for you so much memory of your phone. also you can set the default install location so easily through this app or other app requires root "except for some root apps even if you set the installation location to external they will be installed to phone memory eg. "BetterBatteryState" you will have to move them manually :) Or you can force apps to be moved to External using This app or Titanium Backup pro that both need Root privilges to work but Just a part of the app will be moved In other words, Link2SD is your best choice if you want to save a big size of your precious phone memory which obviously cannot be increased.


How to resize Android screen in VirtualBox with UEFI? I have 64-bit Android 7.1.2, obtained from android-x86_64-7.1-rc1.iso. I installed it on VirtualBox (latest version, 5.1.2.8) with UEFI mode. (The host is 64-bit Linux Lubuntu 16.04.)

The installation all works fine apart from the fact that the screen is fixed at 1024×768. The various sizes given in the VirtualBox menu > View > Virtual Screen 1, which range from 640×480 to 1920×1200, are all greyed out.

I would like to be able to resize the Android screen, making it both smaller and larger, and even full-screen if possible. Sadly, the usual method, Guest Additions, isn't supported on Android.

I've tried following various instructions. The vast majority seem to be valid only for non-UEFI installations, although I tried them anyway. The only one for UEFI that I found doesn't work for me.

The methods that I have found include:

Issue the command:
vboxmanage setextradata Android CustomVideoMode1 1152x864x32
(this obviously would work only for that one resolution).
Adding various commands to Grub, either at boot or permanently in EFI/boot/grub/grub.cfg:

set gfxpayload=keep
set gfxpayload=1152x864x32
vga=ask
vga=834

I am at a total loss how to proceed. Can you help, please?

The following steps should resolve the issue, although I can't test on VirtualBox.

Temporarily:

Upon booting the virtual machine, press F10 once the boot screen appears
Press e to edit the boot command
Navigate to the end of the last line and press Enter
Press Tab to insert indentation, and type in:

set gfxpayload=1440x900

The resulting boot command should now be:

setparams 'Android-x86 2017-12-16'

    search --set-root --file /android-2017-12-16/kernel
    linux /android-2017-12-16/kernel quiet root=/dev/ram0 androidboot.s\
elinux=permissive buildvariant=userdebug
    initrd /android-2017-12-16/initrd.img
    set gfxpayload=1440x900

Of course, the actual kernel date and time, as well as the resolution you want to set, should differ.

Press either Ctrl + x, or F10, to boot.

Note that there is no need for the trailing x32 in the resolution value. But from my testing, it should work with it as well.

Permanently:

(needs root)

From the Terminal Emulator, type in su to gain administrative privileges
run the following commands:

mkdir /mnt/boot
mount /dev/block/vda1 /mnt/boot
vi /mnt/boot/boot/grub/grub.cfg

from the Vi editor, press i to enter Insert mode
navigate to the end of the last line before the } symbol from the first section (should be line #7)
press Enter and do Step 4 from the "Temporary" part of my answer
Press Esc to exit Insert mode
Type in :wq and press Enter to exit Vi
Back in the terminal emulator, execute:

umount /mnt/boot

optionally, also execute rmdir /mnt/boot.

It's done.

Let me know what problems you were having, exactly, if possible. There is a chance that your virtual machine does not have enough Graphics Memory to support the resolution you want. Check this answer, also from me: https://android.stackexchange.com/a/160371/57668.


Will encryption encrypt my "internal sdcard" (personal data)? First, a note. This question stems from the big confusion that are terms like internal storage, internal sdcard -- at least to me -- and the fact that factory reset, which claims to "erase all data from your phone's internal storage, including [...] music, photos", doesn't touch my personal data (data in the internal sdcard, like camera media and WhatsApp conversations) at all. I don't use removable SD cards, by the way.

When I say internal sdcard, I refer to /sdcard or /data/media/0, which are equivalent in my Samsung I9300 Galaxy SIII running CM11 nightly (KitKat).

Okay, the question: will encrypting actually encrypt the entire internal storage including internal sdcard and all the rest (entire root filesystem) or will it encrypt only the data which would be affected by a factory reset (which seems to me to be only the /data/data directory)?

Short answer: no, the emulated SDcard storage is not encrypted.

I believe I am in a similar situation as you. I have a HTC One S4 ("Ville") here which also lacks an SD card socket extension, so the phone is partitionned in a way to make it look to Android that there is an actual sdcard in there. It is mounted in /sdcard and there's a separate /data partition that holds the usual private data (contacts, sms, etc).

Following the Encrypt phone procedure from Cyanogenmod 12.1, only /data is encrypted but /sdcard is accessible without a password! That is, to say the least, a little disappointing. I am not sure it is absolutely inevitable: I suspect that the internal sdcard wasn't encrypted because it was formatted as FAT.

I was able to reformat the filesystem as EXT4 by mounting it on my laptop and re-formatting, at least. Unfortunately, vdc cryptfs enablecrypto inplace found that the phone was already encrypted and didn't attempt to encrypt the SD card. I am still at a loss as to how to encrypt that part of the phone and so have resolved to avoid storing too sensitive data on that partition.


Mobile network settings - Not enabled for modifications (Greyed) I bought a zte v7275 tablet

Device information

model number - ZTE V7275
android version - 4.0.4
kernel version- 3.0.21-perf-gc8726c4f
Flash ROM

which is likely to be locked to a single operator (vodafone, but I haven't tried it with vodafone sim card). Any way when I insert a different sim card and navigate to "Mobile network settings" section, I can see all the operator network related configurations are disabled (greyed). I know this particular modle of device is rare in use.

But I would like you to suggest best option I have, following are some of things I came up with

Install ROM to 4.1 , assuming operator lock, will be flashed
Install custom build Phone.apk for android 4.0.4 and repalce the existing  Phone.apk system app

Further can I know different stratergies can be used to disable the Mobile Network  Settings, so I can reverse it.

Thanks

If your device is locked to Vodafone (as you write), a different ROM won't change that. You will either have to use a Vodafone SIM, or have the device unlocked from the provider.

I'd suggest you first try whether the problem persists with a Vodafone SIM, to make sure whether a SIM-lock is the cause. Those network settings are also grayed out if you've got no SIM inserted at all (I've tried that on one of my devices) – so it usually means you don't have those services available because there's no accepted SIM card detected.


How to stop unwanted Nvidia Shield TV wake up? My Nvidia Shield TV wake up from standby mode undesirably (and wake up my tv).

So my first question: Is it possible to get a log to see what awakens it?

On a more empirical approach, I have noticed two behaviors somewhat contradictory and strange:

If I connect a wired gamepad, the shield tv wakes up more often.
Without internet access (but with a local network) the shield tv doesn't wake up

So, my other question is: what can I do to stop these wake up?

(My shield tv is rooted and I have sideloaded some apps, maybe it's related but I prefer to avoid a reset...)

Thank you.

try to shake your gamepad slightly to see if this action will trigger the wake up of you tv.
install the Greenify on you Nvidia Shield TV, which will show you the wake up relation, and also you can disable the wake up.
alternatively, if you found out the apps that wake up your tv, you can use ice box to freeze the apps.


HTC Desire Z key number two misbehave at times HTC Desire Z touch key number 2 (ABC) occassionally presses itself repeatedly without any apparent trigger. In such cases, I press the power button on/off to quieten it down. Is it a software or hardware problem. This happens infrequently but when it starts it is quite annoying as you cannot do anything with the keyboard as other keys do not respond to touch.

This is very likely to be a problem with the touchscfeen hardware. To test this, try installing a drawing/painting app from Google Play. Open the app, get into painting mode, and leave it for a minute. If you start getting paint appearing at the same point (where the 2 ABC soft key shows up), you know that part of the touchscreen isn't working. In the same way, try painting in the app and check whether any parts of the screen can't be painted on.

If there are any stuck parts of the screen, you can try giving them a wipe with a slightly damp, soapy cloth. Turn the phone off to do that, and make sure you dry the screen before trying to use it again. If that doesn't solve the problem, you're left with sending the phone back to the shop, or making a warranty claim, depending on how long you've had the problem.


How to rename catalog of ADW Launcher EX? In Setup Catalog option, I can only choose apps, but can't rename the catalog. Is there any way to rename a catalog?

The only way I've found to do this is to edit the XML file that stores the name directly. It should be at /data/data/org.adwfreak.launcher/shared_prefs/APP_CATALOG_Index.xml:

# cd /data/data/org.adwfreak.launcher/shared_prefs
cd /data/data/org.adwfreak.launcher/shared_prefs
# ls
ls
APP_CATALOG_1.xml       APP_CATALOG_Index.xml   adw_ex_preferences.xml
# more APP_CATALOG_Index.xml
more APP_CATALOG_Index.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="GrpName1">First Group</string>
</map>

Edit the value within the GrpName# tag that corresponds to the group you want to rename and then restart ADW Launcher. AFAIK there's no way to do it in the ADW UI itself (aside from deleting and recreating it, but that's inconvenient, too).


My phone is missing whatsapp communication What can I do to bring  back my whatsapp number? I was using  my friend  phone  to communicate  with my whatsapp number  and I forget to change and now she still have my whatsapp number and she continue to receive message.

If your WhatsApp account is registered on a different device, while using your number, you can easily reclaim your account, as long as you can receive text messages on that phone number.

Download WhatsApp on your phone, register your account with your number, and it will automatically close the account on your friends phone.

On a side note, if you're looking to transfer all your messages from your friends phone to your phone, you can transfer the local backup from that phone, to yours.


flashing jelly bean(4.2.2) on nexus 5(hammerhead) I am trying to flash jelly bean on Nexus 5 but didn't find any factory images , is it possible to flash the jelly bean(4.2.2) image generated by downloading & compiling the 4.2.2 AOSP source code

i tried running lunch command but didn't found the "aosp_hammerhead_userdebug" is there any other way to flash 4.2.2 on nexus 5

Its because Nexus 5 not came with Jellybean. It was Kitkat. That is why you can't find Jellybean factory images for Nexus 5. You may try to flash custom Jellybean ROMs(4.2.2) for Nexus 5 if available.


Unfortunately (any) app has stopped. What should I report? When one gets the ever popular "such and such" app has stopped, you get offered the option to report it. What are you supposed to say in the "report"?

You'll want to help the developer to help you.

mbanzon's answer mentioned that the developer will receive the stack trace of the error, but that only tells us what went wrong and where.

It does not tell us anything about the state the application is in: What was the value of that number, or what was the text that was entered in the text fields? And most importantly, what did the user exactly do to make the application crash?

The latter question is especially important so that we can reproduce the error, and help us understand why the application crashed under these circumstances.

So if you want to really help the developers, write down what you did, what you expected, and what you saw. For example:

  I started the app and pressed the button to go to the reports screen. Then I pressed the button to generate the report, and the app crashed. Interestingly, the screen was blank: there was no data visible.

If you don't like typing much, you can be short:

  Pressed button to generate report. Screen was blank.


Locating a bluetooth device in a room There is a bluetooth device out of sight in a room that is paired to my Android smartphone, and I can connect to it when I am close by. (It is a muted audio device.) Are there any methods to locate that device within the room with the use of the smartphone? Say, by dynamically measuring signal strength so that I can move the device around to see where it gets stronger.

Both App downloads, Android Studio( with Java), and other sorts of answers are welcome. (But AS is more appreciated.)

Not really, with a standard Bluetooth device and antenna, there's a lot of really big technical problems, and even physics is against you

You may or may not be aware of BLE and Bluetooth Beacons - there is a BLE Specification called Proximity that allows small bits of data to be sent as Bluetooth Advertisements. Devices can be calibrated and made to interpret these and the RSSIs etc and give a fairly reliable (depends) proximity

There are lots of libraries out there for working with them- and apps. I suggest taking a look at Radius Networks' Altbeacon library, it does all the maths and device specific calibrations that you would otherwise have to do yourself. All the big Beacon Manufacturers have their own though (Kontakt.io, Estimote etc)

Be aware, unless you have a directional mic, BLE should not be considered directional without using some kind of triangulation technique (otherwise you can just say "I am X meters from the device" without knowing if that was up, or behind or whatever)

Also be aware, it's incredibly open to being confounded by other sources of EMF and materials that absorb your waves.

Even more be aware, Smartphone BT Adapters vary wildly, they all log differently, have different nuances and react differently in different situations, but typically it's really good. Some devices like the Nexus 4 should not be used for BT, some hardware kink means the WiFi and BT don't effectively share the Antenna well enough and conflict (also I think the form factor just interferes too)

The best way to position a person or object in a room is by using a mixture of processed and aggregated readings from the device sensors and perhaps even some other hardware in the room. If you look at Google Maps, it doesn't wholly rely on GPS, just like indoor navigation using BLE Beacons shouldn't wholly rely on Bluetooth. Beacons just apply context,

Source: Microlocation developer


Can I Update my T-Mobile G1/HTC Dream so it runs Android 2 Can I Update my T-Mobile G1 (Also known as the HTC Dream) so it runs Android 2?  Is it possible to do this without rooting the phone?

No.  You must root your phone and install a mod such as CyanogenMod to get your phone running a semi-equivalent of Android 2.1+.  There is no stock rom for Android 2.1+ for the G1.  Additionally, if you do go with CyanogenMod, not all features are fully supported due to hardware limitations, such as LiveWallpapers.


Shutting down 2012 Nexus 7 without touch My 2012 Nexus 7's touchscreen isn't working. I'll probably take it for repairs next week. Is there a way to shut it down without touch. I can reboot it by keeping power button for a long time, but I am unable to shut it down. I don't think I have USB debugging enabled on the device.

Just tested on my Nexus 7 2012. When I hold the Power and Volume Up. It powers down. Had to hold the power button to get it to turn back on, So I can only assume it powered all the way down.


If I root my Android phone, will I lose all of my data? As the question title implies, if I root my Droid Incredible (or any Android phone), will I lose all of my data? I'm not interested in installing a custom ROM right now so will rooting cause me to lose my data? Also, which tool should I use to root the phone?

Edit #1: Based on a suggestion, I rooted my Incredible using Unrevoked, and I didn't lose any information.

Short answer: no

Long answer:

Rooting -- if successful -- doesn't change any of your data, it just gives you root access.

Now, if you reflash your phone's ROM -- something you can only do with root access -- then, yeah, you might lose stuff. A lot of people automatically associate rooting with switching ROMs, since rooting is required. But you can root, and then do nothing, if you want.

I'm so lazy, I rooted and installed a screenshot app; but it was so worth it. [Okay, not lazy -- I just don't have the need nor desire for much else, at the moment. But if I want to, I can.]

Caveat: anything done really, really wrong can screw things up. See: Are there any risks to rooting a device?


Recovering data from Mi 4c able to get only to fastboot my phone has fallen and it cannot boot. The only accessible thing is fastboot, but even there I cannot flash TWRP.
When I try to flash TWRP 3.1.1 or 3.1.0 I get:
>fastboot.exe flash recovery twrp.img
target reported max download size of 536870912 bytes
sending 'recovery' (21100 KB)...
OKAY [  0.483s]
writing 'recovery'...
FAILED (status read failed (Too many links))
finished. total time: 0.544s

The phone is unable to boot at all. So adb is out of question.
Additional info that may help:
>fastboot.exe getvar all
(bootloader) version:
(bootloader) token:OrhCgsF/c0ZJ0PDtn3UZAR4A
(bootloader) sec_boot:TRUE
(bootloader) variant: eMMC
(bootloader) secure:yes
(bootloader) version-baseband:
(bootloader) version-bootloader:
(bootloader) display-panel:
(bootloader) off-mode-charge:0
(bootloader) charger-screen-enabled:0
(bootloader) max-download-size: 0x20000000
(bootloader) partition-type:cache:ext4
(bootloader) partition-size:cache:       0x18000000
(bootloader) partition-type:userdata:ext4
(bootloader) partition-size:userdata:    0x683bfbe00
(bootloader) partition-type:system:ext4
(bootloader) partition-size:system:      0x78000000
(bootloader) soc_id:251
(bootloader) serialno:10adc264
(bootloader) kernel:lk
(bootloader) product:MSM8992
all:
finished. total time: 0.217s

From this message I believe the storage chip is done for but you never know.
The phone claims to be unlocked (it should be as I use custom ROM). Physically there does not appear to be any damage, but when battery is connected it does not start at all.
I wanted to use TWRP ability provide data through MTP. There is TWRP installed, but it was accessible by updater application where was option to reboot to TWRP. So TWRP should be already there. But when pressing volume down button during boot I get only to fastboot.
Is there any way how to get at least to my data or is the phone completely done?
EDIT:
Tried advice from Robert in comments to directly boot TWRP.
>fastboot.exe boot twrp.img
downloading 'boot.img'...
OKAY [  0.500s]
booting...
FAILED (status read failed (Too many links))
finished. total time: 1.150s

Also advice from alexcs in comments does not yield any results. The phone cannot boot to recovery.

Success! Thank you @alecxs for help and resources.
1 Obtain a programmer
To successfully acquire all of the data from EDL you need programmer.
For Mi 4c it is prog_emmc_firehose_8992_ddr.mbn that can be obtained in (first?) official image of OS. I got it from file Xiaomi_Mi_4C_V8.1.3.0.LXKCNDI_20161213_China_5.1_XFT.zip on some random site. You can find it in the archive under folder Firmware/images/.
The full path in archive would be Firmware/images/prog_emmc_firehose_8992_ddr.mbn.
2 Get working Firehorse
I have got mine from repository: https://github.com/bkerler/edl.
Proceed with all instructions mentioned in the repository. (I personally used Ubuntu 20.04 as all of the stuff is easier to make work.)
3 Connect to EDL
Boot phone to fastboot. In case of Mi 4c that is my case  it is pushing volume down during boot.
When you enter fastboot and you can see your device with fastboot:
fastboot devices
In case of Mi 4c you can directly boot to EDL with command:
fastboot oem edl
4 Acquire data through EDL
When device enters EDL state you can test connection with programmer (in my case prog_emmc_firehose_8992_ddr.mbn). In loader parameter you are entering path to this file.
./edl.py --loader=prog_emmc_firehose_8992_ddr.mbn printgpt
When it outputs all of the partition then you are golden!
On my phone there is one partition named userdata:
userdata:            Offset 0x00000000c4000000, Length 0x0000000683bfbe00, Flags 0x00000000, UUID 07c2b899-1574-564c-2f46-e26a6378bdd8, Type 0x1b81e7e6
To acquire the partition use command:
./edl.py --loader=examples/prog_emmc_firehose_8992_ddr.mbn r userdata userdata.bin
The copy of user data just needs to be read.
5 Reading user data (userdata.bin)
Luckily for the phone Mi 4c you can directly mount the dump in Linux. For some other phones the process might not be so straightforward and you might need simg2img. But I am not 100% sure.
sudo mkdir /media/userdata
sudo mount -t ext4 -o loop userdata.bin /media/userdata/

To read the data you will need to get root rights as the data belong to non-existing or different existing users and you won't get access with your user.
sudo mkdir userdata
sudo cp -r /media/userdata/media/0/* userdata/

The path to the your data might be different so take your time to look around.
Done! All the data are now completely accessible.


How safe is android compared to other mobile platforms? Recently I get the impression malware is only present on Android (compared to other mobile platforms) as every IT news magazine reports only on Android malware. (I guess it is also involved with the fact that mobil devices become more and more powerful and also mobile malware evolves => kind of populism) However, when I do web search indeed I get the impression that Android is the excellent platform for malware:

http://www.wired.com/gadgetlab/2011/08/android-malware-explodes-ios-remains-safe/
http://www.pcworld.com/article/245380/ios_safer_from_malware_than_android_security_firm_says.html

What do you think? Are those ratings biased?, Why? On the other hand Android is the most common mobile operating system making it an attractive place for malware. Additionally manufactors do not update their devices with newer versions (as they want to sell newer phones with newer android versions (fragmentation)). And last but not least the android market is some how not as restrictive as the iOS store, right?

<edit>
And yes of course: classifying what actually is malware is not so clear, so it depends how and who is calculating "malware".
</edit>

This is too big for a comment, so here goes:

Both articles cite one and the same McAfee report.
McAfee is a security products vendor, hardly an impartial observer to the malware scene.
McAfee does not have products which for iOS devices, but they most certainly do for Android devices. And paid, too. Turns out they might have for both platforms. I can't be bothered to install iTunes to verify.
Android is the fastest-growing mobile platform, and with an absolutely crazy 73%+ growth rate, and now has 48% market share, compared to just 10% in the beginning of 2010.

No big surprise here -- this is just a marketing ploy by a security vendor to sell more products. The same trick they pulled off with other AV vendors that they did with PCs in the mid-2000s.

As an aside, security is not all that much platform-dependent as it is people-dependent. Most of the largest security breaches are caused by social engineering attacks rather than technical limitations. I have yet to see with my eyes an Android malware application, it has always been beyond me how people manage to get infected. See also this related question on whether you need AV on your Android (short answer -- no).

Your phone should be secure as long as you use common sense while installing and using applications. Don't trust anything that's on the Market Play Store, the same way as you wouldn't trust a random PC program, or a Facebook "app" for that matter.

iOS and Anrdoid security concerns pop here and there in the news occasionally, but from observing both markets for some time I'm fairly convinced that both platforms offer reasonable (technical) protection to their users, and offending applications are removed with short notice. Google has even removed malware applications from devices without user discretion at least once.


Is there a way to color code events in de default Calender application I am using the (I think default) Calender application on my Samsung Galaxy S phone.

It shows blue blocks for my events in the 7 day view.

Is there a way to change this blue color ? So that, e.g. I can mark private events in green and appointments with customers in red ?

Or is there a way to show some text in the blocks ?

Or it not possible with the default calender .. do you know of another one which does allow this ?

Thanks.

Yes you can, you will need to create a different "calendar" (probably "tag" would be a better name, but that's Google's terms for it).

Creating a Calendar (do this from the Desktop, I didn't found a way to do it from Android's Calendar app; do anyone know?):

Go to http://www.google.com/calendar.
Look for the "My calendars" box on the left, click on "Add"
Fill in the information, and click Create Calendar.
You can change the color later from "My calendars" box, by clicking on the triangular button.

Adding Events to Calendar (can be done from Android):

On the "Create New Event" view, choose the calendar you've just made from "Calendar" combobox.


3G and wifi tweaks explanation required Where ever I check for build.prop tweaks to enhance 3g or wifi connectivity I see this tweak , can anyone explain what these values are exactly?

  what is "ro.ril.hep" means ?

  why given the value 0 for it ?

  can anybody explain the below given tweaks ?

# RIL settings
ro.ril.hep=0
ro.ril.hsxpa=2
ro.ril.gprsclass=12
ro.ril.enable.dtm=1
ro.ril.hsdpa.category=8
ro.ril.enable.a53=1
ro.ril.enable.3g.prefix=1
ro.ril.htcmaskw1.bitmask=4294967295
ro.ril.htcmaskw1=14449
ro.ril.hsupa.category=6

# net speed tweaks:
net.tcp.buffersize.default=4096,87380,256960,4096, 16384,256960
net.tcp.buffersize.wifi=4096,87380,256960,4096,163 84,256960
net.tcp.buffersize.umts=4096,87380,256960,4096,163 84,256960
net.tcp.buffersize.gprs=4096,87380,256960,4096,163 84,256960
net.tcp.buffersize.edge=4096,87380,256960,4096,163 84,256960
net.tcp.buffersize.hspda=4096,87380,256960,4096,16 384,256960
net.tcp.buffersize.hspa=4096,87380,256960,4096,163 84,256960

# Wireless Tweaks:
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.route.flush=1
net.ipv4.tcp_ecn=0
net.ipv4.tcp_fack=1
net.ipv4.tcp_mem=187000 187000 187000
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_no_metrics_save=1
net.ipv4.tcp_rfc1337=1
net.ipv4.tcp_rmem=4096 39000 187000
net.ipv4.tcp_sack=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_wmem=4096 39000 187000

Parts of those build.prop tweaks (and several you did not mention) are explained in the attachments to this XDA post. Let's see what of yours is covered – which are mostly the RIL settings (Radio Interface Layer):

ro.ril.hep : unknown and undefined … may not even exist
ro.ril.hsxpa : 1:HSDPA, 2:HSDPA/HSUPA, 3:? (HSUPA only?)
ro.ril.gprsclass : see: GPRS classes
ro.ril.enable.dtm : Dual Transfer Mode. Only set this to 1 if your network allows simultaneous transfer of Circuit switched (CS) voice and Packet switched (PS) data over the same radio channel (ARFCN)
ro.ril.hsdpa.category : HSDPA speed class; e.g. 21 = 23.4 MBit/s
ro.ril.hsupa.category : dito for HSUPA; 6 = 5.76 MBit/s
ro.ril.enable.a53 : gprs encryption algorithm; "may not even exist"
ro.ril.enable.3g.prefix : show "3g" on lock screen next to network name
ro.ril.htcmaskw1.bitmask : (not there; maybe HTC specific?)
net speed tweaks: (not documented there)1
wireless tweaks: (not documented there)2

1: also see What range of tcp buffer size do you suggest for slow and fast networks? and TCP buffers - smaller can actually be BETTER!. By the latter, the values here stand for "ReadMin, ReadInitial, Readmax, WriteMin, WriteInitial, WriteMax".

2:

net.ipv4.ip_no_pmtu_disc: "Set this if you want to disable Path MTU discovery - a technique to determine the largest Maximum Transfer Unit possible on your path." (Source)
net.ipv4.tcp_mem: "The tcp_mem variable defines how the TCP stack should behave when it comes to memory usage. ... The first value specified in the tcp_mem variable tells the kernel the low threshold. Below this point, the TCP stack do not bother at all about putting any pressure on the memory usage by different TCP sockets. ... The second value tells the kernel at which point to start pressuring memory usage down. ... The final value tells the kernel how many memory pages it may use maximally. If this value is reached, TCP streams and packets start getting dropped until we reach a lower memory usage again. This value includes all TCP sockets currently in use." (source: Network / TCP / UDP Tuning)

I won't explain all the TCP settings here (they are not Android specific, so this doesn't really belong here). You can find most of the missing settings at Obscure Settings.


Samsung Infuse is getting really hot when using a Samsung wall charger that came with Samsung Strive. Is this bad? The output specifications for the Samsung Strive charger match those of the Samsung Infuse charger, so I don't see why the phone is heating up so much.

Also, when charging the Samsung Infuse with this non-stock charger (although it is still made by samsung) while the phone is off, the charging never stops. The display never says (100%) even after a full night of charging. The animated dots keep on moving as if the phone is still charging.

Is all this bad or are we ok here? I wouldn't want to blow a fuse in the brand new Infuse!

The phone should be correctly detecting the charge of the battery even if the charger isn't right.  So it sounds to me more like a phone problem.  Either way I would discontinue this ... if the phone really is trying to charge the battery past its limit you could definitely fry the battery or your device.

Did you ever have an Infuse charger, and if so did it work?

You could try running the battery dry and then charging from that state; I've heard that can help when the battery stats get messed up.  In conjunction you could wipe the battery stats (you'll have to Google how to do that for the Infuse) but that's generally a last resort since it takes quite a few charge cycles for the battery stats to get rebuilt (your phone relies on them to determine the charge of your battery with any accuracy).


Will the AT&T HTC Aria Froyo (2.2) official upgrade solve the Bluetooth reset issue? will it allow free tethering as the unofficial 2.2? Hi
I couldn't wait and dowloaded the 2.2 upgrade for my AT&T HTC Aria just to find out the official one came one a few weeks later.

The only reason I want to upgrade is the Bluetooth reset bug (phone reboots / resets after walking away from a bluetooth source, e.g. when I exit the car while using Vlingo (with car handsfree), my phone resets!

So my quetions are

What is the best way to solve the Bluetooth reset issue? Will the official upgrade fix it?
Assuming most chances it will, will it hurt my phone in any way? (will it unroot it? will it block tethering?)

The official update will almost certainly unroot and not allow free WiFi tether.  I'll let someone with experience speak to the bluetooth issues.


Unknown apps/processes with number only are shown in data usage A mysterious app named "10102" shows up in my data usage. It bears only the standard Android app icon (the Bugdroid logo with a cube on its torso). From what the graph tells me, it has used 36 megabytes of data in the background and zero on the foreground.
I think I haven't uninstalled anything for months.
Is it malware? I haven't sideloaded anything and only authorized my laptop as a USB debugger. If it's malware, how do I remove it? I have no idea how to find its package name and 10102 isn't in the list of downloaded apps in settings.
I'm running stock & never-been-rooted Android 4.4.4 on Nexus 4.

It's probably an uninstalled app. It happened on my phone a few times.


What determines which application acts to a bluetooth AVRCP command? Background: I have a A2DP/AVRCP bluetooth headset (Nokia BH-505) which I use actively to listen to both podcasts and music. Of course, I listen to these with different apps. The bluetooth headset has some "command" (AVRCP) buttons, relevant to audio - in specific: "next track", "previous track" and "play/pause"

Currently whenever I press any of the commands, one of the music players I have installed (Meridian) always gets the command - even when it's not active. So when I click "play/pause" intending to pause a podcast (DoggCatcher), instead Meridian is activated and starts playing music along with the podcast.

Both players are set to be using the headset: DoggCatcher has "Bind to headset" turned on, and Meridian has "Headset Buttons" turned on. I'm currently using unrooted stock Android 2.2.1 on GT-S5570 but may be rooting and upgrading to 2.3 CyanogenMod (or such), in future.

Ignoring the specifics, my question about this is more general:

How does Android determine which app gets to react to these commands? I'm interested even in a very techincal answer.

On the practical side I'm interested in:

Do I have to fiddle with each applications settings to determine which application takes the commands, or is there some general way of determining this?
Is there a way to configure this so that the application that's actually active would automatically always get the priority? (as was asked partly in another question)

How this question differs from similar questions:

"How to Set 'Play' Button Behavior on Bluetooth Remote" - only practical, different focus, so far has no answers, and I'm also interested in answers that would require rooting or custom firmware (especially CyanogenMod).
Change default application for handling headset controls - an exact issue that got fixed, the but not in a way that would answer my questions, though it does gives some hints as to how things work.
How can I make the button on my headphones control something other than the stock music player? - partly similar question on practical side, but no focus on explaining how it actually works, and the only answer is focused on the part I'm not asking about (making only one app receive the commands).
why do all sound apps get bluetooth button events, all at once - very similar, but asking about a specific issue (all of the media players getting the AVRCP command)

media-button-router, already mentioned in one of your linked questions, tries to figure out what app is currently playing music and to dispatch the AVRCP events to it. In addition, it lists all apps installed, that declare to listen to AVRCP events.

What makes AVRCP complicated: Some apps, like Sony's Music Unlimited, seem not to declare android.intent.action.MEDIA_BUTTON in their manifest. For this (or maybe some other) reason they can't be controlled via media-button-router. I know that e.g. Music Unlimited can be controlled via AVRCP since I read it in a user comment and also I was able to get it running once but unfortunately it's not reproducable. So in those cases it seems that we have to wait for an app's update with a clean implementation of AVRCP event handling.

According to media-button-router's wiki "Media Button Intent handling is done through ordered broadcasts, and each app sets it's own priority for receiving." So maybe it could be possible to write an app that displays theese priorities and, in effect, would allow you to determine what application will start. However, I don't know about such an app.


Chrome Browser does not render mobile site I use SAMSUNG GALAXY Y GT-S6312.

I was testing my site on google chrome for mobile view render. But it renders desktop site only

Tried clearing cache of browser. Stopped application. But no results.

Any Solutions.

Does Chrome render other websites in their "mobile" formats correctly?

If yes, you'd need to correctly configure your website (probably checking for user agent, and redirecting to mobile site) correctly, so as to render the mobile site.


What is the fastest way to shutdown unrooted Android phone? Sometimes I need to have my phone shut down as fast as possible. In older phones I was able to remove the battery, but after some "innovations" this feature is no longer present. Is there any better option than using casual shutdown and waiting for long seconds until it gets down? It is especially bad when I pour water on my phone and the touchscreen refuses to work.

I am using Xiaomo Pocophone F1 with Android 9.0.

In fact without removing battery it's not possible to shut down a device completely in order to avoid the loss that could possibly occur due to short circuit caused by water.

Let's have a brief look at what shut down means and what are possible options to achieve this.

HOW SHUTDOWN WORKS?
Android is based on Linux kernel which is the very first executable of operating system which is run during boot process. Kernel initializes necessary hardware and prepares a basic environment before executing init, the very first userspace process we can see. It's init which then starts and takes care of all services and processes. On shutdown, reverse of this happens.

INIT
When you tap Power Off from Power Menu, or when you issue reboot -p command from terminal app or adb, it sets Android property sys.powerctl to shutdown (with an optional reason for shutdown) which tells init it's time to save any unsaved work to persistent storage, stop all services and processes gracefully (or brutally), sync filesystem caches, un-mount filesystems and then hand over charge to kernel by making syscall reboot (ref). Kernel then makes sure all userspace processes are stopped including init, forcibly unmounts any stubborn filesystems and ultimately powers down hardware devices including CPUs and RAM.

Android's init supports two modes: shutdown and reboot. Linux init has some more shutdown options including halt and poweroff. See this answer for more details.

KERNEL
Most of the time during shut down is taken by init. In order to save time you can bypass init and ask kernel directly for a poweroff by making syscall:

reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_POWER_OFF)

That's what busybox poweroff -f command or the magic SysRq key O (equivalent to Alt-SysRq-O on a PC) would do (ref).  Both should be preceded by sync to avoid damaging filesystems. From commandline we can do:

~# echo 1 >/proc/sys/kernel/sysrq
~# echo s >/proc/sysrq-trigger
~# echo o >/proc/sysrq-trigger

This is the fastest way to shutdown OS on rooted device.

HARD REBOOT
But how to power down the device if even the kernel becomes non-responsive? Hardware can usually take care of this i.e. if you keep power button pressed for a fixed time interval. There's some hard-coded value (mostly 10 seconds) inside Power Management Unit (PMIC). No process will be stopped, no filesystem would be unmounted, no goodbye would be conveyed, just the power will be cut to CPU, RAM and other relevant hardware resources. Most SoCs (which have PMIC embedded inside) implement this as reboot, not shut down.

So to summarize the above lines, there are two ways to shutdown device: through init or calling kernel directly. Both can be achieved through simple shell commands or can be mapped to some hardware key or special key combination. But water can make any hardware key useless, so this method can't be a universal solution.

POWER BUTTON
But the point is, your device isn't fully powered off whichever path you have chosen. During boot process there are things which are powered up before the OS loads (and possibly be powered up even when there is no OS on device). There must be a circuitry in PMIC (e.g. a microcontroller in low-power mode and may be some software stack too) which is always powered up so than it can listen to your request for switching on the device when you press power button for a few seconds, or even when you connect a charger to device in powered-off state.

COMMUNICATION PROCESSOR
Also the baseband processor (BP) - which runs modem and is responsible for all communication through mobile networks e.g. call, SMS and internet - is totally isolated from Application Processor (the one we call CPU) and is not governed by Android kernel; it runs an independent RTOS. And as they say, government agencies may use it to track you even when you think your device is powered off. So it means it may possibly be (partially or fully or periodically) running when Android isn't running.

If nothing else, at least battery terminals are always live, connected to some part of motherboard which may get short when got wet. So if your device isn't water resistant and the battery doesn't have some short-circuit protection built-in, you can never be dead sure your device won't get damaged when water poured on it.


What app allows me to block "probable" spam calls I receive 2 or 3 calls per day from random spammers. I have tried blocking the numbers, but it is no use as they just call with new numbers. Is there anyway to avoid this? I suppose the end solution could be changing my number with a new sim card.

I have tried the app MrNumber, and I have tried a few other apps, but they all suffer from the problem of only blocking single numbers. Spam callers have too many number to utilize. Are there any apps that come with an extensive black list pre-installed? Or some method of detecting what other people have marked as spam?

Try True caller, it comes up with the preloaded blacklist and spammer numbers and keeps on updating..it has some interersting features too..


error: only position independent executables (PIE) are supported when I try to run curl on android 5.1 I'm trying to run curl on android 5.1,but this error doesn't help :

root@manta:/root/home/curl/data/local/bin # ./curl
error: only position independent executables (PIE) are supported.

I've got the curl executable from here :

http://curl.haxx.se/

how can I fix this error ? thanks.

Curl is an open source project, so the straightforward answer is that you compile it yourself and enable position independent code (pic) for the compilation. This is very inconvenient, I admit, but I strongly discourage using solutions that disable security features. There are good reasons to only allow PIEs.


After update to Jelly Bean I am asked to select the E-Mail protocol. Which one should I choose? Has anyone come across with sync-in email accounts using the native app?

For example:

I known a Bell.net account (Provided by Bell Canada), which uses Hotmail.com server. On Ice Cream Sandwhich I was able to punch in my email & password and it would automatically connect to my email no issues.

When I upgraded to 4.1.1 Jelly Bean it prompt me to select "POP", "IMAP" or "Exchange" setting. Is anyone else experiencing this with either a Bell.net or Hotmail.com accounts?

Modern email clients are often able to detect the email server settings just from the username / password tuple.

If you are suddenly asked for an protocol (and possible outgoing/incoming mail server settings) then you should look them up on your mail providers homepage.

E.g., a quick Google search came up with this page for Bell Canada.


"Slide to answer" alternative on Lollipop I'm using ZTE Maven running Android 5.1 Lollipop, and while there are 3 physical buttons on the front of the phone beneath the display, by default to answer a call you have to touch a green virtual button on the display and "slide to answer".

I get calls very infrequently and when I do I have a lot of difficulty answering calls.  At first I concluded that I have to hold on the green virtual button until it activates, and then slide it, but recently that doesn't work either and I end up missing the call.

I understand there are apps for changing this behavior, but I'd prefer a configuration solution.  I think once I found a mention of an accessibility setting for this, but the only documentation I can now find is for pre-Lollipop versions of Android and it doesn't seem to apply.

Is there a way to configure Lollipop with an alternative way to answer calls?

If you're using Samsung Galaxy S-series, you can change the call answering and ending options in Settings > Accessibility > More settings > Answering and Ending calls. I didn't like the way it worked, I now have it set up so all I press is the home key.

The other one is Single tap mode, which is like its name, answering/rejecting incoming calls with a single tap.

Image courtesy of AndroidCentral


How can I prevent unrecoverable photo deletions on Android without a cloud service? I don't want to set up Google photos to back up to the cloud for privacy reasons.

Recently I noticed that with the default Android camera app, and the default Google Photos app, the "Trash" is only used if you have the app set up to sync with your cloud service.

This means that any photo that's deleted from the camera roll—for example, by swiping from the camera to view the photos just taken, and then swiping down—is immediately unrecoverable.  (There is an "undo" button briefly visible, and that's all.)

By contrast, in iOS (which my family members are more used to), any photo that you delete will go to the "Trash" where it will only be actually removed after 30 days, giving plenty of time to recover from any accidents or mistakes.  (And in iOS, this feature doesn't require iCloud use at all.)

How can I set up my Android devices to mimic this functionality, so that photos deleted from the camera roll, or from the photos app, are still preserved for an additional 30 days unless special action is taken?

(I'm running a Nexus 7 with Android 6.0.1, but we have a couple other Android devices in the house that I would probably apply the answers to if I can.)

You need to install a separate app to get this functionality. Since you don't want to use cloud services, this app can help you recover your deleted photos: https://play.google.com/store/apps/details?id=com.baloota.dumpster&hl=en


Why does my Xperia X10 spontaneously reboot? Several times a day I find out that my Sony Ericsson Xperia X10 is waiting for PIN entry, probably because of a soft reboot. It annoys me to no end, and I end up missing calls beacuse of this. Is there a tool or another way to help me find out what actually happened, when, and what caused that?

I read similar reports lately, related to Titanium Backup.. When it runs, it kills apps to back them up, causing the phone process to restart. If you aren't running something similar, I would recommend using USB debugging and the SDK to capture log data..  Known as "logcat" in the Android world.

Oh -- Here's an easy way to capture and review log data on the device without the SDK --

Is it feasible to disable the SIM pin requirement to avoid the problem in the meantime? Could replace it with the Android pattern lock to retain some security.