I need to run my android app from a remote computer via SSH, but I'm not a command-line expert, so I would like to know: how to run a specific action of an app? (not just open it) Which implies: how to KNOW the exact sintax of possible actions of an app?
eg: I want to start a audio-recording app on my phone from my computer, AND start recording from remote. Is it possible?
Thanks, Andrea
Answer
Use this:
am start -a android.intent.action.MAIN -n /
To control an app, you'll have to put correct values of and in the command. For example, you can use com.google.gmail/com.google.gmail.check_mail (Hypothetical names) as last part of command.
Not all developers do smart modular programming. Its good habit to divide an app in multiple classes which could be triggered by intents, but not all developers are smart.
Solution of 1st problem: Decompile the app using apktool and see all info. There are also other ways, but this one is always-working method (unless app is based on NDK instead of SDK).
Solution of 2nd problem: Nothing.
Don't worry, most of popular apps follow best programming practice and they provide Public API from which you can get class info.
In stable mod 7.1, I am facing this problems. I don't know if its a bug or what, please help me out.
My screen goes off as soon I dial or receive a call. After that I am unable to end the call as it never wakes up. Pressing the power button has no effect..
The problem is not just related to ending the calls. I am unable to do anything on my phone as it never wakes up. Then I have to either pull off the battery and restart the phone or plug in the charger to wake it up. It never happened on stock ROM so no hardware problem. I checked the solution for this problem and it was "It seems to be the screen protector is at fault. CM7.1 doesn't play nice with it. I just cut a hole where the proximity sensor is and it basically fixed it. " But IMHO if the proximity sensor does not work properly with cyanogenMod then why does the power button also stop responding.
But if they are related then can you guys please tell me with an image where the proximity sensor is located on a Defy? So that I may try the other solution (cutting the screen protector).
I am using Samsung Galaxy Pro B7510. The problem is that my touch screen is not working sometimes. It has been like this for several weeks. I use Pin lock feature to unlock the phone and EZanswer Trial to attend calls. This is possible only because of the qwerty keyboard. Without which I would be doomed. Some times the touch screen starts working for some time and then, without a warning, it becomes not responding. No error messages are seen.
This all started when after I upgraded it into GingerBread 2.3.6 and rooting . After seeing this problem, I downgraded into the stock rom, unrooted it, and everything.
Not sure if its a software issue or hardware problem.
Any help will be greatly appreciated.
Answer
I have had this issue before when I rooted my galaxy ace it was extremely random and I fixed it by flashing an old stock rom and then using Kies to upgrade to the latest.
If this doesn't work it would suggest that your digitizer has gone, or is in the process of going. If you have time remaining on your warranty, and have returned it to stock, you should be able to return it for repair to samsung.
Cyanogenmod(12.1)'s recovery has no backup or restore option. As I read in the answer of a previous post, CyanogenMod recovery is basic, so we should flash another recovery. The easiest way would be to use rashr, Fashify or GooManager to install CWM or TWRP. Unfortunately, these solutions don't work on my i9100.
An other answer in the same post says : "Especially for Galaxy S2. I stuck with Cyanogen Recovery for a couple of days. Neither Rashr nor Flashify worked for me. In the end, reflashing a TWRP kernel (Apollo 9 light) with Flash Gordon did the trick."
My questions are where do I find this TWRP kernel and how do I install it ?
So whenever I boot up my device or restart it I see a little yellow message in the top left corner of the screen that reads "Set Warranty Bit: Kernel." I have researched this issue and learned that I must reflash the firmware of the phone.
That being said. If I reflash the correct firmware for the same model for the same carrier, will my phone still have service following the procedure? Or will I have to work with my carrier to reactivate my phone?
Answer
Short answer: you don't need to worry.
Provided you pay your bills, your carrier does not care much, if at all, that you root/ flash Roms and such. No extra steps will have to be taken either; its all on the sim, and flashing ignores that. Keep note you have lost your warranty, though!
I'm still adjusting from going from my iPod to an HTC Incredible phone.
One thing that is very non-intuitive for me is to press the power button when I want to "wake up the phone" after it has dimmed out. I'm just so used to using the big button on the bottom of my iPhone for this that I instinctively hit the "optical joystick" button all the time by accident.
Is there any way to configure the button so the optical joystick button can pull the phone out of sleep mode?
I setup privacy guard for some of the ROM-Apps and now the GUI crashes when i even try to get the pin entry field on the lockscreen. My phone is rooted and i can try via adb or recovery. How can i disable the privacy guard or reset it from a root shell?
Answer
Removing /data/system/appops.xml from TWRP (recovery) helped.
What is the safest method to root a Samsung Galaxy S 2 i9100 G under a GNU/Linux system? (ArchLinux).
I am a programmer (without android programming experience, only desktop and web), it does not need to be "one click away", but the method has to be safe and you've tried it and it works.
I have adb installed and it works, if rooting the phone involves using it too.
I'd like to add a shortcut on Android 4.2.1 to a local pptx file.
Is that possible ?
Answer
In fact it's easy to do using a file explorer application.
I used ES File Explorer but I suspect other programs have the same feature.
Using ES File Explorer, you have to navigate to the file, then do a long click on the file icon until a menu appears. Then you choose Shortcut. Nothing shows the operation works but a new icon will be present in the launcher.
Recently I noticed that even while no applications are actively running (at home screen), the up and down arrows under the WiFi status bar item are turning on/off. This is a recent change, and seems to have started after some automatic updates.
I've gone through and killed all the running processes (that allow you to kill them), and the behavior continues. I'm assuming it must be a system process that's causing this, but I can't for the life of me figure out which one or why.
I have a Samsung Galaxy S4 with KitKat 4.4.2, if that matters. And I've already tried restarting the device.
How can I determine what is causing the WiFi indicator to signal data is being transferred? I'm comfortable creating simple android applications, so a programming solution is an option.
It was noted in another thread that it should be possible to build up a white list for an android device using the /etc/hosts file. I would like to experiment with this idea. Does anyone have any guidance to offer as to how to go about it?
It has been many years since I played with that area of networking, but from what I remember the host file allows you to specify an IP for an URL which overrides the published DNS settings. With that it is fairly easy to build a list of content that I want to have accessible, or explicitly blocked, but I am not sure how that helps prevent access to other content. I am not aware of, and so far google has not showed me, any way to tell the host file to intercept all other requests. Does android support some form of wild card in the hosts file? Or is there some way to disable DNS regardless of the active network connection?
Should note that the devices I am worried about at the moment are wi-fi only tables running android 2.3.3. I am willing to root them if necessary.
One can get a "cheap smartwatch" (most likely running Nucleos) for EUR 30 or less, a Pebble watch (usually running PebbleOS) for EUR 100 or less, or a watch running android-wear starting at a little more than EUR 100. Having decided to check with the first variant, I've seen its use from the point of view of an Android user is quite limited: it makes a lot of noise if it gets too far from the Android device (to prevent you from losing it), and it can show some (not all) notifications. Squinting at the latter, I notice it requires a huge companion app plus the Google services to work with an Android device1. I'm not at all sure about the Pebble, running an OS based on the FreeRTOS kernel.
So my question, purely from the point-of-view of an Android user: What are the pros/cons and compatibility issues of those systems?
Please leave aside device specific things like water-proofness, Svarovski stones on the corners, or "valuable brandings": I'm not asking for a shopping advice on a specific model here. Also please keep out "personal preferences" (those which fall into the category of "primarily opinion-based") as core element (side-marks are of course OK), but rather stick to facts. What I'm looking for is general/canonical information about compatibility and basic features concerning their interplay/interaction with "my Android device" (you could phrase it "how they improve my Android user-experience").
(Using my Google-Fu on "Pebble versus Wear" etc. mostly brought up specific device comparisons only, like "LG G Watch versus Pebble round" – which is not what I'm after. I don't want a device comparison – I want some background on the underlying systems and their "co-operation" with Android)
PS: With a first answer being available, I'm also specifically interested to know which of the systems works without Google Services being installed – or whether there exist dependencies other than their "controlling app". Backing by "official/authoritative sources" would be very welcome in this context.
1: My devices are running without GApps, and the microG replacement does not yet support Wear
I'm sure many people like me are aware and annoyed by the extremely limited amount of RAM in Nexus S (512MB but only 300+ is usable), I have searched all over google for a solution to increase the amount of RAM available and came up empty (I tried swap file applications but they just broke my system's SD card partitions causing a complete reset).
I wonder if there is any hardware solution to this problem. Is it possible to swap the chip out for a bigger capacity one? I realize that it is not as simple as swapping out PC RAM from a dimm but I haven't seen any schematics for the chip layout on the ARM boards in the smartphones so I really hope that it is somewhat possible to increase the amount of RAM on the board.
Answer
You can't. Most smart phones are designed as a System-on-Chip; which means that the CPU, RAM, GPU, device controllers, etc are all in a single chip. Updating RAM in such system means replacing a whole lot of other stuffs. Not to mention that you probably would have a hard time finding a chip with different specification which fits perfectly into the hole that was left behind after you dismounted the chip; due to size restrictions, the components around the chip are designed to fit tightly into the available space.
Which then initiates a backup on the phone. On the screen I can see it asking for an encryption password, which i provide by keyevent through adb. The final sticking point, is being unable to find a keyevent which will press the "Backup up my data" button. I am able to tab to it, and have it highlighted, but the 'space' and 'enter' events do not trigger it, as well as 'soft_right'.
My phone has a pattern lock and I want friends to be able to unlock it with the pattern, however, I do not want them to have access to my gmail. Is there a way that I can force gmail to ask for the password every time I/someone try to open it?
I've read that the password tokens are an intrinsic part of the Android OS, is there any way I could do such a thing without losing the notifications of new e-mail?
Thanks!
Answer
You could use an app locker like Smart App Protector. This will protect your installed applications using a password or pattern.
My HTC One V (on 4.0 ICS) seems to be continuously downloading something even when it's inactive, and it's using the battery abnormally fast.
My data usage graph: (click to enlarge)
On the first picture, the brown line is for the "Android OS" element, which as you can see is responsible for at least 60% of the data consumption. I don't know what Android is downloading, but it does it continuously and it has a big effect on my battery's life. When I disable mobile data, the battery usage line becomes flat (see second picture). How can I check what exactly "Android OS" is doing? And how can I disable this activity?
Here is the battery usage graph. As you can see, the line became flat when I've disabled mobile data. (click to enlarge)
Answer
I've found the culprit! I went to Settings > Call > Internet call settings and deleted the SIP account I had once created and forgot. The phone kept reaching the SIP server (probably to check for incoming calls).
I had to install a packet sniffer on the phone (tPacketCapture) to see where the requests where going and realize I had configured a SIP account.
Is there an app that will allow full sync functions to only occur when connected to particular white-listed WiFi and / or keep selected accounts from syncing when on other away / public / non white-listed WiFi routers?
Example being, when I am on my trusted WiFi connections to have full sync rights allowing Gmail and Facebook as well as other apps to function normally but when on a WiFi not white-listed only allow browsing or particular apps to access and sync?
I imagine this would be a firewall function however have yet to find one that distinguishes multiple WiFi connections from each other. If an app like this does not exist what code would be a good start to review and develop such a function.
Answer
I don't know how to realize that for "specific apps to sync". But using an automation app like tasker, you should be able to globally switch sync on/off depending on whether you are connected to a specific WiFi. Basic structure for Tasker:
Create a Task, name it e.g. "SafeWifiTask", and have it switch Sync on. (you can also add other jobs to this task which you want to perform on a "safe connection", all in this task)
Optionally, create an opposite task to switch Sync off
Create a Profile with the condition "WiFi Connected", and select your "safe network's" SSID. Assign it the "SafeWifiTask" created above, and optionally the "opposite task" as exit task.
Repeat step 3 for other "safe network conditions" (Tasker doesn't know about an OR condition on profiles)
I've made the "exit task" optional in my example. The reason behind it is: If no exit task exists, Tasker automatically restores the "before" conditions, so you might be able to do without exit tasks.
I've just updated my Galaxy S4 (T-Mobile, in case that matters) from 4.2.2 to 4.3. Now when using the keyboard (default settings), if I get to the end of a word -- either strictly on my own or via one of its suggestions -- and then backspace, it deletes the whole word. Before, backspacing at that point deleted one character at a time. Often it's faster for me to correct a suggestion (or notice and fix a typo of mine) this way than to start over with that word. I'd like my phone to stop being so aggressive in cleaning up after me.
I don't remember setting something for this in the previous version (though it's been a while). I've walked through the settings for the device and in Twitter and Messaging (the apps where I've noticed this behavior so far), but haven't found anything that seems relevant. I have not rooted my phone and don't plan to.
Current settings, under Device -> Language & Input:
Default: Samsung keyboard
Samsung keyboard settings:
predictive text: on
auto replacement: off
auto capitalization: on
auto spacing: on
auto punctuate: off
Keyboard Swipe:
SwiftKey Flow on
Cursor Control off
Aside from auto punctuate (which I turned off), these settings are as they came after the upgrade.
Answer
I never got this working (and didn't download a different keyboard), but I recently received the update for 4.4.4 and it's working now. So I don't know if it was something specific to Samsung (or my provider, T-Mobile), but the whole-word deletion has stopped.
Is there any way to view IMSI and ICCID numbers of my SIM-cards? I didn't find such menu neither in About-Status nor anywhere else.
Answer
There are APIs available which apps (like this) use to read SIM information. Looking for CLI solution (refer to this, this and this), we can get IMSI and ICCID with following commands respectively (up to Android 9):
~$ service call iphonesubinfo 7
~$ service call iphonesubinfo 10
* Codes depend on order of methods defined here, which may differ on different Android versions. * For dual SIM device use code 8 and 11 instead and append i32 2 to command to get second SIM information.
Pass the output through following pipes to convert hexadecimal output to a good looking string:
... | grep -oE '[0-9a-f]{8} ' | while read hex; do echo -ne "\u${hex:4:4}\u${hex:0:4}"; done; echo
Terminal emulator apps usually don't have permission READ_PHONE_STATE (though you can grant manually with root) which is required by both functions. So commands need to be executed from adb shell.
Codes 7/8 correspond to getSubscriberId and 10/11 to getSimSerialNumber. However both methods have been removed for normal apps usage in Android 10. Only system apps with READ_PRIVILEGED_PHONE_STATE will be able to get this information. iphonesubinfo service can't be dumped with dumpsys either. So root is the only solution on Android 10+.
RIL may also log the operator/SIM related information to logcat when SIM state changes. With root access it's possible to read telephony database (the component of application framework which interfaces RIL) and also RIL database itself (which interfaces modem). On my Qualcomm device RILD stores information to /data/vendor/radio/qcril.db including ICCID and MCC/MNC.
~# sqlite3 -line /data/user_de/0/com.android.providers.telephony/databases/telephony.db 'select icc_id,card_id,carrier_name,display_name,mcc,mnc from siminfo'
~# sqlite3 /data/vendor/radio/qcril.db 'select ICCID from qcril_manual_prov_table'
As of Android 9 IMSI is also stored in /data/system/netpolicy.xml to set mobile data limits for MNOs separately.
Scenario: I go into a coffeeshop, I fire up my droid, and it says it's on the webs. But as soon as I start surfing it bounces me to the establishment's wifi signon page. I agree, click the button, and (I'm assuming) it sticks the droid's MAC address in a table and lets my traffic through. If I return to said coffeeshop within 24hrs, I'm usually still there.
Problem: My droid is WiFi only, I have no cell contract. So If I walk in and forget to fire up the browser, I won't get any texts or calls.
Solution: Does anyone know of an app that would automate this process? The droid itself will hit the wireless network as soon as it comes within range, provided I've used it before. But then it'd be nice if it tried to fetch a webpage, got redirected, and responded automatically.
Alternative: If there is no such app, would you guys be interested in a free one if I took the time to cook one up?
Answer
There are several Hotspot apps around which can automate this. An example would be WiFi Web Login. I didn't check this one (but used a similar some time ago): As soon as the Wifi comes in reach, your device should connect (provided you did it once manually). If the Hotspot app is running in background, it should pick up from there. You have to record the session once for this to work, it's like a macro-recorder.
Suppose I want to run some program which requests too many permissions. For example, record from the microphone or read IMEI of my phone. However, there are no practical explanation why recording from the mic or IMEI number is needed for this particular application, except for data mining.
I want to try this app, but restrict its permissions. For example, if it reads IMEI, it should get random IMEI (but the same every time). If it tries to read the mic, it should get silence.
Some other interesting permissions:
Phonebook read/write access - returns zero contacts, pretend that write is OK, but actually do nothing.
Send SMS - pretend that SMS is sent, but do nothing.
Get list of visible Wi-Fi networks - return zero networks.
Obviously the tool should require a rooted phone. Are there any such tools?
Answer
XPrivacyLua is a module for Xposed framework which does exactly what you need. It is free and open source. Works on rooted devices. It's the successor of XPrivacy.
Android 7.1 has introduced some changes to Wi-Fi connection interface. In 6.0, when selecting PEAP MSCHAPv2 in Wi-Fi connection interface, there were no CA certificates available (unless some had been installed). In 7.1 one can Use system sertificates and Domain input field appears.
So, for example, I want to connect to Eduroam, that requires thawte Primary Root, using login user@uni.org. What am I supposed to type in Domain and Identity fields?
I am on call sometimes, and get sms and email from our systems. I need to be woken up by them, but right now, that isn't happening.
I use Locale, and the Locale "Inbound SMS" Plug-in, but that does not seem to be working yet (with a test account, it does not go full loud and alt ring tone).
The sender is an email to sms gateway that is unique to this and always the same, the messages start with the same words.
I would like it to do something like have a song starts playing loudly.
It would also be nice if it sanely handled getting 200 pages in 10 min (probably just disable Locale).
Android 1.6 on at T-Mobile G1. I could root it if need be, but really rather not.
I am on Android 4.2.1 (Galaxy Nexus), when using Lockscreen widgets, they are always quite small until once drags them down, then they get maximized. Any way to maximize them by default? Thanks :-)
Answer
I am on a custom ROM using Android 4.2.2 and I can change exactly that behaviour in system settings > lock screen > maximize widgets (translated naming from german version) (I am using NovaLauncher if that matters)
I saw the location icon at the top while on the home screen of my Galaxy Nexus. There were only two running apps and I cleared both of them, but the location icon was still there. I've discovered that if I turn location off then on again, it will go away, but I'd like to find out which of my apps is using this so I can consider uninstalling it or changing a setting.
Is there a way to do this? I presume maybe an app that detects this or some system thing?
Answer
First off, by "clear", what exactly do you mean? Many manufacturers' UI overlays provide ways to remove running apps from quick-access lists, like the one you get with a long press on the home key, but doing that usually doesn't actually close the app. Android, by default, keeps apps running in "background" mode after you back out of them, because they're faster to switch to if they're already in RAM than if you start them "cold".
So, unless you're "force-closing" apps using the Settings view or a "task killer" app, any app you had been running but "cleared out" is still running in "background mode". Most apps do very little in background mode, to economize on CPU and thus battery use, but some will maintain things like GPS access. Any social app that allows you to "check in" somewhere, like Facebook, Foursquare, "footprint" apps, etc is likely to do this, so that you can quickly mark your current location without waiting for the GPS to reacquire satellites and get your location.
If you are force-closing or task-killing apps you think are using GPS, and you're still seeing the GPS icon, it could be one of two things; first, the force-close action is not a "clean" way to shut down applications, and many will not expect to be force-closed, so if you force-close an app that was using GPS it may not clean up things like its connections to phone features such as GPS.
Second, there are some services built into Android, like the E911 service, that use GPS if it's available and that cannot be shut down. So, if you start up GPS for something else, one of those services may ask the OS to keep the acquired signals from the GPS satellites so they can maintain your location just in case you have to call 911, until you manually turn off GPS altogether (at which time the services fall back to less granular location methods, like triangulating from nearby cell towers or known Wi-Fi hotspots).
EDIT: To answer the actual question asked (novel concept, I know), I can't find any apps that will show GPS usage that are available on Google Play and do not require a rooted phone (and/or custom ROM i.e. CyanogenMod etc). The one I did find, Spare Parts Plus PRO, is purported to do so in a roundabout way, by showing battery usage of installed apps with permission to use GPS, but other than one user testimonial here (over a year old) I can't find any evidence it actually does this anymore (the free version does not and none of the documentation specifically says it will), and I'm not gonna spend money to find out just to give you an answer here. Sorry. If you want to try, it's only $1.75; do let the rest of us know.
The only thing I can suggest is to look for an app manager that will list running programs based on the permissions they require. There are several that list apps by permission; aSpotCat, PermissionDog, App Permission Watcher, etc. however I'm not sure which of them will also allow filtering by current running status (PermissionDog pops up a notice when an app starts, showing what it can do).
If you find one, the usage is simple; if it's running, and it needs the GPS, it's a suspect to be the app actually using GPS right now.
Lastly, from a technical standpoint, it's the Android OS actually "using" the phone's GPS. Most apps, especially ones that don't require rooting, cannot directly control any feature of your phone; they instead ask the Android OS to get or set information regarding those features, using the "service managers" that Android exposes in its API. An app that needs your location will simply ask the Android LocationManager service for your current location, optionally requesting "coarse" or "fine" granularity, and Android will then use whatever location services you have told it that it can use (GPS, cell towers, Wi-Fi hotspot location) to find out, returning the location and the method used (or telling the app that the requested level of granularity couldn't be used because you turned it off). Android does not, AFAIK, keep tabs on which apps have made recent requests through the API for its location services (much less which of those requests required the service to spend significant resources to find out); it only knows which apps have permission to do so, and as long as at least one of them is running and has made a request, Android keeps GPS active.
The upshot is that pretty much the best you can do is cross-check running apps with apps that can use GPS, to find out which apps may be using GPS right now. If there's only one running that has the required permission, it's pretty easy to narrow it down. If there are a dozen apps or services with that permission currently "running" (RAM-resident), it's a bit harder (especially because, as I said, some of these may be basic services of the phone that can cause it to crash if you try to force close them).
The problem is that it is broken for me. I customized quite a bit, specifically installing a firewall that uses root and disabling broadcast receivers and services in many Huawei and Google apps that came preinstalled. I guess one of these must be responsible for capturing how much data flows over each interface and from which app it originates, since the feature broke.
Which process (on any Android phone, I can probably find the equivalent once I know where to look) is responsible for doing this?
Answer
DataUsageController (a component of Settings app) collects data from NetworkStatsService(1) which is part of Android framework i.e. system_server and depends on (2)TrafficController (a component of netd native service) which in turn uses libqtaguid to tag network sockets on per app/UID basis. Previously qtaguid kernel module was used to track tagged sockets (by reading “/proc/net/xt_qtaguid/stats” (3)) which is being replaced with eBPF framework. Now data usage will be available in a virtual filesystem (“/sys/fs/bpf/traffic_uid_stats_map” (4)).
Network policy restrictions (Data/Battery Saver and Background Data (5)) and Data Limit/Warning are implemented mainly by NetworkPolicyManager and NetworkManagementService. At back end netd inserts/deletes iptables rules (6) to enforce restrictions in kernel space.
Both qtaguid(7) and quota2 modules are part of only Android kernel (8) while owner is part of mainline Linux kernel.
1. The one we can access with dumpsys netstats 2. Through NetworkStatsManager / TrafficStats / SocketTagger, JNI NetworkManagementSocketTagger, libcutils (qtaguid), NetdClient, Netd's FwmarkServer and possibly others 5. Can be read / set by dumpsys netpolicy and cmd netpolicy 6. Using modules owner and quota2
7. Based on owner module and depends on socket module
My question is the following: Not long ago I was moving apk, data and .dex files to the directories / data, and they did not show the applications I had manually installed, if not until I rebooted on the device and a message appeared saying "optimize the system" from the moment I was curious about this.
My purpose is to learn what happens in this process and to know how to be able to repeat it manually.
If you know anything about this, I'll be happy to hear your comments and answers.
Answer
What is Android doing when it says “optimizing apps/system”?
Basically the android system will be creating an optimised version of each application. This process makes each app start as fast as possible with the new Android version.
While it says ‘optimising,’ operating system generates ‘odex’ files for your apps from scratch. As a simple explanation, odex files can help the system boot faster and reduces the time needed for launching applications.
Apk files and odex files
The longer story is that when an APK file is added to your Android system, it’s not actually stored that way. It’s converted to something called an “odex” file.
The Android OS does not store apps as is after installation (i.e., one single APK file). An optimized version of the app is stored in the Dalvik cache — called the odex file.”
What Is an Odex File?
In Android file system, applications come in packages with the extension .apk. These application packages, or APKs contain certain .odex (Optimized Dalvik EXecutable) files whose supposed function is to save space. These odex files are actually collections of parts of an application that are optimized before booting. Doing so speeds up the boot process, as it preloads part of an application. On the other hand, it also makes hacking those applications difficult because a part of the coding has already been extracted to another location before execution.
Deodex
Deodexing is basically repackaging of these APKs in a certain way, such that they are reassembled into classes.dex files (Dalvik EXecutable).
By doing that, all pieces of an application package are put together back in one place, thus eliminating the worry of a modified APK conflicting with some separate odexed parts.
In summary, Deodexed ROMs (or APKs) have all their application packages put back together in one place, allowing for easy modification such as theming. Since no pieces of code are coming from any external location, custom ROMs or APKs are always deodexed to ensure integrity.
There are several explanations on how this works:
In Android, applications come in packages with the extension .apk. These application packages, or APKs contain certain .odex files whose supposed function is to save space. These ‘odex’ files are actually collections of parts of an application that are optimized before booting. Doing so speeds up the boot process, as it preloads part of an application.
Android OS uses a Java-based virtual machine for running applications, called the Dalvik Virtual Machine. A deodexed, or .dex file contains the cache used by this virtual machine (referred to as Dalvik-cache) for a program, and it is stored inside the APK. An .odex file, on the other hand, is an optimized version of this same .dex file that is stored next to the APK as opposed to inside it. Android applies this technique by default to all the system applications. Now, when an Android-based system is booting, the davlik cache for the Davlik VM is built using these .odex files, allowing the OS to learn in advance what applications will be loaded, and thus speeds up the booting process. By deodexing these APKs, a developer actually puts the .odex files back inside their respective APK packages. Since all code is now contained within the APK itself, it becomes possible to modify any application package without conflicting with the operating system’s execution environment.
How to do the process manually;
If you want to manually optimise your apks, there are some options:
Is there any way to let the Facebook app run only when I want to use it and really close it when i don't need it?
I've already disabled it with autostarts, moved to sd, yet it is still running 24/7.
I don't want to appear on the Facebook chat, also don't want to waste 30mb of ram, and of course there are no FB widgets on the home screen
Answer
With root, it's possible to use an app like Ice Box to freeze the app and unfreeze it only when needed. It can be set up to freeze the app again when the phone goes to sleep. In this way the most invasive apps like Facebook, Instagram, will only run when the user want it. (Of course no notifications will appear)
I want a Music ID app, I have tried both Shazam and SoundHound which were good. They both have a limit of 5 songs, and cost $5 to upgrade to unlimited. Before purchasing one of them, I want to make sure I'm making the right choice. What are the advantages/disadvantages of each one?
Are there any other competing apps I should consider?
Update: I used SoundHound's old name, Midomi, accidentally.
When I was using the camera of my Sony Xperia S, the following message popped up.
So how do you change the default save location of your camera (as highlighted with red underline)?
Note: Yes, my memory was full and the message stopped showing up after deleting some files of course. I just want to know how to change the default for CAMERA.
Answer
The problem was literally not with changing the location but with the capacity of the existing location. I freed-up some space from my SD card memory (which is hard-coded in to the mobile) and the problem went away.
I could not find any of the options provided in the other answers. There is no gear icon nor an option called Storage
Recently I bought an HTC Desire overall I'm very happy with it. There seems to be one major flaw, it overheats quite easily causing it to reboot. I've run into this several times while driving using the navigation whilst recharging. Does anyone have any suggestions to workaround this problem? I've searched around but haven't found any helpful information.
I've been trying to find out how to kill/turn-off cellular radio (on a rooted device) using some command on ADB. My research only found that I should either (using GUI) enable Airplane Mode, or type some code to go to Phone Information and then tap Turn radio off.
But that's not how I want to do it.
I'm looking for a single or a set of commands to do the job here. (Note that I'm aware of using am start and input tap combination, but that's same as emulating the GUI.)
Also, in my OnePlus One (CM12), Airplane Mode as it seems only hides the Cellular icon. As soon as I disable the mode the signal reappears instantly, while signal takes bit longer when Turn radio (off -> on) is used?
I heard this phrase or the variants (rooted phone, rooting, etc.) in android forums but I don't know what it means. Can you explain it in simple terms?
Answer
To 'root' your phone means to gain administrative rights on the file system of your phone (in linux, root is the username of the master admin). With root access, you can install and uninstall anything you want on the phone.
Most phones come with limited access regarding what you can and can't do on it. This isn't necessarily a bad thing, because it can keep users from accidentally breaking something they shouldn't mess with on the phone, especially in regards to the operating system. However, many manufacturers limit your rights to things that aren't really so mission critical, too, and rooting the phone gets around this.
If you have a few unnecessary applications (bloatware) pre-installed on your phone that you cannot uninstall, rooting will give you this ability. It will also allow you to upgrade to newer versions of Android before your phone's manufacturer and/or cell provider make the updates available to you. Be warned, though, that rooting may void your warranty.
For more info on what rooting enables you to do with your phone, check out this question.
My question topic is Android support for dual SIM hardware. More specifically I'd like to find out if it's the Android 2.2 release that added support for real dual SIM and dual GSM support, and to which extend both cards are online or usable as data channel.
A question about https://android.stackexchange.com/questions/865/dual-sim-android-phone already came up here, but it didn't investigate the issue completely. And the mentioned mobile (Tiger G3) was also most likely incorrectly reported as Android phone. From all pictures I've seen it's a regular chinese MTK/NucleuOS phone.
I want to base my question on the STAR A3000 as hardware example. It's verified that it is really running Android, and dual SIM capabilities seem very plausible: http://www.aliexpress.com/wholesale?SearchText=A3000 I'm linking to a search listing and not a shop or review directly to avoid the impression of spamvertizing. It's also a more long-lived link that way. But foremost I want to highlight that there are two hardware versions. The original A3000 runs Android 2.1 and offers no dual SIM capabilities. All newer listings advertise both Android 2.2 and dual SIM support.
The trouble with chinese mobiles and resellers is that not all details are super reliable. You'll have to cross check multiple sources, and better assume the lowest common denominator. In the above shop search some Android 2.2 dual sim A3000s are for example still depicted with the original hardware version. I've seen a few images (and there's a youtube video) with the dual sim slots, so I presume this verified. There's also a rumor (on dealextreme) that both hardware versions are identical and there's just a black cover above the second sim slot for the first version (looks plausible from pictures). So that's why I assume that Android 2.1 didn't support such features, and the Android 2.2 kernel maybe introduced it.
The hardware in this phone most likely supports not only dual SIM, but dual GSM. This means that both SIM cards are connected the whole time, to two different networks. All previous MTK chips and mobiles support that. However I've seen one picture of the A3000 Android 2.2.1 version which shows a configuration screen with an option along the lines "[x] Select SIM card at bootup". This would suggest that it's not a real dual-GSM setup, but just dual-SIM - which only allows switching. Yet all the listings from my first link suggest that the phone and Android is "dual sim dual standby". So I'm confused.
Back to the question: Did Android 2.2 introduce proper support for dual-GSM? I know none of the big brand vendors supports anything like that, so it must be a fringe feature, maybe not even in the OHA documentation. Any chance something like this was mentioned in some sort of release notes? (Really I have no clue, no Android phone yet, still gauging.)
My main interest is keeping my main phone number, and using a secondary SIM and contract for data connnections preferrably. Or the other way round.
Another note. I know there was also the General Mobile DSTL1 once, which was the first (and for a long time only) Android 1.5/1.6 phone to advertise dual-SIM. I don't know to which extend it supported real dual-GSM functionality. But it's interesting that old Android versions allowed it. So I'll extend my question into why no Android 2.0 and 2.1 phones with dual-sim existed. Did the feature possibly come and go twice in Androids lifetime?
I am looking any suggestions of an an open source package or web software that I can manage both my Android devices (Galaxy 10.1 tab/Galaxy S Smartphone. My computer OS is Ubuntu. I want to be able to back up my devices and manage my files on my PC. I have tried Airdroid with limited success. I current have the ability to view and manage my devices as data store devices.
Answer
If you are just talking about files, I'd take a look into FTPSyncX or FolderSync. I can only talk for FTPSyncX, as I am using it myself -- but most of the following should be valid for both apps:
You can setup directory pairs (one on your device matching another on your PC), and have them sync bidirectionally or unidirectionally. You can configure the sync interval: globally, per server, or even per directory-pair. You can even tell it to only sync when you're in your Home WiFi, or only when you request it (via Widgets, from within the app, or even event-based controlled by Tasker.
If this answer didn't catch your intention, feel free to comment, ask, or update your question :)
After watching a bit of 4oD last night on my Nexus 7, I turned it off. When I tried to start it up this morning, I was greeted with a blank screen whilst being plugged into the charger. I held down the power button, and Google flashed onto the screen for about 3 secs. When I disconnected from the charger, the screen switched off completely.
I have only had this for a week and a half. It is obviously still under warranty. Can I just send it back? I am completely dumb when it comes to computer issues!
Along the same lines as this question. What's so special about enabling Unknown Sources, and what are some things that I should do once it's enabled?
Answer
This allows you to obtain and run an application (i.e. the .apk file) from sources other than the Android Market. (i.e. you get it from a download from a developer's site, from an email, etc.). That's it.
Sometimes when I update an app through Market the download gets stuck at 0% or 100% and won't finish download or finish installing. The only way I've found to work around this is to uninstall the app, then reinstall from Market. Is there a better way to fix this situation?
Answer
On the "downloads" screen, long press the app in question and click "Cancel download." Then try to update the app again and see if it'll complete this time.
Google's Play Store does not sort its 'Top' apps by number of downloads. This prevents you from discovering the true order of which apps people are downloading the most, making you often not know about useful apps whose numbers of downloads speak for themselves - yet are not promoted in the 'Top' lists on the Play Store.
It's as if Google is deliberately not allowing us to see which apps are actually used the most by people.
Is there some way I'm not noticing, nifty trick, or external site - whether on Android or the Desktop - to see rankings of Android apps by sheer download numbers?
Incoming text messages don't always get assigned to the proper contact.
I may send a text to contact Bob, who's phone number is +52 333 555 12 12 (a Mexican number). He gets the text just fine, but when he replies, the message appears to come from simply 333 555 12 12. As a result, I end up with two conversations, one to 'Bob', and one to 333 555 12 12, which isn't associated with any of my contacts.
Is there a way to make my phone recognize these numbers as the same (without creating duplicate entries for all of my contacts--one with the +52 and one without)?
Is it possible to keep an app (not developed by me) running in the background. I know that it is possible to keep an app persistent in background by making it a service, but since I am not the developer of the app I want to keep active, is there a way to do this through some settings changes?
Answer
Android kills apps automatically for memory. However there is an internal "priority" which it follows in doing so. For ex the system apps have usually much higher priority and hence lesser chance to be killed.
There is a way to explicitly assign higher priority to any app using third party apps. One such app is Memory Locker.
Just install and open the app, tap on app you want to be locked in memory, and set the priority. The lower the priority the lesser is the chance for that app to be killed or suspended.
NOTE: It needs root.
Additional Info:
How it works: It actually edits a file called oom_adj inside /proc/[process ID]/. This file is nothing complex. Infact, it can simply be opened in any text editor and it contains just a number (for example -12). This number is process priority. You can change/edit this manually and set the priority for processes yourself if you dont want to use external app.
I have an SD card in a Moto G (2015) running marshmallow, not rooted. It was formatted as internal storage, and contains photos and videos from the birth of our daughter, but has become corrupted.
Since it was formatted as internal storage, it's ESDFS filesystem and presumably encrypted. I can't decrypt it without accessing the encryption key, which I can't do because I'm not rooted. Presumably rooting will delete that encryption key.
I presume it's corrupted because any attempt to look at the SD card from within android unmounts the card, and the phone can't see any of the pictures/video on there. When the card is inserted, the 'storage' menu will initially acknowledge the card and tell me how full it is, but any attempt to look inside the card will result in it unmounting.
I've tried running fsck - within system/bin there are fsck_msdos and fsck.f2fs, but both come up as 'permission denied' when looking for them, and 'no such file' when I try to run them.
I can access /data from an adb shell, but attempting to get into /data/data/media results in 'permission denied'
Can anyone help? E.g: 1) will rooting delete the encryption key so that the card can't be accessed? 2) is there a way to get fsck working? 3) any other ideas for getting the media off this card?
Many thanks in advance. I'm a bit of a noob, so clear instructions much appreciated!
Answer
1) will rooting delete the encryption key so that the card can't be accessed?
No, actually "rooting" will not delete anything. Rooting is just adding an application for superuser or root-level access. That being said, in order to root your device you must have an unlocked bootloader. Unlocking the bootloader will wipe the entire device, including the encryption key, and all other data on the device. On the Moto G 2015 there is no way around this. Oh, and removing the card and performing the operation will not work, once it is rooted, the system will be different and the encryption key will change.
2) is there a way to get fsck working?
Not without root access. To be honest, even if you did get it to run the chances it would correct this type of problem are very low.
3) any other ideas for getting the media off this card?
Unfortunately no... once media has been adopted by the system, it is encrypted with a unique key to that system. If you can access the key, it is possible to access the data via Linux assuming the data is not corrupted. If the data is corrupted the chances of recovering encryped, corrupt data are extremely small.
As much as I would like to be able to give you an answer to recover your precious photos and videos, I don't believe there is one. All I can say is that moving forward I suggest NOT using adopted storage if possible (if this card was simple external/portable storage, the chances of recovering media from it would raise exponentially) and use a cloud backup solution like Google Photo which has the ability to maintain a backup of your photos and video automatically.
I have rooted my device HTC Evo Design 4G and I try to adb pull /data data and it says "0 files pull 0 file skipped"
I was able to pull /System/build.prop. How can I pull root folder.
Thank you iua
Answer
Files and directories below /data/data are protected from the "average user", so you cannot simply "pull" them unless the ADB daemon is running in root mode. Other than the file you were referring to (/system/buildprop is at least readable by all apps), folders below /data/data are "invisible" (except for root), so they cannot even be read.
To be able to use adb pull on them, you need to make your ADB daemon run in root mode first. Depending on the device, a simple adb root command might do that – but most devices will refuse to do. In those cases, you can use chainfire's adbd insecure: Install this app on your device, start it there, and manually switch to "insecure" mode. Now the pull should succeed.
Remark: It's called "insecure" because running adbd as root gives everybody with a computer and an USB cable access to everything on your device. Just in case you wonder.
I know this is a bit tangential, but bear with me. The Exchange calendar sync works perfectly for me, however, it would be AWESOME if I could see my exchange calendar with my other Google calendars in the desktop browser, just like it does on my phone. :) It looks like the Exchange Sync uses Google Calendar to merge both my personal Google calendar and my business exchange calendar on the phone.
Any way to recreate this on the desktop browser and see all my calendars together? I have a rooted Nexus One running the stock Froyo 2.2 rom.
I would like to buy a game (well several copies of it really) for some of my friends for Christmas. Is there any way to do this? Would I have to rely on the publisher, or is there some way to "gift" apps from the market?
Answer
Update: Google Play Gift Cards are now widely available in many countries. Thanks to @Chahk for reminding me to update.
Amazon has released their own Android Appstore which allow you to send Amazon gift cards that are redeemable for Android Apps. This requires a few extra steps, but should let you gift what you want to until this function gets added to the original Android MarketGoogle Play Store.
I am technically inclined, I work as a IT technician and study computer science and engineering. Does anyone have a guide or guides, or can help me root my HTC Incredible 2?
I'd like to be able to easily transfer large files wirelessly, fast, between Android devices - preferably without requiring root.
As a secondary objetive, it wouldn't hurt if the same solution could be used, to transfer files between the Android devices and a Windows PC.
Specifically, I'm trying to exchange files between my Nexus 7 (Android 4.2.2) and Samsung Galaxy S2 (Android 4.0.4).
Bluetooth is simply too slow, so that's out of the question
Transfer via the Internet is also not an option, hence so is cloud-based solutions
Only Nexus 7 supports NFC, so that's out too
Fast File Transfer looked promising and very simple, but does not work on "Devices that don't have WiFi Tethering setting, such as the Nexus 7"
Wi-Fi direct (supported from Android 4.0 and up) seems to be a decent lowest common denominator between my two devices, however...
Galaxys S2's native Send via Wi-Fi Direct sees the Nexus, but seems to get stuck in the "Connecting..." most times. When there finally seems to be breakthrough, I get "Waiting..." and a spinning circle. Even if it worked, it would only allow me to send from the Galaxy S2 to the Nexus 7, as a similar option os not present on the Nexus 7.
J4velin's WiFi Direct is no longer available in the Play Store, with the following explanation:
WiFi Direct drivers are broken on many devices, which led to users leaving negative reviews for this app. As I don't see any sense in keeping a free app published when only getting 1-star-ratings (for an issue which only your device manufacturer can fix), the app is no longer available at the Play Store.
Nick Adams' WiFi Direct File Transfer seems flaky at best. Invations from Nexus 7 to Galaxy S2 are never received. Invitations from Galaxy S2 are mostly received, but even when accepting promptly, the peers doesn't always show as connected. When they finally do, usually after quite a long wait, I can select a file to send but it's never transferred - "Transfer failed" it says almost immediately in the notification bar.
budius inc's WiFi Shoot is working slightly better, but still very unreliable. I actually managed to (occasionally) send files both ways, but never when attempting connection from the Nexus 7. To send from the Nexus 7 to the Galaxy S2, I had to go through this akward manoeuvre:
Share the file on the Nexus 7 via the WiFi Shoot intent
Start the Receive WiFi Shoot app on the Galaxy S2
Invite the Nexus 7 from the Galaxy S2 (never the other way around!)
Accept the invitation on the Nexus 7
Press the Shoot button on the Galaxy S2
Take the whole switching back and forth between devices, and garnish with random delays or failures in any step of the process...
Is there really no easy, reliable, fast way to transfer files directly between different Android devices?
Generally, my experience with Wi-Fi Direct is all but positive...
A device often won't even see a device lying next to it
Sometimes, it will see the other device, only to have it disappear from the list, before I have the chance to connect
When I do have a chance, invations are not realiably received (from Galaxy S2 to Nexus 7 mostly reliable, but never worked the other way around)
When invitations are received (and accepted), a partnership rarely manages to be setup ("invited" or "connecting")
And even when that happens, some apps can't seem to transfer files through it...
*Sigh*
Maybe J4velin's explanation pretty much sums up the sad state of Wi-Fi Direct on Android, which otherwise seemed as the best solution to my quest?
Answer
Rather than sleeping, I spent a few more hours experimenting.
I found what works best for my needs is an FTP server app.
For casual transfers, when both devices are connected to the same network, I'll just transfer through my Access Point. With the limitations that implies.
If I'm not near an AP or just want full speed, I'll deal with the hassle of setting of the Wi-Fi direct partnership and then launch the FTP server. It usually takes 3-5 tries before the devices connect, but once they do, FTP works stable and fast.
Furthermore, this solution also satisfies my secondary goal, of being able to use the same method to transfer files between Android device and PC.
Now, there are a lot of FTP server apps out there. Most are ad-supported, most are rather big as well. To my surprise, there's also quite a performance difference between them.
I thought I'd might as well shared my experience with the four FTP server apps I tested...
None of the tested apps required ridiculous permissions. Just the following special permissions:
FULL NETWORK ACCESS
MODIFY OR DELETE THE CONTENTS OF YOUR USB STORAGE MODIFY OR DELETE THE CONTENTS OF YOUR SD CARD
PREVENT TABLET FROM SLEEPING PREVENT PHONE FROM SLEEPING
In addition, Andreas Liebig's FTPServer also required:
READ PHONE STATUS AND IDENTITY
The speed test wasn't exactly scientifically performed, but devices were in the exact same spots during tests.
FTP server app running on Nexus 7
FileZilla FTP client running on Windows 8 laptop
Both connected to the same 802.11n network. Windows reported the link speed as 130 Mbps (I know this is not exact)
I downloaded the same 103,4 MiB large file two times through each app
All stats, numbers and other facts are as of March 30th 2013.
Apps ordered by measured throughput, fastest on top.
Price: Free
Latest version: 2.4.0 (2013-03-26)
Size: 78 kB
Install base: 100.000 - 500.000
Avg. rating: 4.6
Android OS requirement: 1.1+
Comments: Initial configuration required, not plug-and-play. Detailed server log on main screen when service is running. No anonymous access possible?
Throughput: 103.4 MiB downloaded in 43 seconds @2.4 MiB/sec, 103.4 MiB downloaded in 47 seconds @2.2 MiB/sec
Price: Free (ad supported, ad-free version available)
Latest version: 2.1 (2013-02-28)
Size: 1.2 MB
Install base: 50.000-100.000
Avg. rating: 4.1
Android OS requirement: 2.2+
Comments: Simple interface. Very basic settings.
Throughput: 103.4 MiB downloaded in 48 seconds @2.2 MiB/sec, 103.4 MiB downloaded in 49 seconds @2.1 MiB/sec
Price: Free (ad supported, ad-free version available)
Latest version: 1.11 (2013-01-14)
Size: 1.1 MB
Install base: 100.000 - 500.000
Avg. rating: 4.4
Android OS requirement: 2.1+
Comments: Based on Apache ftp server. Simple interface. Configurable port, home dir, username/password, service resillience, energy saving etc.
Throughput: 103.4 MiB downloaded in 56 seconds @1.8 MiB/sec, 103.4 MiB downloaded in 56 seconds @1.8 MiB/sec
Price: Free (ad supported, ad-free version available)
Latest version: 1.3.1 (updated 2012-12-28)
Size: 2.0 MB
Install base: 50.000 - 100.000
Avg. rating: 3.9
Android OS requirement: 2.2+
Comments: Based on Pure-FTPd. Simple interface. Configurable port, home dir, username/password, service resillience, energy saving etc.
Troughput: 103,4 MiB downloaded in 135 seconds @0,8 MiB/sec, 103,4 MiB downloaded in 121 seconds @0,9 MiB/sec
Not only is Andreas Liebig's FTPServer the only completely free of the apps tested, it's incredibly light weight (78 kB!), can run on any Android phone you can find but also has the fastest throughput of the apps tested.
Once the initial configuration is done, the main window simply displays your standard FTP server log, whereas other applications pretty much displays nothing but a few buttons and maybe the IP address and port of the server.
I have rooted my Nexus 5 and installed CyanogenMod (Android 6) a few months ago. It has always been running fine, but today while scrolling a web page it froze, so I long-pressed the power button to reboot it.
The phone started rebooting, showing the Google logo and unlocked lockpad, then the CyanogenMod robot head, as usual.
It then rebooted by itself, once again the Google logo and robot head, and got stuck there.
After 5 minutes without visible progress I long-pressed the power button again.
Now it does not go further than the Google logo screen. I tried again rebooting it a few times, it is always stuck at that screen.
Starting in recovery mode just turns the screen black (the screen is active but only showing black pixels).
• MMS creation mode — Select Restricted to have your device prevent you from including content in multimedia messages that may not be supported by the network or the receiving device. To receive warnings about including such content, select Guided. To create a multimedia message with no restrictions on attachment type, select Free. If you select Restricted, creating multimedia presentations is not possible.
Is there any way to quickly toggle the screen off without making Android sleep?
For example, I sometimes like to use the Calm app when I sleep. But it keeps the screen on all the time. When I just use that app for 10 minutes, it's great that it keeps the screen on; but if I'm sleeping for hours, I would like the app to keep on running (playing sounds) and turn the screen off.
When I'm updating a custom ROM, there's always an instruction to wipe the Dalvik cache. I don't see a reason why this is necessarily.
Watching the logcat while the system is booting I can clearly see that if an app changed, its dex file is invalidated and then regenerated. Yet still when I mention this anywhere I'm met with silence. As if not even some ROM developers are aware of this and they're only doing this because everyone else does.
So the questions:
Was there an Android version where Dalvik files were not invalidated during boot?
Is there any advantage in doing this yourself, instead of letting the system do the work it's supposed to do?
An ideal answer would include references to the relevant code, so I would have a reference the next time this comes up.
Answer
To answer your questions:
Am not aware of any Android version where the Dalvik was not invalidated on boot. Maybe the initial version 1.0 had that, I really do not know, have gone through Eclair, Froyo, Gingerbread, Ice Cream Sandwich. You need to look into the source tree and rebase it back to CupCake or Donut (1.5 and 1.6 respectively)
The detailed reason :)
The reason the Wipe Cache must be used is because all apks, including system apks, have a dex file attached to it, when the ROM is booted up for the first time, Android's Dalvik goes through each and every one of those apks, and extract the dex file from it and place it in the cache /data/dalvik-cache thereby speeding up the execution of the app itself.
Most ROMs have apks that are odex 'ed, the cache is bundled into the apk itself as an external file.
A lot of custom ROM modders would have those apks deodex 'd, meaning the dex file is replaced and repackaged to make it easier to theme/modify an apk.
When you flash a custom ROM, and did not wipe the cache, the newer custom ROM's apk's will have a different dex file attached to it, and when the Dalvik goes through them, it sees the existing cached dex file found in the directory, and skips it, then when you run the app, you're guaranteed a force close or ANR (Application Not Responding).
You are not losing data per se, if using ClockWorkMod Recovery, and Wipe Data is selected, then yes, all the settings relating to the apps are wiped cleanly - look in /data/app.
So you can Wipe Cache but not Wipe Data, what is done effectively, is slotted in the newer apks in place, in which it has the settings retained. This was quite a common scenario with CyanogenMod nightlies where a unstable/testing ROM build is flashed, and the settings retained with cache wipe. The mileage will vary depending on what apps downloaded from the market (settings would have changed by version bump quite likely).
For best results it would be wise to perform both Wipe Data and Wipe Cache to ensure integrity and no program errors within the app itself.
Yes that would mean the boot time would be slower but its initial once off moment. After that it would be booting quicker. Really in a nutshell, explicitly wiping the cache itself via CWM actually helps speed it up and ensure no residue from the previous version in place which could get munged in (Now at this stage, am realizing your question so in all fairness, have not actually seen Android not performing the invalidating of the cache itself upon boot when flashing a new ROM..)
Use the source Luke seriously! :D
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java is the bootup code for each apk runtime. It interacts with the native C code found in the dalvik directory tree which contains specific chipset instructions to interpret the bytecode within the apk to native CPU instruction set. ARMv6 is pretty much a hacked version of ARMv5 (which was the original chipset in the older Android versions prior to Eclair), so you will not see ARMv6 in the AOSP source from google. CyanogenMod will have that ARMv6 in their source.
I just noticed a folder on the internal memory of my Samsung Galaxy S4 with name SmsContactsBackup that has an accumulation of APK's. You'd think that folder name indicates one of those Android backup programs, but, it appears to be multiple APK's with different version numbers, like the APK for each new version. They are consuming about 3 GB of memory space. Does Android normally store all of the updated APK's in storage? If so why this folder?
I recently got my Moto G4 Plus and it has got a turbo charger too. On charging it using a specific plug/socket, the phone just starts tapping randomly. When charging through another point, it works fine. Why? Is it the current issue?
Answer
Moto, as with some other manufacturers do this. It sucks as I've experienced it in the past but the phone is just sucking in power, and while you try to touch it it gets intercepted or there are just random touches. You can't really do anything about it other than let it charge and use it while its not charging.
Are there any generic troubleshooting steps and tips to be followed before I search for problem specific troubleshooting options? Then what are they?
I only have a general knowledge on Android and not familiar with flashing, shell commands, etc.
Answer
There are several steps/things you can do before you do advanced troubleshooting. Most of the problems can be solved following these steps.
Backup your data. Backup your data first (of course, if possible). You don't need to risk it. Keep it somewhere else. It is better to have backups for personal data and app data separately.
Try rebooting your device. You can use your power key or a third party reboot app
Keep your device switched off for a while. Make sure you remove your SIM card (and the battery and SD card as well, if they are detachable) and wait about 30 minutes.
Try freeing some space. You must always have some free space. It is better to have more than 50MB free so that the apps can work smoothly. (Some say it should be 2% of total memory)
Try re-installing apps. If you believe your problem is caused by a specific app, try uninstalling and re-installing that app. Also you can try clearing the app cache. It will give you some more space.
No hardware fixes. Do not attempt to quick hardware fixes unless you have clear understanding of what you're doing. And keep in mind that you'll lose your manufacturer's warranty by doing such fixes.
Update your OS. Make sure that the relevant updates are compatible with your device, referring to your manufacturer's website.
If you are still in the problem, you can try searching help for your problem or contacting your manufacturer's customer support personnel. Remember to do this before you go to factory resets.
I was trying to release some internal memory on my CUBOT GT-99, so I started disabling some system apps using one rooted app. One of apps I was disabled is system keyboard because I don’t use it beside Swift Keyborad. I was totaly forget that I use system keyboard whan I turn on my phone, becouse I encrypt my phone, so I need system keyboard to enter the password. Now phone ask me for decrypting password but don’t show me the keyboard, so I can’t enter password and can’t system run.
One of my idea is to use Android SDK, if there's some tool or something (?) to use PC Keyboard instead of disabled system keyboard (I don’t know anything about Android SDK).
If there is no other option I'm ready to do hard reset, but I don't know how to do this in this situation.
Please can someone give me any other idea and tutor how to solve this.
Answer
Solved.
First of all, I didn't know how to enter in Recovery Mode on CUBOT GT-99, but accidentally I enter in it, and I want share this with you because I didn't find it on internet.
Press POWER for 1 sec and than release...phone vibrate...Immediately after vibration press and hold POWER & VOLUME+ button.
In recovery mode it alows me to:
apply update from ADB/sdcard/cache
wipe data/factory reset
wipe cache partition
backuo/restore user data
I tried to establish a connection with the ADB, but it did not work because of encrtyption. I made a backup user data and after that I dona Factory Reset.
The new system had the same problem, there is no system keyboard. so I've installed the Swift Keyboard from computer using the command adb install %PATH_OF_PACKAGE_ON_PC%.
I finally had some keyboard with which I could enter my email address and password to enter in Google play. There I installed Root App Delete (with which I had previously disabled the system keyboard), to re-enable the system keyboard.
In the end all I needed is to go to the system recovery and restore user data witch i made before Factory reset.