Saturday, April 30, 2016

Galaxy S3 high RAM consumption even on idle


I have a Galaxy S3 International Version, without any modification whatsoever-- no rooting, no nothing. It is as good as a stock phone with a few Play Store apps.
However, of late, I have begun experiencing problems


I do not have background processes (of my own) running and even then all I have left free in the RAM is usually only 300MB of the 800MB that is there. Task killers cannot free more than that.


I experience lag when opening settings. What I mean is this: Say I click on the Battery option under Settings. There is a visible lag between the time I press the option and when the battery information is actually displayed on the screen.


Android Version: 4.1.2
Build Number: JZO54K.I9300XXEMF6




Answer



First a few things on the symptoms:



  • On Unix/Linux/Android, "free RAM" is considered a "wasted resource". If RAM is not occupied by running processes themselves, the system uses it to buffer and cache other things, like the file system. This should speed things up, as usually RAM allows faster access.
    For more details, please check out ram tag-wiki.

  • "task killers" are discussed controversely. While most (if not all) people agree they are fine to stop "rogue processes", it's certainly not their job to "free up RAM" or even "save battery". In these terms, they are rather contra-productive, as most killed processes simply restart themselves (which costs more battery than if they'd kept running, and fills up the "freed RAM" again as well).
    For details on this, closer information can be found in the answers on e.g. Do I really need to install a task manager?, Do task killers actually work? and Is it advisable to run a task killer app on Android.


And finally, to the issue itself (experiencing lags). As you describe it as a problem "growing with the time" (i.e. it was not there in the beginning, but slowly became more and more visible), you will probably find some help in the answers to My device is getting slow, apps start misbehaving/crashing. What can I do?


root access - How to change /system/fonts directory permission to writable in switch off mode?


I have Micromax A57 android 2.3.5 rooted phone, I have installed font using "Font Installer Root" application , after installing successfully I realize that font is not good, then after I delete that font from /system/fonts directory, and I install DroidSans.ttf font from that application, while installing process device get hanged, so I remove battery and place it again and start the device , Now my phone is not started,


when I attach cable with device I can see in Eclipse that in /system/fonts folder DroidSans.ttf has o bytes that means by mistake that font has been deleted, now wants to copy that font in /system/fonts directory, i have tried with Eclipse but it has read only permission so I am failed, If I can copy that file then issue can be solved,


Please help me to change permission of /system/fonts directory so that I can copy that fonts and get my device data back





Where's the best place to report bugs with the GMail app?


I want to report a bug / RFE with the official GMail app, but I'm finding it hard to find the right place to do this - all the forums / discussion groups I've found so far seem to be moribund (eg not much activity since 2008).


What's the recommended place?



Answer



As per this comment, the place for bug reports seems to be via the About -> Send Feedback link within the GMail app - this links to this survey page:


http://www.google.com/m/survey/mail_ca


Friday, April 29, 2016

calls - Direct Music Player audio to Caller


Assume you have a call. I would like to play a piece of one song to the caller at one point of discussion, while keeping your voice too in the discussion. I am using Android 6.0 CyanogenMod with Samsung Galaxy S4.


Edited: According to Media Playback's docs, the standard Android system does not allow the feature. However, I am interested in how this restriction works. If the feature works in non-rooted CyanogenMod, then it is not a restriction. Also, I am not sure if Media Playback's manual applies to the whole system.


How can you direct Music Player's output into the ongoing discussion?



Answer



You cannot



Media Playback developer documentation says (emphasis added)



You can play back the audio data only to the standard output device. Currently, that is the mobile device speaker or a Bluetooth headset. You cannot play sound files in the conversation audio during a call



Edit


In response to your edited question:



reboot - Phone keeps restarting / shutting down randomly is there any logging to help debugging


Sometimes my Samsung Europa restarts itself when it's on standby.


Does Android have any logging which I can access to see what caused the restart?


I have installed a few apps from the Android app market and some games. Haven't installed anything that I've developed myself.




htc evo - Force volume buttons to always change Media Volume


I want my phone to be on "Vibrate" mode about 99% of the time. I've found that every time I hit the volume buttons on the side of my Evo, it's either accidental (and I don't want the phone to either go silent mode or ringer mode), or I was trying to control the media volume.


Is there a way to force the phone into interpreting every volume button press as a media volume change, and not a ringer volume change?




restore - How can I transfer SMS messages from my old iPhone to my new Android phone?


I think my previous SMS are stored somewhere in iTunes, can I get them back and store them in my new Android?




applications - Photos/Media/Files and Full Network Access


Does anything stop an application with Photos/Media/Files and Other ("full network access" and "run at startup") permissions from simply uploading ALL of your photos and videos to some stupid server they control?


Is it access to store and read their own photos/files, or total access to everything on the phone? Does it matter if it's on an SD card or internal storage?



Answer



If an app has access to your data and the Internet, there's actually nothing to keep it from doing such things indeed. But if it did, it probably won't go unnoticed (as it would use bandwidth for that, someone surely would have noticed). Which is one reason one should prefer apps already used by many people, and from a trustworthy source.


Thursday, April 28, 2016

applications - Why has Google started asking questions when reviewing apps in Play Store?


I went to review an app today after receiving help from the dev and after selecting the star rating I was then asked three questions about the app. "Does the app have whiteboards?", "Does the app allow you to make checklists?", "Does the app have online storage?", with options, "No", "Don't know" and "Yes" for each. After that I was able to write the review. The app was just a fun app that measures vibration, comparing it to earthquake intensity, so none of the questions are relevant.


I checked a couple of other apps. One didn't ask any questions, the other did but the questions were different and more relevant to the app.


I have not been able to find info on this. Does anyone know why Google are doing this and how they decide the questions? Would also be interested in knowing when they started doing this.


Thanks.




Answer



Since Aug 2016, Google has been testing a new feature called "Top Features" of an app.


Android Police reported,



[...] it seems that Google has begun testing another change in the same arena - Top Features, a new element that aims to make determining what functionality an app has easier. [...] Top Features is situated above Review Highlights and contains user feedback about certain abilities of the reviewed app.



How Google gets this data is by crowdsourcing it to reviewers (similar to how Google Maps crowdsourced maps improvements)



In addition, the reviewing process has been tweaked. [...] The new process asks reviewers (up to) three questions about the app. Basically, Google will ask if x function is available in the app; if it is, you give a thumbs up; if it isn't, you give a thumbs down; and if you're unsure, you click "Not Sure". The process itself is pretty straightforward, but it is unclear how exactly Google comes up with these questions; all we know is that they eventually contribute to Top Features.


(Emphasis mine)




As reported, it's unclear how Google comes up with the questions. It could be from app's manifest (e.g requires internet connection or not), or from app's category (e.g. social network, etc), ...


usb peripherals - What are workable/straightforward methods for using external game controllers (bluetooth, USB) with the Android platform?



I own an Archos 43 IT running Android 2.2. It is my understanding that the Archos devices in this product line support USB Host and Bluetooth.


What are workable/straightforward methods for using external game controllers with the Android platform?


I am aware of the WiiMoteController project, and the capability of hooking up a Wii Classic Controller to a Wii Controller via bluetooth for emulator usage such as here.


The thing is that I don't already own any Wii controllers and it seems like a waste to go out and get those controllers if I already own several Logitech Dual Action USB gamepads, and could use those instead.



Answer



The best option (albeit a rather pricey one) appears to be the iControlPad. It was originally designed for use with an iPhone but now uses bluetooth to communicate with all bluetooth-enabled devices. It sounds like developers plan on supporting it, but I'm not sure how well it will work with current games.


EDIT: I recently became aware of another bluetooth gamepad that caters specifically to smartphones. It's called the Bluetooth Game Gripper. There is an Andoinica article about it here, and the kickstarter project is here. However, it doesn't appear that the maker has garnered enough VC to get the project off the ground, so I'm not sure of the current status.


Keep getting "Error retrieving information from server. [RH-01]" from the play store



It used to work fine but now when I open the Play Store app it says "Error retrieving information from server. [RH-01]" and I can't do anything. I tried clearing the cache of the Google Play Store and Google Play Services but it still has the problem. Gmail still works from the phone so I don't think it's a problem connecting to my google account.


I have an Xperia Arc with custom rom, which turns out to be the problem. See accepted answer.



Answer



Apparently some custom ROMs do not come with any Google services and to fix this you need to flash gapps using a program such as Clock Work Mod. This page has a link to download gapps.


HTC Incredible says SMS storage is full, but it isn't


My HTC Incredible refuses to let me view my SMS messages. It will show the list of SMS senders, but when I click one to see their messages I get blocked by this popup:



Unable to manage your messages because your storage is full. Please delete content from other applications to make more space.




Of course I checked right away to see if I was using too much memory. I went to Menu->Settings->SD & Phone Storage and saw I have plenty of space:


SD card - Available space: 5.72GB


Internal phone storage - Available space: 6.25GB


Phone memory - Available space: 571MB


I have more free memory than used memory so that can't be the problem. I tried restarting my phone as well but no change in message. I also Googled the problem and among all the "me too" responses found that other have this problem where SMS is blocked even though they have plenty of memory.


I couldn't get a clear resolution and I'm worried the answers are now out of date. ZDNet published a couple of articles on the issue:


Have I solved my Droid Incredible storage problem?


Is your Droid Incredible low on disk space?


Both suggest this is HTC's fault and that there is no fix. They say you can try clearing the cache on HTC's apps like Peep, Messages and Mail and also advise clearing the cache on your browsers.



I've tried these techniques, but they didn't work.


Does anyone know what causes this and what solutions exist?




5.0 lollipop - Galaxy S4 back button pressing itself


After replacing the digitizer, the back (and sometimes menu) button randomly presses itself. I feel the phone vibrate as if the button was actually pressed but it was not. Sometimes there are a number of presses in a quick succession.


I did a factory reset but problem remains. Everything seems to be connected OK, I even put some electric tape between the back & menu ribbon cables to prevent shorting.


Does anyone have any ideas how to fix this?



Answer



It appears to be a strictly mechanical issue. If the phone is bent in any way, it can put pressure on the digitizer without any involvement from you. If you take the phone apart again (but don't disconnect the cables), does the digitizer behave the same or was the pressure from the frame causing the issue? This is obviously not a specific answer to your question, but answers to these questions would help you understand the next steps to take. Issues like this are usually either a faulty digitizer or faulty (or badly installed) connectors.


rooting - How can I root my Moto G2?


I want to root my Moto G2 (running Marshmallow). I've never tried this before, so please tell me exactly step by step.




Wednesday, April 27, 2016

languages - Arabic support for my Android device


I've got a new phone (Samsung galaxy SII) with Android 4 on it. I would like to be able to add Arabic support on it. Is there a simple way to do so ?



I'm a newbie with Android related subjects, so I'm not able to handle complicated processes.




cyanogenmod - Enable On-screen navigation in CM12 (Lollipop) using shell?



Device: OnePlus One (OPO); running CM12, is rooted, and has Xposed Framework installed.




I need to enable On-screen navigation (it disables Hardware (HW) keys and shows soft keys at the screen; like this) in OPO. I'm able to do it via Settings but my objective requires a command-line solution through shell.


(Note that this is not a development/programming question, simply an Android question.)




  • Objective: To disable Back(HW) key when main activity of an app (random) is in foreground, but without a reboot.




  • I found On-screen nav. to be a good choice which doesn't require a reboot. I'll use an automation app to trigger the disabling action.





  • There are manual ways to disable HW keys (by editing .kl files) and enabling Soft keys (by editing build.prop), or using tools like Xposed modules to disable or swap HW keys. But they all require reboot (soft/hard) at least once which I cannot afford.




  • I experimented and found that when On-screen nav. is enabled, the value for dev_force_show_navbar changes to 1 from 0. Similarly. button_brightness changes to 0 from 255. Both names are under Settings.db (Table:secure)




  • Also, there is no special activity assigned for Settings → Buttons(it enables On-screen nav). I used dumpsys activity | grep mFocusedActivity to see activity related to Buttons. The result was:


    com.android.settings/.SubSettings



  • dumpsys activity activities or dumpsys activity recents also has nothing more to tell here.




  • I logged my actions using logcat when enabling On-screen nav. and here is the log file.




So, how do I enable On-screen nav. through command line, irrespective of whether it requires superuser access or not?


Edit: Is there any other way using which I can achieve the objective precisely?





Only thing that comes to my mind is to use input but that's counterproductive to me. The other way is to trigger an Xposed module like Xposed Additions but I'm unable to use it with shell.



Answer




I experimented and found that when On-screen nav. is enabled, the value for dev_force_show_navbar changes to 1 from 0... Both names are under Settings.db (Table:secure).



You actually mentioned the key to the answer but somehow (I suppose) didn't know how to use it. Many thanks to Andrew T. and DavisNT for this answer since it would lead to a solution for your problem.


I myself is a owner of OnePlus One running stock CM12 so you may now expect a working answer.


From the shell, be it adb, or a Terminal app, or Tasker's "Run Shell" action, enter the following command with root privileges:


settings put secure dev_force_show_navbar 1


You would now see that On-screen navigation bar is enabled just like in your pic posted here.


Don't worry about button_brightness since the changes in its value would be reflected automatically by the above command.


I tested that command in Tasker by manual execution of action "Code -> Run Shell -> command" with "Use Root", and its working good.


The changes are exactly same as doing it from "Settings -> Buttons" so nothing to worry, i.e. only Soft-keys are visible and Hard keys are disabled. Coolest part -- no reboot needed.


You can revert back by using 0 in place of 1 in the aforesaid command.


performance - Nexus 7 2012 is almost unusable after upgrading to the latest Lollipop. What should I do?


I have a Nexus 7 2012 wifi. With the latest version of Lollipop it has really become unusable, freezing for a minute or more, or even rebooting while loading a page in Chrome.


I did a system reset, but that did not change much past the few first minutes.


What is the recommended version to have again a usable tablet? Is anyone having a "runbook for dummies" to install Android 4.x (or CM or whatever works fine) ?


Most of the tutorials I found on the Internet are for geeks wishing to experiment. I just want a running system with minimal fuss/risk.



Answer



You can use the highly functional nexus root toolkit to do pretty much anything you need to on your Nexus device.


Nexus Root Toolkit


It allows rooting, return to stock, recovery and everything else you would need to repair your nexus 7 2012 WiFi aka 'grouper' / 'nakasi'. You can flash custom roms with it also.


Nexus Root Toolkit v2.1.0



Other tools include unlocking or locking the bootloader, adb tools, driver installs. .. you name it, it does it.


Advanced Utilites


Works with all nexus devices released so far.


Select Nexus device and ROM


One of the most handy things about it is that it tells you what to do step by step...


Instructions for installing drivers


Every nexus owner should have this as it's pretty much indispensable.


Tuesday, April 26, 2016

system - What is this triangle icon [Samsung Galaxy S9+]?


It appeared recently. And I can't even imagine what is it.


Screenshot



Screenshot (click image for larger variant)



Answer



That's a Data saver icon.



The icon is different from the data saver icon in stock Android. Samsung started to use this data saver icon in Android Oreo update as explained in this guide



This Galaxy S9 status icon appears if you enable data saver in Settings → Connections → Data usage → Data saver.


enter image description here


Data Saver status icon in Android Oreo update for Samsung


paid apps - Is Android game bundler ikoid.com a scam site?



I recently purchased an Android game bundle from https://ikoid.com/.


The purchase was successful (at least they took my money), and I was told I'd receive a link to log in with and collect my purchase. No such email arrived, and I've had no response from service@ikoid.com.


Has anyone had experience of successful purchases from this site, or similar failures? Do you know if the site is genuine or a scam?


Update: new purchase successful; the site seems legitimate.



Answer



We did respond to every e-mail, so it is likely that our e-mails went to your spam folder.


If you still have problems with any purchase please contact us at service@ikoid.com.


2.2 froyo - What does the 'Failed to move application. Not enough memory' error mean when choosing 'Move to SD card'?


When I choose 'Settings - Applications - Manage applications' , and a 'Move to SD card' I get the 'Failed to move application. Not enough memory' error.


Anyone know why ?


I am running Froyo 2.2 on a Samsung Galaxy S phone.



I have 1.7GB free of system memory and 13.1 GB internal memory free on the internal SD card.


*UPDATE *


Can someone with an Galaxy S phone please confirm this ? I have seen it on two phones, and really would like to know what's happening here.



Answer



This is a known problem with leaked 2.2 Galaxy S Vibrant software (happened to me). Even if you're not using a Vibrant I would suspect the issue is the same, since the software is mostly the same.


You can fix it using this post at XDA if you have a Vibrant or i9000. If you have another model just check the subforum for your device (or take a risk and try this anyways).


htc one x - What is Fast boot in HTC One X?


I have HTC One X running Android 4.1.1 and Sense 4+. Under Settings > Power I have an option of Fast Boot. The text under it says "Start up and shut down quickly". How will my device be affected if I turn on/off this option?



Answer



"Fast Boot" is basically analogous to the hibernate or possibly S3 (STR) sleep functionality on regular PCs (HTC isn't very clear on what precisely it does, but analysis of its claims and action suggests it's one of these). Rather than fully shutting down and restarting, the OS resumes where it was after a shutdown, allowing the system to get from "off" to "ready to use" much faster.


As mentioned, some apps don't play nice with this, such as the case is in this SO question.


Unless you're regularly needing to shut off your phone for some reason and want it to start back up faster, I'd personally just leave it off to avoid the potential for weird issues.


Monday, April 25, 2016

contacts - The Way Numbers Are Displayed/Broken Up



I live in Jordan and just got a Galaxy SIII. I have a problem with the way numbers are being displayed on the dialer and when you actually press the green button to place a call.


Basically, the phone breaks up the number, including the prefix, by inserting spaces. For example, let’s say my number is 0787777707 (078 being the prefix of the phone operator). The phone displays it as 07 87 77 77 07. How can I fix it so it displays it as one series, 0787777707? My iPhone has a simiar issue, but that could be addressd once you change the regional format. I can’t find that on the Galaxy though.




rooting - How Magisk works?


Magisk is known as a “systemless” root method. It’s essentially a way to modify the system without actually modifying it. Modifications are stored safely in the boot partition instead of modifying the real system files.


I have looked around but did not find a sufficient explanation as to how it actually works. How is the root access gained and maintained? What exactly is the role of the boot partition and if it integrates with the system partition how it does it?
A really detailed description of how it works lacks from everywhere I searched so it would be really highly appreciated.



Answer



Most part of your question is covered in Magisk Documentation. I will quote one of my previous answers to a different question, with some unnecessary details :)


PREREQUISITES:



To have a comprehensive understanding of how Magisk works, one must have basic understanding of:



  • Discretionary Access Control (DAC)

    • User identifiers ([ESR]UID), set-user-ID

    • Linux Capabilities (process and file) which provide a fine-grained control over superuser permissions



  • Mandatory Access Control (MAC)



  • Mount namespaces, Android's usage of namespaces for Storage Permissions

  • Bind mount

  • Android boot process, partitions and filesystems

  • Android init services (the very first process started by kernel)


  • Structure of boot partition (kernel + DTB + ramdisk), Device Tree Blobs, DM-Verity (Android Verified Boot), Full Disk Encryption / File Based Encryption (FDE/FBE) etc.


WHAT IS ROOT?



Gaining root privileges means to run a process (usually shell) with UID zero (0) and all of the Linux capabilities so that the privileged process can bypass all kernel permission checks.
Superuser privileges are gained usually by executing a binary which has either:




  • set-user-ID-root (SUID) bit set on it


    This is how su and sudo work on Linux in traditional UNIX DAC. Non-privileged users execute these binaries to get root rights.




  • Or File capabilities (setgid,setuid+ep) set on it


    This is the less common method used.





In both cases the calling process must have all capabilities in its Bounding Set (one of the 5 capabilities categories a process can have) to have real root privileges.


HOW ANDROID RESTRICTS ROOT ACCESS?


Up to Android 4.3, one could simply execute a set-user-ID-root su binary to elevate its permissions to root user. However there were a number of Security Enhancements in Android 4.3 which broke this behavior:



  • Android switched to file capabilities instead of relying on set-user-ID type of security vulnerabilities. A more secure mechanism: Ambient capabilities has also been introduced in Android Oreo.

  • System daemons and services can make use of file capabilities to gain process capabilities (see under Transformation of capabilities during execve) but apps can't do that either because application code is executed by zygote with process control attribute NO_NEW_PRIVS, ignoring set-user-ID as well as file capabilities. SUID is also ignored by mounting /system and /data with nosuid option for all apps.

  • UID can be switched only if calling process has SETUID/SETGID capability in its Bounding set. But Android apps are made to run with all capabilities already dropped in all sets using process control attribute CAPBSET_DROP.

  • Starting with Oreo, apps' ability to change UID/GID has been further suppressed by blocking certain syscalls using seccomp filters.



Since the standalone su binaries stopped working with the release of Jelly Bean, a transition was made to su daemon mode. This daemon is launched during boot which handles all superuser requests made by applications when they execute the special su binary (1). install-recovery.sh (located under /system/bin/ or /system/etc/) which is executed by a pre-installed init service flash_recovery (useless for adventurers; updates recovery after an OTA installation) was used to launch this SU daemon on boot.


The next major challenge was faced when SELinux was set strictly enforcing with the release of Android 5.0. flash_recovery service was added to a restricted SELinux context: u:r:install_recovery:s0 which stopped the unadulterated access to system. Even the UID 0 was bound to perform a very limited set of tasks on device. So the only viable option was to start a new service with unrestricted SUPER CONTEXT by patching the SELinux policy. That's what was done (temporarily for Lollipop (2, 3) and then permanently for Marshmallow) and that's what Magisk does.


HOW MAGISK WORKS?


Flashing Magisk usually requires a device with unlocked bootloader so that boot.img could be dynamically modified from custom recovery (4) or a pre-modified boot.img (5) could be flashed/booted e.g. from fastboot.
As a side note, it's possible to start Magisk on a running ROM if you somehow get root privileges using some exploit in OS (6). However most of such security vulnerabilities have been fixed over time (7).
Also due to some vulnerabilities at SoC level (such as Qualcomm's EDL mode), locked bootloader can be hacked to load modified boot / recovery image breaking the Chain of Trust. However these are only exceptions.


Once the device boots from patched boot.img, a fully privileged Magisk daemon (with UID: 0, full capabilities and unrestricted SELinux context) runs from the very start of booting process. When an app needs root access, it executes Magisk's (/sbin/)su binary (worldly accessible by DAC and MAC) which doesn't change UID/GID on its own, but just connects to the daemon through a UNIX socket (8) and asks to provide the requesting app a root shell with all capabilities. In order to interact with user to grant/deny su requests from apps, the daemon is hooked with the Magisk Manager app that can display user interface prompts. A database (/data/adb/magisk.db) of granted/denied permissions is built by the daemon for future use.


Booting Process:
Android kernel starts init with SELinux in permissive mode on boot (with a few exceptions). init loads /sepolicy (or split policy) before starting any services/daemons/processes, sets it enforcing and then switches to its own context. From here afterwards, even init isn't allowed by policy to revert back to permissive mode (9, 10). Neither the policy can be modified even by root user (11). Therefore Magisk replaces /init file with a custom init which patches the SELinux policy rules with SUPER CONTEXT (u:r:magisk:s0) and defines the service to launch Magisk daemon with this context. Then the original init is executed to continue booting process (12).



Systemless Working:
Since the init file is built in boot.img, modifying it is unavoidable and /system modification becomes unnecessary. That's where the systemless term was coined (13, 14). Main concern was to make OTAs easier - re-flashing the boot image (and recovery) is less hassle than re-flashing system. Block-Based OTA on a modified /system partition will fail because it enables the use of dm-verity to cryptographically sign the system partition.


System-as-root:
On newer devices using system-as-root kernel doesn't load ramdisk from boot but from system. So [system.img]/init needs to be replaced with Magisk's init. Also Magisk modifies /init.rc and places its own files in /root and /sbin. It means system.img is to be modified, but Magisk's approach is not to touch system partition.


On A/B devices during normal boot skip_initramfs option is passed from bootloader in kernel cmdline as boot.img contains ramdisk for recovery. So Magisk patches kernel binary to always ignore skip_initramfs i.e. boot in recovery, and places Magisk init binary in recovery ramdisk inside boot.img. On boot when kernel boots to recovery, if there's no skip_initramfs i.e. user intentionally booted to recovery, then Magisk init simply executes recovery init. Otherwise system.img is mounted at /system_root by Magisk init, contents of ramdisk are then copied to / cleaning everything previously existing, files are added/modified in rootfs /, /system_root/system is bind-mounted to /system, and finally [/system]/init is executed (15, 16).


However things have again changed with Q, now /system is mounted at / but the files to be added/modified like /init, /init.rc and /sbin are overlaid with bind mounts (17).


On non-A/B system-as-root devices, Magisk needs to be installed to recovery ramdisk in order to retain systemless approach because boot.img contains no ramdisk (18).


Modules:
An additional benefit of systemless approach is the usage of Magisk Modules. If you want to place some binaries under /system/*bin/ or modify some configuration files (like hosts or dnsmasq.conf) or some libraries / framework files (such as required by mods like XPOSED) in /system or /vendor, you can do that without actually touching the partition by making use of Magic Mount (based on bind mounts). Magisk supports adding as well removing files by overlaying them.


MagiskHide: (19)

Another challenge was to hide the presence of Magisk so that apps won't be able to know if the device is rooted. Many apps don't like rooted devices and may stop working. Google was one of the major affectees, so they introduced SafetyNet as a part of Play Protect which runs as a GMS (Play Services) process and tells apps (including their own Google Pay) and hence their developers that the device is currently in a non-tampered state (20).


Rooting is one of the many possible tempered states, others being un-Verified Boot, unlocked bootloader, CTS non-certification, custom ROM, debuggable build, permissive SELinux, ADB turned on, some bad properties, presence of Lucky Patcher, Xposed etc. Magisk uses some tricks to make sure that most of these tests always pass, though apps can make use of other Android APIs or read some files directly. Some modules provide additional obfuscation.


Other than hiding its presence from Google's SafeyNet, Magisk also lets users hide root (su binary and any other Magisk related files) from any app, again making using of bind mounts and mount namespaces. For this, zygote has to be continuously watched for newly forked apps' VMs.


However it's a tough task to really hide rooted device from apps as new techniques evolve to detect Magisk's presence, mainly from /proc or other filesystems. So a number of quirks are done to properly support hiding modifications from detection. Magisk tries to remove all traces of its presence during booting process (21).




Magisk also supports:



That's a brief description of Magisk's currently offered features (AFAIK).




FURTHER READING:




Where is user/group id info stored on Android and how do I interpret it?


I have been wondering for quite some time now; where does Android store it's user and group id information?


For instance, on standard Linux, user and group information is stored in /etc/passwd and /etc/group, respectively. When you add a user to a group, his or her username/uid gets added to the list of users in that group, for instance the my audio group entry in /etc/group looks like this:


audio:x:29:pulse,edge-case

Where pulse gets mapped to the uid of the pulseaudio daemon and edge-case gets mapped to my uid (1000), on my Linux box.



As I understand it, each app that gets installed on Android gets it's own uid and gid and this is the bases of the "sandboxing" of apps that occurs on Android as they all run in their own process and can't access data of another process or files owned by another app unless there are declaration in a Manifest file created by app programmers which dictates what info is to be shared to other apps and what not. This is also how apps gain or rather request access to networking services during installation by requesting to be added to the INTERNET group or something like that, don't quote me on the name of the NET net group, it might be more like INET or INET6, either way I know there are several levels of network access that can be granted to an application through this mechanism on Android.


My question is, where is this information stored in Android?


Further more, is it possible to modify?


I would like to integrate a glibc stack with it and the data within it in my /etc/{passwd,group} files, trust me, they exist on my phone, I even have apt installed with a lot of other goodies.


Update: Have been doing more searches and This might be what I am looking for.


I will need to dig a bit deeper and make sure it is everything I am looking for.


Update: (5:40 June 27 2014)


Since someone thinks I don't know what I am doing or talking about, let me clarify;


User UIDs on Android are offset with 100000 and App UIDs are offset with 10000 when mapped to the user number _ app number, hence when a ps shows something like u0_a10 which means that User with UID 100000 is running app with UID 10010,


I have pulled UID and user/daemon names from system/core/include/private/android_filesystem_config.h and used those to update my /etc/passwd and /etc/group files (On my Android box), for example my /etc/passwd file (on my Android box) looks like this :



....
brainard:x:100002:100002:Professor Brainard,0420,,:/home/brainard
:/bin/bash
radio:x:1001:1001::/data/radio:/bin/false
bluetooth:x:1002:1002::/data/bluetooth:/bin/false
graphics:x:1003:1003::/home/graphics:/bin/false
input:x:1004:1004::/home/input:/bin/false
camera:x:1006:1006::/home/camera:/bin/false
log:x:1007:1007::/home/log:/bin/false
compass:x:1008:1008::/home/compass:/bin/false

mount:x:1009:1009::/home/mount:/bin/false
wifi:x:1010:1010::/home/wifi:/bin/false
adb:x:1011:1011::/home/adb:/bin/false
install:x:1012:1012::/home/install:/bin/false
media:x:1013:1013::/home/media:/bin/false
dhcp:x:1014:1014::/home/dhcp:/bin/false
....

I have set up configuration in /etc/adduser.conf to create new users like so ( On my Android box) :


# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically

# allocated user accounts/groups.
FIRST_UID=100001
LAST_UID=199999

FIRST_GID=100001
LAST_GID=199999

This is in accordance with Android's policy, I let "glibc based" system users still be created from range 100-999 I believe and I modified the audio user on my /etc/passwd and /etc/group files to be of 1005, like it is on Android.


I need to update Android and synchronize it with info regarding my User UIDs as well as with my Daemon or system user UIDs from the glibc stack.


You can read more about this in the book "Embedded Android" by Karim Yaghmour Sold here



My goal is to get programs like nvlc to work but I need to get UIDs and GIDs synchronized so that Android is aware of my users and the groups they belong to so that for instance, my brainard user with have access to the audio devices.


Also I need to inform Android about Postres and it's membership in the network group so that it can open sockets and allow access to databases. I have disabled PARANOID_NETWORKING in the kernel for the time being, but this hack only serves to make Android as Secure as vanilla Linux, no less. It would be nice to keep the paranoid setting and apply the group permissions to what daemons/users I see fit.


This would make Android a great operating system for public facing servers with such paranoid and fine tuned controls. Imagine having access to Kerberos, LDAP, PAM, or When using you phone as WAP having Radius configured, all of which are available from Debian and other distribution repos free of charge.


I have got this all figured out, I just need to know how to update Android's UID/GID database, which does get updated every time you install an app, so I know it is possible.


Update : (7:08pm June 30, 2014)


After going over the data in the following files ...


/data/system/packages.list
/data/system/packages.xml
/data/system/user/userlist.xml
/data/system/user/0.xml


... I have updated my question to include "how do I interpret it?"



  • I think I am going to need to create a custom PAM module and blend Bionic and Glibc into a single C library, they need to compatible with applications on both sides, no exceptions, expect C++ exceptions that is ;p--- I have written a couple rules of thumb-2 :) for myself to follow. I might also need to write a wrapper to popular package management systems like rpm and apt that fakes an apk installation and gives each new deb|rpm package a UID and maybe just sym-link everything into the FHS. That might be the most ideal solution I could go for, though the most work, as each would need a set of permissions in their "manifest", maybe a menu during install an the user can give and take as needs be.

  • Does anyone have a good reference that explains the syntax of these files? I am not very well versed with XML, not to mention it's use usually depends on the application that interprets it.

  • I do understand the packages.list file with the exception of the null entry in the last column, can anyone explain that?




apps(tasks) restarting even after killing them





Possible Duplicate:
Do I really need to install a task manager?
apps automatically starting?
How can I stop applications and services from running?



I have some apps running in background using cpu all the time and draining my batery. I want to stop them.


I have a latest task manager to kill the background tasks but BUT some of the tasks(apps) are restarting even after killing them, WHY ?


Is there any way to permanently kill a particular task ?



Answer



No, these tasks are services.

And I think the developer starts the service START_STICKY which means, the service get every time restored if killed (normaly not through a taskmanager, only on low memory).

I would suggest you, to remove the task manager. Android is not designed, that the tasks get killed.
If Android need memory, the system frees the ram on it own.


Sunday, April 24, 2016

How does compass calibration work?


I am wondering how compass calibration works / why e.g. drawing an 8 or rotating the phone to all 3 axis works (or at least shall work) - I mean I would understand the calibration process, if an application would say me: Point to north, then press that button down there, but you can start at basically zero knowledge for the app, just by rotating your phone! How is that done? Also, do I need to enter a special calibration mode or can I draw these figures (like the 8) directly in Google Maps? How does Google Maps know that I am not just really moving the phone but want to calibrate the compass? Thanks for any hint!



Answer



Compass calibration works by detecting the magnetic field intensity of earth. But sometimes due to strong interference from other electronic devices like transformers, compass sensor may get wrong idea about the magnetic poles of earth and can point in wrong direction.


So to ensure that, it asks users to recalibrate compass by rotating in figure-8 direction so that it can judge the magnetic intensity in all directions. From that data, it deduces the actual poles of earth.


ssh - Exotic key combos (e.g. for emacs) with bluetooth keyboard


I recently bought a bluetooth keyboard (logitech, not sure of the exact model) for my Nexus 10 (on Android 4.3). It works nicely for everything except for some unusual key combos used in Emacs, such as control-Enter and control-/ (these don't work, just emit Enter and "/", repectively).


I'm using JuiceSSH to connect to a Linux host.


Has anyone found either ways to fix this or systematic ways to debug keyboard issues with Android & ssh?




7.0 nougat - How to delete a date and time tab in setting to prevent user from changing it?


(Please understand me about my broken English.)


I am a student in South Korea.


I am making a quite restricted Lenovo tablet, to make it a perfect education device. The goal is to "help" students to study hard.



To do that, I have to prevent the users from changing the system time in the "Settings", Because changing system time is a easy way to pass my time-dependent application block.


So I am trying to delete the date and time menu from the system settings, to keep only auto time:


enter image description here


By an experience of deleting a guest mode in the system, I think I should use the Buildprop app. But I don't know, what I should delete and change in the system.


Of course it's okay not using Buildprop.


I have a rooted device and my Android version is nougat, 7.1.1.


I'm sorry for using broken English and thanks for reading this. Have a good day!




Why is DoubleTwist launching and playing when I remove the headphones?


I can't figure this out.


It appears that if I'm using Google Listen, and I remove the headphones from the jack, Listen automatically pauses (which I expect). But then DoubleTwist launches, chooses an MP3 at random, and starts playing (which I don't want).


Further, it seems that if I pause Listen before I pull the jack, it doesn't happen.


I say "seems" because I'm having trouble getting consistent results.


The long-and-short of it is that DoubleTwist is launching and playing a track when I remove the headphone jack for no apparent reason.


Has anyone else encountered this? How can I stop it?


(Unrooted Motorola Droid, Android 2.2)



Answer




I can't reproduce it. It may have been fixed during an OS upgrade.


If it comes back I'll refresh the question.


Saturday, April 23, 2016

sms blocking - Block SMS without number


In India, we often receive SMSs which do not actually have a number, but instead, have a name like 'VK-AMSWAN'. SMS blockers like Truecaller don't have any facility to recognise such senders, and keep asking for a number to block.


How do I block such senders? I cannot blanket block all unknown SMSs because even banking information comes from such named senders.



Edit: When using third party SMS apps like chomp SMS, there is an option to show contact number below contact name. Guess what it shows for the spam?


VK-AMSWAN (name)


VKAMSWAN (where the number shows up for other contacts)


-_-


Edit 2: Thank you so much for your suggestions, guys. :) But it seems SMS blocking isn't as well developed as call blocking is. Truecaller actually rejects spam calls without you ever knowing about them. No SMS blocker I've seen has this facility so far. All they do is receive the messages and hide them. If someone can locate a method to fully block spam SMS, please do tell. :)




Thursday, April 21, 2016

wi fi - Android wifi says "Connected, no internet" but internet works just fine


This is a strange thing that started happening with the wifi network at my work. Android devices connected to the network say "Connected, no internet" however the internet works perfectly well. This has happened to devices running android 6 and 7. This is a small business in the US and theres no proxy or captive portal that is blocking any DNS. Windows and Ubuntu laptops connect and say everything is fine, seems to be something Android specific.



Does anyone know how exactly Android determines weather a network has internet access? This seems like the solution will end up in the router configuration, but knowing what could cause Android to behave this way would be helpful. What steps could one take to troubleshoot this issue?




usb connection mode - How do I turn my Android into a USB Webcam?


I can turn it into an IP Webcam fairly easily using a myriad of apps + iSpy on the desktop.


However, even with 2 gigabit wifi, framerate seems unreasonably poor. Therefore, I would like to plug in my USB cable and stream it (DisplayLink can stream 4k over USB, so it must be possible in theory)


This would save me from spending hundreds of dollars on yet another camera. 4k video is supported by my Samsung S6, and that would be amazing to be able to use as a webcam.




linux - Where to find "adb" version 1.0.32 to install on Ubuntu?


My laptop has Ubuntu 14.04 as OS. I installed latest version of "android-adb-tools" available in "Synaptic Package Manager". After installation, adb command --help says that adb's version is 1.0.31.


I used adb sideload to install a new ROM on my Samsung device (with TWRP version 2.8.4.0 as recovery), but command returns error: protocol fault (no status) and TWRP says that I have to use adb with version 1.0.32 or higher! Where i could find "android-adb-tools" package with adb version of 1.0.32 or higher?





Wednesday, April 20, 2016

formatting - Can I recover app data after the phone has been Factory Reset?


Without remembering application data, I reset my Galaxy S3 to factory state. Now, I lost data for one expense manager app. Is there any way to recover the data?




samsung galaxy s 5 - Can I make Android require Fingerprint + PIN to unlock the screen?


I have a Galaxy S5 with a fingerprint reader. I'd like to be able to unlock my phone with a PIN or pattern unlock, but I also want to protect myself from shoulder-surfing.


Is there a way to require both a fingerprint and a PIN/pattern to unlock the phone? If the fingerprint fails to read correctly, then a much stronger password would be required to unlock.


This would let me scan my fingerprint and put in my PIN/pattern without worrying that someone might see my PIN and unlock my phone later. It also protects me more from governments that can require me to unlock my phone with my fingerprint, since a PIN would also be needed.


Is there an lockscreen app, XPosed module, or other method that can enable this two-factor-like authentication?



I have a rooted Galaxy S5 running Android 5.0.




Tuesday, April 19, 2016

samsung nexus s - Create pdf document shortcuts on home screen


I had downloaded a PDF file. How can I create a shortcut to the PDF document on my home screen. I use Anycut, but it doesn't do what I want.




nexus 5 - How to change encryption password - Android 5.0


My encryption password is too simple and was wondering how I could change it without having to reset the whole phone?


I know there is an app for Android 4, but what would be the procedure on an Android 5 device?


Device: Nexus 5



OS: Android 5.0



Answer



There currently is no such app that does this on Android 5.0 so you should back up your data and wipe the phone and start again with a new password.


google play store - Out Of Space error


For at least 3 years now, my Samsung Galaxy Tab 2.0 running Jelly Bean is running into some problems. Ever since I hit ~300 MB left, every app I try to download from my device or the web version of Google Play has shown the error 'insufficient storage space availible'. I have tried the following so far:




  1. Clearing Google Play cache

  2. Clearing Google Play data

  3. Removing Google Play updates

  4. Uninstalling some apps

  5. Clearing device cache

  6. Memory Booster app


Any app seems to do this unless I have about 8x the required amount of storage left. By the way, I can't root my tablet.


(and yes, I know this has been asked before.)



Thanks!


EDIT: I now have 360 MB remaining, and I am now trying to download a 15 MB app. After trying to download with no Google play data, cache, and with Google play 1.0, something must be wrong.(Edit- No, duh.)


NOTE TO MOREAKI: unfortunately, no. I do not have a rooted tablet. Memory booster seems to work downloading other apps, but most apps will not download.


Please comment if you oppose anything I have said.


Sometime I will try to root my Galaxy tab to see if that solves the problem.


Edit again: I never did.




Monday, April 18, 2016

How to start SSH Server in my Android?


I am trying to login to Android Eee pad transformer from my other linux box using SSH. This are the step i followed and failed. So asking here for the correct answer.


1) Go to Android market and download install Connectbot




  • Launching ConnectBot

  • Asks ssh or telnet or local

  • Press local

  • Asks username

  • Username applied dummy

  • Connected to local Android

  • type ip addr; in the terminal shows ip address and i can ping 8.8.8.8


enter image description here



2) Now i want to access to this box from outside box



  • Go to Android market and install SSDroid and SuperUser

  • Launch SSDroid

  • SSDroid says root:off, sftp://root@ipOfthisAndroidBox:2222 ready

  • From another box i try to login using ssh root@ipOfthisAndroidBox:2222 fails


enter image description here


3) Launch SuperUser it tries to install something but fails


enter image description here



All i get to verify am i rooted, always it shows:


$ su
su: permission denied

Follow up: How do i login after installing SSHDroid?


[sun@example ~]$ ssh root@94.xx.xx.xx -p 2222
The authenticity of host '[94.xx.xx.xx]:2222 ([94.xx.xx.xx]:2222)' can't be established.
RSA key fingerprint is 14:ae:33:xxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[94.xx.xx.xx]:2222' (RSA) to the list of known hosts.

SSHDroid
Use 'root' on rooted devices otherwise any username works
Default password is 'admin'
root@94.xx.xx.xx's password:
/data/data/berserker.android.apps.sshdroid/home $ uname -a
Linux localhost 2.6.36.3-00004-g069b8b5 #1 SMP PREEMPT Wed May 11 22:14:22 CST 2011 armv7l GNU/Linux
/data/data/berserker.android.apps.sshdroid/home $ uptime
09:20:16 up 2 min, load average: 0.26, 0.25, 0.11

/ $ ls

EeePad_bootup_first_page.rle acct default.prop init.ventana.rc sys
OSD_battery_100.rle bin dev mnt system
OSD_battery_25.rle cache etc proc ueventd.goldfish.rc
OSD_battery_50.rle config init root ueventd.rc
OSD_battery_75.rle d init.goldfish.rc sbin ueventd.ventana.rc
Removable data init.rc sdcard vendor

More informations: https://gist.github.com/1357588

How do i login to my Android box from other distro's? (I am using Fedora, CentOS, FreeBSD).




Answer



SSHDroid does not need root, it's optional. Every App can bind a socket on an not privileged port (>1024).


I am pretty sure that your ssh client parameters are wrong, the port especially. AFAIK you can't add the port via : to the hostname. Try ssh root@ipofandroid -p 2222 instead.


If you need more verbose output of the ssh binary, start it with -v, -vv or -vvv. This helps to figure out problems.


4.2 jelly bean - Play Store 4.9.13 insufficient storage error and icon issues


I've been having issues with the Play Store's recent 4.9.13 update on my Blu Dash 4.5. Every time I try to install or update any app that is more than 1 MB, I keep getting an "insufficient storage" error, even though I have about 120MB on the apps partition free. Apps do install and update on an older version, however. In addition, the icons on the Play Store have weird black borders. I have searched all over the internet and I have yet to find a solution for either of these problems. Apparently, most devices affected by these bugs are using MediaTek chipsets and have Android 4.2 on them. My phone is using the stock ROM and is not rooted.


This is what it looks like when I enter the Play Store. You can barely see a black border on the Ice Age Adventures icon.



A better look at the icons.


This app in question is about 2 MB.




security - How can I disable or password protect my device's 'factory reset' function?



Is there any way to prevent a factory reset, like password protection? I would basically like to protect my phone from resetting if it gets stolen.




5.0 lollipop - Where do I get Android L iso for x86 environment?



My question is much similar to this question: Download location for Android 4.4 x86 (64bit)


Basically, I want to get Android L(a.k.a Lollipop, 5.0) iso for x86 architecture, so as to run it in VM. But I can't find anything newer than 4.3 anywhere on the web, so how do I get it?




cyanogenmod - How to re-unlock bootloader for OnePlus One


I have OnePlus One with CyanogenMod 12 from factory and I decided to update to CM 13 (nightly build).
To achieve this I did the following from OSX:




  1. Unlock the bootloader (fastboot oem unlock)

  2. Boot TWRP (fastboot boot twrp-2.8.6.0-bacon.img)

  3. From TWRP I installed CM 13 (cm-13.0-20160105-NIGHTLY-bacon.zip) and GAPPS (open_gapps-arm-6.0-pico-20160105.zip)

  4. I also installed the latest Cyanogen Recovery (cm-13.0-20160105-NIGHTLY-bacon-recovery.img)

  5. For some reason, I felt like leaving things as they were, and I relocked the bootloader (fastboot oem lock)


Now, I cannot unlock the bootloader anymore in order to do things like install/boot a custom recovery tool (like TWRP)
Running 'fastboot oem unlock' just reboots the device in recovery mode, but the bootloader remains locked:


$fastboot oem device-info

...
(bootloader) Device tampered: true
(bootloader) Device unlocked: false
(bootloader) Charger screen enabled: false
(bootloader) Display panel:
(bootloader) console_enabled: 0
(bootloader) exec_console_unconsole: 0

A solution would be appreciated, but I am also curious why it behaves like this after a manual lock.
As suggested by @Firelord, there seems to be a solution for Windows users here: https://forums.oneplus.net/threads/important-bootloader-wont-unlock-after-relock.324398/




Answer



In my search, I came across an interesting thread that was related, but in order to install their script, you need to have a custom recovery tool installed or to be able to boot into it (e.g. fastboot boot recovery.img).


I had the stock Cyanogen Recovery tool and I couldn't boot into TWRP because of my actual problem (cannot unlock bootloader anymore), so I dug inside their script and used the content meant to reset the lock and tamper bits of the bootloader.


Now I could run the commands manually if I had root access and luckily, in CM 13 ROM, you can enable it from 'Developer options' menu.


Here are the commands I used after enabling root access for ADB:



adb root # restart the adbd daemon with root permissions
adb shell # run remote shell interactively
dd bs=1 count=1 skip=1048080 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10- # print the lock bit state (00 - locked, 01 - unlocked)
echo -ne "\x01" | dd bs=1 count=1 seek=1048080 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # set the lock bit to unlocked(01)

dd bs=1 count=1 skip=1048084 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10- # print the tamper bit state (00 - untampered, 01 - tampered)
echo -ne "\x00" | dd bs=1 count=1 seek=1048084 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # set the tamper bit to untampered(00)

Result:


$fastboot oem device-info
...
(bootloader) Device tampered: false
(bootloader) Device unlocked: true
(bootloader) Charger screen enabled: false
(bootloader) Display panel:

(bootloader) console_enabled: 0
(bootloader) exec_console_unconsole: 0



I guess the tamper bit is changed the first time you unlock the bootloader (fastboot oem unlock) and after you lock it back (fastboot oem lock) it won't allow you to re-unlock.


Sunday, April 17, 2016

calibration - Is recalibrating the battery after flashing a new ROM really neccessary, and if yes, why?


The description of the app, Battery Calibration, claims that after changing ROMs you should recalibrate your battery gauge. It has good reviews so it seems like the general concept is sound and trying the app at least won't cause harm.



What I'm wondering is what the battery statistics have to do with the ROM. My understanding is that the batterystats file contains a mapping of charge values in mV to %, so why does it need to be regenerated if a new ROM is flashed?



Answer



No.


This App just removes the file "batterystats.bin" in the "data/system" directory. It has nothing to do with your battery life and also not the status indicator of your system.


It only keeps the Infos in the "Battery Usage" screen. It will also be resetted every time you connect to a power source.


Further Information and Sources:
XDA-Developers and Dianne Hackborn (Google employee)


wi fi - Wifi won't turn on after rooting


I have an Epson Moverio BT-200 Wearable glasses with Android 4.0.4 and kernel "3.0.21-00003-OMAP-Android+". I rooted the glasses, tried every method without success until I found KingRoot, which succeed in rooting.


After that, the wifi toggle on Settings won't enable. Sometimes is gray (without enabling me to tap it), and sometimes is clickable but when i tap it to turn it on it gets off again and the screen remains saying "Turning on Wi-Fi" forever.



I did not do anything else after rooting. What can be the cause? I tried factory resetting the phone via Settings > Backup, and it did not solve the issue (I also still have root after factory resetting).


I have read that flashing the original ROM could fix it, the problem is that Epson does not offer the ROM image anywhere.


Thank you.




external sd - How can I recover the files in LOST.DIR on my SD card, and what are they?


I've always had a LOST.DIR folder on my external SD card, which until now has been empty. Today my phone complained that my SD card was damaged and wouldn't mount it, so I pulled it out and looked at it on my computer. There's now a 70237 file inside LOST.DIR which is 128 MB. It starts with something like "ëWindows 98 FAT boot sector (which makes no sense).


What did Android dump here and and why? (I think I may have disconnected my phone from my PC yesterday without ejecting the drives first, so that might be the "why", though it was from Windows XP and not Windows 98.) Is there a simple way to recover the information in this file?





When will my phone get the Android 2.3 update (Gingerbread)?


Android 2.3 (Gingerbread) SDK was released on December 6, 2010. (High-level user highlights)


Of course, not all devices will get this update right away and others won't get it at all. Each manufacturer and carrier often choose to add their custom modifications which tend to delay the official release.


When will each device get Android 2.3, either officially or unofficially, if ever?


See also:




Answer



This community wiki will list all of the known and rumored dates for devices. If you have an update make sure to follow the format that's been established, and the following guidelines:



  1. Keep phones in alphabetical order listing the manufacturer and model


  2. Specify if the date is confirmed or rumored and link to the source

  3. If there is an unofficial release, link to the site where it can be downloaded

  4. If a new update comes out (e.g. 2.3.5 over 2.3.4), link to the new and don't keep the old information


Note that devices that do not meet Google's Compatibility Definition will not receive a Google-sanctioned update. In the case of the major manufacturers and many others, that means they won't release an update at all since Google's certification is important to their business.



Commtiva z71



Geeksphone One




Geeksphone Zero



Google Nexus One




  • Official: 23rd February 2011. (According to a tweet)




  • Unofficial:






HTC Aria



HTC Desire



HTC Desire HD



HTC Desire Z / G2




HTC Droid Incredible



HTC Droid Incredible 2



HTC Droid Incredible S



HTC EVO 4G



HTC EVO Shift 4G




HTC Hero



HTC Inspire 4G



HTC Legend



HTC myTouch 3G Slide



HTC myTouch 4G




HTC Tattoo / Click



HTC Thunderbolt



HTC Wildfire / Buzz




  • Official: Never. (Official mail from HTC support; cause: doesn't meet the minimum requirements, e.g., 1 GHz processor)





  • Unofficial 2.3.7: 11th October 2011. (CyanogenMod 7.1)




Huawei U8220



LG Optimus 2X / G2X:



LG Optimus 3D



LG Optimus One P500




LG Revolution



Motorola Atrix 4G MB860



Motorola Backflip / Motus MB300



Motorola Cliq MB200



Motorola Cliq XT MB501




Motorola Defy MB525



Motorola Droid A855



Motorola Droid 2 A955



Motorola Droid X MB810





  • Official: 24 October 2011. (Confirmed)




  • Unofficial:





Motorola Milestone X



Samsung Droid Charge




Samsung Galaxy Ace / Gio / Fit / Mini



Samsung Galaxy S


1. Canada Bell Vibrant GT-i9000M



2. Canada Telus Fascinate 3G+ SGH-T959D



3. International GT-i9000




4. US AT&T Captivate SGH-i897



5. US Sprint Epic 4G



6. US T-Mobile Vibrant SGH-T959



7. US Verizon Fascinate / US Cellular Mezmerize / C Spire Wireless Showcase SCH-i500



Samsung Infuse 4G




Sony Ericsson Xperia Arc



  • Official (2.3.4): 18 October 2011 (Confirmed)


Sony Ericsson Xperia X8



Sony Ericsson Xperia X10



ZTE Blade / Orange San Francisco / Dell XCD35




ZTE V9




Barnes & Noble Nook Color



Samsung Galaxy Tab





This is not specific to Gingerbread, but this forum posts lists the rough dates for all Android versions for all Motorola models: https://supportforums.motorola.com/community/manager/softwareupgrades


Saturday, April 16, 2016

How do I copy pictures onto a folder on the home screen?


I have some pictures that I want to copy to a folder on the home screen, but I can't see any way to do that. The home screen isn't a directory like all the others, so I can't copy files there. Is there any way to do that?


I have a Samsung Galaxy S with Froyo.



Answer



If you install a file manager app like Astro File Manager you can put any files into any directory you create, including pictures. Then all you have to do is make a shortcut to that directory on the home screen.


rooting - How do I root the Dell Streak 5?


I have a Dell Mini 5 (the original Streak). As in the title, how can I root this device?



Answer



Disclaimer: "Safe" does not mean nothing can go wrong, particularly if you don't follow the instructions exactly. I make no guarantees, and you take the risks of rooting upon yourself. See this post for general rooting guidelines and an index of other devices for which we have rooting guides.




If you have the original Android 1.6 Donut firmware on your device, upgrade it to 2.1 or higher. The official update page should bring you from 1.6 (or 2.1) to 2.2.



The easiest method is with Gingerbreak. (The 2.3.3 update patched the vulnerability used in Gingerbreak, so if you have Gingerbread then see the next section.)



  1. On the device, go to Settings -> Applications and make sure Unknown sources and USB Debugging (under Development) are checked.


  2. Download the Gingerbreak app via your PC and put it on the device's SD card, or use the browser on the device.

  3. Install a file browser like Explorer since it appears the Streak doesn't come with one.

  4. Navigate to the Gingerbreak .apk, install it, and run it to root your device. You're done!



You can attempt to root via other vulnerabilities but the safest method is probably to replace the stock recovery with StreakMod and flash the SuperUser package through it, bypassing the need for hacks. This might work for 2.1, but I haven't tested it.


(Wondering why this is safe? The Streak replaces the recovery with stock on boot. If you screw it up, it will fix itself!)




  1. Install the Android SDK on Windows. (You can use Linux, but then you have to locate the fastboot package put out by HTC at one point since it's not bundled with the SDK for Linux.)





  2. Download StreakMod and extract recovery.img from the .zip file to somewhere easily accessible, say C:\recovery.img.




  3. Download the SuperUser package and put it on the device's SD card.




  4. Connect the phone to your PC via USB and put it into Fastboot Mode.





    1. The easiest way is through adb on the command line (adjust the path if needed):


      cd C:\Program Files\Android\android-sdk\platform-tools
      adb reboot bootloader

      Alternatively, turn off the phone and then turn it on while holding the Camera button. When you reach a white screen, release the Camera button. When it loads, tap the FastBoot text button in the top right corner of the screen.




    2. You should see FASTBOOT_MODE in the bottom left of the screen when it's ready.







  5. From the command line (adjust the paths if needed):


    cd C:\Program Files\Android\android-sdk\tools
    fastboot flash recovery C:\recovery.img

    The device should show Download RECOVERY Done! when complete.





  6. Continuing from the command line, enter fastboot reboot and immediately hold down both volume buttons on the device until you reach Recovery Mode.


    If the device boots, go back to step 4! The custom recovery has been overwritten with stock by the init scripts; you need to get into StreakMod before this happens.




  7. Using the volume buttons, scroll down to 2. Software upgrade via Update.pkg on SD Card and select it by clicking the Camera button. This will take you to StreakMod Recovery.




  8. Using the same buttons as in the previous step, select apply sdcard:update.zip, then choose zip from sdcard. Select Superuser.zip from wherever you put it (e.g., download/). Choose Yes - Install Superuser.zip and let it install. Then back out (using the Back touch button) and hit reboot system now. You're done!





  9. If you want to keep StreakMod Recovery, use your new root powers to rename /system/etc/install-recovery.sh to something else like install-recovery.bak, then repeat steps 4-6a above. Note that stock recovery can be downloaded and flashed just like StreakMod, so there's not much to worry about if you decide to do this.




usb - Why does MTP show wrong directory location?



MTP (Miserable Transfer Protocol) failed once again.


After moving a directory to a different path, it is still on the same path as before according to MTP.


I already tried re-plugging the USB port and reading it from a different computer. Same result.


Why is MTP so bogus that it shows a moved folder on its previous path?




Answer



What is Content Provider?


It seems to be a problem related to Media Providers. As the name suggests, they provide a database of available media in a more organized way to other apps as the Contacts Storage (com.android.providers.contacts) provides contacts to requesting apps. Purpose is to scan and store media file info for quick access so that individual apps don't have to scan folders manually for an up-to-date library, reducing time and effort.


Android's built-in Media Providers:


Some file explorers, media players and gallery apps depend on the files database (/data/data/com.android.providers.media/databases/external.db) built by Media Storage app for MediaStore content provider from the contents of external storage (/sdcard and external SD card; removable storage like USB isn't indexed). Apps Media Storage (com.android.providers.media under which com.process.media runs), Downloads (com.android.providers.downloads.ui), Download Manager (com.android.providers.downloads) and MTP Host (com.android.mtp) work in collaboration under same UID.


Database is built/updated as MediaScanner (android.process.media) is invoked by some app such as by sending broadcast MEDIA_SCANNER_SCAN_FILE or through scanFile. Broadcast receiver com.android.providers.media.MediaScannerReceiver is launched on boot that listens for android.intent.action.BOOT_COMPLETED, so MediaScannerService will also launch on boot. But restarting phone sometimes doesn't update whole external database (or at least delays). MediaScanner is also triggered when a new storage device is mounted i.e. on MEDIA_MOUNTED which could possibly be manually broadcasted to force updation on pre KitKat versions.
In response, apps are informed of updated databases such as by receiving broadcast MEDIA_SCANNER_FINISHED or through onScanCompleted.


Problem with Media Providers:


MtpService is also a part of Media Storage. Due to some bugs (acknowledged since 2012) in implementation of MTP, database isn't updated or is delayed or isn't properly communicated with the client as the files change, so MTP shows outdated / incomplete contents. The same can happen if an app creating or downloading a new file fails to trigger the MediaScanner or fails to receive back the updated information.


Solution:



In order to force database updation, delete the file and run some media scanner app. Non-root users can delete this file by clearing data of Media Storage app.
But be aware, it'll also clear internal.db which will make ringtones unavailable and a new database will be built from /system/media on next reboot i.e. on BOOT_COMPLETED.


PS: Note that the internal SD card we see is emulated from /data/media/ using sdcardfs (or FUSE in older versions of Android). Actual contents of internal memory can be seen directly from /data/media/ (root required). UMS used to expose the /data block device to PC but was deprecated in favor of MTP. It's a good option when larger size of data is to be transferred at high speeds. It can be enabled by some workaround.
There are also other reasonable alternatives for MTP like FTP, SFTP/SSHFS, adbfs etc.


RESOURCES:



samsung galaxy s 2 - Cannot restore Kies backup after firmware upgrade

I backed up my Samsung Galaxy S2 on Kies before updating to Ice Cream Sandwich. After the upgrade I tried to restore, but the restore fails ...