title: What does deleting a file really do?

text:
# Question
Title: What does deleting a file really do?
When I run an app, select a file, and choose "delete" what happens then:

1. the file is moved to trash (and later is removed by OS when some conditions are met)
2. the file is removed from the filesystem at once
3. (1) or (2) depending on an app

?

# Answer
> 2 votes
There's no OS-wide "Trash" or "Recycle bin" like other shells have. However, the Android design guidelines recommend app authors to put something like that in each app as appropriate, to allow undoing deletes. Thus, in one app, a delete button might delete the content immediately, while another might mark the content as deleted but wait for some time before deleting any files in the filesystem.

There are even more possibilities with apps that sync to a server: they might need to keep 'deleted' content around for the next sync, or it might be on a server somewhere, never deleted.

In addition, not every item of user data you might delete is a file. Some apps might store things in a database, so after you delete an item, part or all of it might still be present in the app's database.

Of course, like any filesystem, once a file is deleted, most of its content remains on the storage. Someone with physical access to the storage, or a rogue app, can almost certainly still read it for quite some time after it's deleted. It's pretty easy to recover files in this way, especially if your phone acts as a *USB mass storage* device when plugged into a computer.

---
Tags: security, file-system, delete
---


# Question
Title: application cannot be installed in the default install location?
I have an Android Galaxy S1, and have been getting the error "application cannot be installed in the default install location". I am aware that this is a common issue. So I Googled it, and almost everyone is saying to move your apps to the SD card or delete unused games.

There's only one problem. My phone won't let me move apps into the SD card, and I have 1.3GB of free app space. While I can download some apps, the more important ones won't download.

Anyone have any fixes to this?

# Answer
I don't think this really has anything to do with any settings.

I encountered this yesterday. All I did was restart my phone and the app installed fine afterwards.
> 1 votes

# Answer
Developers can define the App Install Location in their app's `Manifest` file. As you stated you cannot move apps to your SDCard, this might be the clue: Apps having their install location set to the internal storage will be able to install, while those defined for external storage (i.e. SDCard) are failing for the very same reason: They cannot be moved to the SDCard.

So your real problem is: Why can't you move apps to the SDCard? To find an answer to this, it would also be helpful to know your Android version. I'd suggest making this a separate question linking here, and giving some more details on your device and Android version there.
> 0 votes

# Answer
This is what worked for me.

If the settings-\> memory is set to SD card then change it to Internal, or visa versa.

Unmount the SD card.

Install/update
> 0 votes

# Answer
Ran into same issue, removed some really large apps off the phone and it installed fine. Guess it was a space issue.
> 0 votes

# Answer
I have android 4.1.1 what I did to fix the issue about installing to default install location.... Go to settings ....then to storage....then the preferred install location....then select let the system decide That's it . U can always change it back to sd card when u finish updating the apps with the issue
> -1 votes

---
Tags: applications, installation
---


# Question
Title: How do I import a user CA for the Email app properly?
For my own setup I use a personal CA: "Gert van Dijk CA". I'm using this for HTTPS and VPN successfully by importing the CA certificate into the Android keystore. I'm having trouble getting the Email app recognize this. Here are some notes about the current setup:

* The custom CA is listed perfectly fine in *Settings* -\> *Security* -\> *Trusted Credentials* -\> *User*.
* Chrome and "OpenVPN for Android" are working with this custom CA. I can see a green location bar when connecting to `https://mail.mydomain.tld`.

This all looks good, until I come to setting up my Exchange mail. It simply won't connect to `mail.mydomain.tld` with the error "Couldn't open connection to server". However, when I change "Security Type: SSL/TLS" to "SSL/TLS (Accept all certificates)" it will sync my mail just fine! This makes me believe the stock Email app isn't taking the user credentials in the key store into account. Why?

Logcat shows me this line when receiving the connection error:

```
I/Exchange(10278): IOException while sending request: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

```

To verify I've set up my Exchange server correctly, I navigated to `https://mail.mydomain.tld/Microsoft-Server-ActiveSync` and the location bar is perfectly green!

How can I make the Email app take the user trusted credentials into account here? I don't want to trust all possible certificates for security reasons.

Android versions: 4.4 (Nexus 5), 4.3 (Nexus 7 2013).

# Answer
> 0 votes
Ah well. It appears that the Stock Email app doesn't do SNI. This means that in the initial connection to the server it was presented with another certificate it should discard (but didn't). It seems to me that this is a feature request for the Email app, as other apps do implement SNI.

Changing the Apache SSL configuration to use SNI with an initial certificate signed with the "Gert van Dijk CA" still didn't solve it. Logcat then showed:

```
I/Exchange(12307): IOException while sending request: Cannot verify hostname: mail.mydomain.tld

```

Setting `mail.mydomain.tld` as initial certificate solved it. I consider this an ugly work around until this has been fixed in the Email app.

---
Tags: security, exchange, stock-email-app, https
---


# Question
Title: How can I connect my phone without a HDMI port to a non-MHL TV?
I have an older LG p990 that has a HDMI port, and with the right cable I am able to show movies on it on the TV.

My new phone is a Nexus 4, it has no HDMI port. Based on this question and answer, I know how to connect it to an MHL compatible TV. But how can I use a TV without MHL capability? Is there an adapter for that? How is it called, where can I buy one?

# Answer
MHL compatibility on a TV only means that it will supply sufficient power (500mA, 900mA, or 2000mA, depending on which version of the MHL spec it is compatible with) through the HDMI port to power the adapter and charge the phone.

An MHL adapter will work just fine with a non-MHL TV. You just need to supply your own power from a regular charger. This is what the female microUSB port on the MHL-to-HDMI adapters is for. You plug the charger into that, plug the HDMI cable into the TV, and MHL cable into the phone and you're off to the races.

Not all phones support MHL however, the Nexus 4 in the question supports SlimPort instead.
> 3 votes

---
Tags: nexus-4, hdmi
---


# Question
Title: Bookmark a page to be accessed on both mobile and desktop Chrome easily
It looks like that one bookmark instance can only exist on one of Chrome folders. Such that when I want to visit a site from both my phone and my laptop, I always have to change my bookmark folder back and forth depend on where I stored that bookmark page.

Can I bookmark a page and view it on both mobile folder and desktop folder?

# Answer
Use slightly different URLs as bookmarks (e.g. add `&dummy=1` at the end of one of them) so that they are "different bookmarks".
> 1 votes

# Answer
**Yes, you can, but you have to synchronize Google Chrome with Google Account.** You can change synchronization interval, etc., etc., in device settings (Accounts). How to force make bookmarks synchronization, you can read here.
> -1 votes

---
Tags: chrome-for-android
---


# Question
Title: Android default calling app don't suggest other calling apps even after reseting defaults
Good day.

I have a Samsung Galaxy S3 mini (GT-I8190N) with its default Android 4.1.2 and default Phone application.

When I try to make a call with it, it never suggest other calling apps, so I will be able to chose. I have tried to "Reset app preferances" from settings, I have even wiped my phone, but it didn't suggest me other apps to call.

Have anybody came across that problem? Are there any suggestions how to solve it?

Thanks in advance!

# Answer
Your question indicates that you expect Android to present a list of available calling applications when you press the call button in an application. This is not the case.

The "open with" dialog only appears when an Intent is broadcast for which there are multiple applications that have registered to receive that Intent with an Intent Filter. When a call is started using the default phone app, no such Intent is sent.

Your question doesn't specify what Intent you are trying to listen for, but I'm going to go ahead and assume it is `ACTION_CALL`. An `ACTION_CALL` Intent is broadcast when an application *that does not have calling functionality* wishes to initiate a call (and thus allow another app to handle it). It is not broadcast from the default phone app because the default phone app can make the call itself.

I would recommend reading through the Intents and Intent Filters documentation again to ensure that you understand how they work and why the behavior want doesn't happen.
> 0 votes

---
Tags: samsung-galaxy-s-3, calls, default-applications
---


title: Change the name of the Wi-Fi hotspot

text:
# Question
Title: Change the name of the Wi-Fi hotspot
Device: Samsung Galaxy Note 3

The wireless tethering hotspot name is `AndroidAP`. I would like to change this if I can.

# Answer
> 7 votes
I have a Samsung Galaxy S4, but you should have something similar to this: `System settings > Connections > More Networks > Tethering and portable hotspot > Portable Wi-Fi hotspot`.

If you don't see Configure button (not visible on my S4 5.0.1), try pressing device Menu button while you are at the Mobile Hotspot settings page (which shows your hotspot name and password)

---
Tags: wifi-hotspot
---


# Question
Title: Connecting Galaxy S3 to DisplayPort via MHL HDTV Adaptor
I have a Samsung Galaxy S3, and I just bought the Samsung HDTV Adapter (MHL to HDMI). However, my Dell U2412M monitor only has VGA, DVI or DisplayPort. So I also bought an HDMI to displayPort converter cable. Alas, the connection doesn't work.

I know that everything is properly connected. The Samsung MHL is properly connected to both the phone and the (official Samsung) charger. The HDMI cable goes from there to the displayPort to HDMI (female) adapter, which in turn is properly fitted to the monitor. Then, I switch the input on the monitor to DisplayPort, and sadly my monitor goes to power save mode.

Is there anything I can do to make this configuration work? If not, have you got any advice?

# Answer
That cable is not going to work. That adapter will only allow you to go from a (dual-mode) Displayport source to an HDMI input, not the other way around like you're trying to use it.

To go from an HDMI source to a Displayport input, you need an active converter, such as this Startech unit, not merely an adapter, as Displayport uses a fundamentally different means of data transmission (It's a packetized connection like USB, not just a digital stream) than HDMI or DVI.
> 1 votes

# Answer
A few things to consider:

* Make sure the HDTV adapter is connected to a USB power such as the wall or a PC (the USB from the TVs don't give enough power)
* Have you tried the HDMI to display port adapter with another HDMI output such as your laptop or PC? maybe this is faulty
* Try using an HDMI to DVI adaptor
* Try another HDMI monitor to ensure its not your monitor
> 1 votes

# Answer
Another U2412M user here

Since DisplayPort has been ruled out, DVI is supposed to be good alternative since it's "electrically compatible" with HDMI.

Unfortunately, that's not the case for Android device + U2412M :(

I have personally tested MicroHDMI - DVI (Xperia Pro MK16) and MHL - DVI cable (HTC One M7) with this monitor, none of those combinations appear to work. The monitor simply reverts to sleep mode within 5 minutes.

Edit: MHL works only in 640x480 resolution, and I must pull the power from the monitor USB hub, previously I only tried plugging the MHL usb plug to wall charger with no success.

I have also tested different cables, and all of them works fine when connected to a laptop.

In the end I simply get (micro) HDMI to VGA adapter and finally the U2412M able to mirror my phone display. Make sure you get the one with microUSB port, otherwise your phone battery will be drained fast.

I assume MHL to VGA adaptor should also works.
> 1 votes

---
Tags: samsung-galaxy-s-3, hdmi, external-display
---


# Question
Title: will i lose my pictures during a factory reset?
I accidentally deleted my app store and cant figure out how to get it back or open it again. I've read that I should do a factory reset. What will I lose if I do that? Im worried about my pictures.

# Answer
> 2 votes
A generic answer can be found in the tag-wiki. Basically, it "empties" the `/cache` and `/data` partitions of your device, so all the apps you've installed and all your apps' data will be gone for good. This does not necessarily apply to data on your SDcard: while some devices/ROMs offer to "wipe" those along, this is not done in most cases (in my experience) – and when it's done then usually only when the user explicitly specified to do so.

Now for your specific problem: If you really *deleted* your app store, a *factory-reset* won't bring it back: gone is gone. If you're unsure on what made it disappear, and your device is not rooted, it's unlikely you've really deleted it; you might rather just have *disabled* it. So while a *factory-reset* in that case would bring it back, so would an atomics bomb kill a fly. Before you go to *factory-reset* your device, try the following:

1. Go to *Settings→Apps*
2. To be on the safe side, select the "All Apps" tab
3. Scroll to the very end of the list. On some devices/ROMs disabled apps end up there, and on all devices/ROMs I've seen disabled apps are marked "disabled". See if your app store is there.
    * If it's there: tap the entry to open it, push the "enable" button
    * If it's not there, scroll through the entire list: it might be ordered alphabetically or by some other criteria, and have the "disabled apps" mixed in. When found: see previous item (open, enable, done)

If you didn't succeed with those steps, you still can try a .

---
Tags: google-play-store, factory-reset
---


title: Android Nexus 4 KitKat

text:
# Question
Title: Android Nexus 4 KitKat
I am looking to buy a nexus 4. I know that the new nexus 5 is coming out, and it is being released with Android KitKat installed. If I get a nexus 4 from a store such as best buy or another one, will my Nexus 4 come with Kitkat? If not, When is KitKat expected to be realised for the Nexus 4. If I am not in a rush to get a new phone, would it be better to by the Nexus 4 now, or the Nexus 5 in a few months?

# Answer
> 0 votes
This question is both easy and difficult to answer because there's little official information about the rumored re-release. So everything I say concerning that should be considered an educated *guess*.

* If you buy a Nexus 4 right now, you'll have Android 4.3 (Jelly Bean).
    + Android 4.4 (Kit Kat) Will be an automatic Over-The-Air update sometime in the middle of November (So about a week or two).
* If, at any point, you buy a Nexus 4 from a retailer other than Google, it will most likely come with 4.3, and you will need to make sure it gets updated.
* If you buy the (Still rumored, not yet officially announced) re-release of the Nexus 4 later, it will most likely come preloaded with Android 4.4 *if you buy it from the Play Store*.

---
Tags: nexus-4, operating-system, 4.4-kitkat, nexus-5
---


# Question
Title: Samsung Galaxy S2 'Not Registered on Network'
I have a Samsung Galaxy S2 that I want to sell. I have reset it to factory settings. However, I have a problem. When I bought the phone new, it was on O2. I changed fairly recently to Virgin Mobile. Now, however, I have taken the SIM out of it to put it in my new phone. The original SIM (O2) was PAYG, which changed to SIM only contract and that was still the case when I changed to Virgin. Now, when I put the old (O2) SIM back into the phone, it says `Not Registered on Network`. I've tried a factory reset and messing with the APN settings but nothing seems to work. I'm at my whit's end. Please help.

# Answer
From what I understand of SIMs, it's the SIM that is "not registered on network" since I'd guess you haven't kept up the payments on it when not using it, having moved to a new one.

If the phone works with your active SIM, it should work with a new activated SIM bought by the new owner, or an active SIM moved from the new owner's old phone.

Mind you, I have a phone with a useless SIM slot that's on a non-SIM network, so I might not have the right grasp of this, but that was what I had gathered about SIM phones - that for all intents and purposes your account was as portable as the SIM, and you could toss it into a phone and your account would follow; or get another SIM and have another account (ie, a country-local one when traveling.)
> 1 votes

---
Tags: samsung-galaxy-s-2, connection-issues, sim-card
---


# Question
Title: how to disable android headset/aux volume limit?
While using my old Samsung Exhibit II 4G and now on my relatively new LG Nexus 4, I have noticed that music or media playback through headphones or auxiliary cable stops after about 30 or so seconds if the volume is higher than 3/4 of the max. Is this a bug? What seems even more confusing is that if you press play again, it stops the playback after less time (like 10-15 seconds) and continues to shorten the time it will play back until you lower the volume below 3/4. Can this be disabled? And what is it anyway? It is not app-specific and it doesn't care if I have the volume maxed out if I'm using bluetooth or the built-in speaker.

# Answer
> 0 votes
Sounds rather like something is overheating (hardware) especially the shorter times on repeated attempts. Presumably whatever that is is not in the speaker part of the circuit or when transmitting to bluetooth, but is specific to the headphone/aux jack part of the circuit.

So, probably a hardware bug (or "design flaw"), rather than a "limit" you can "disable."

---
Tags: volume-control, media-player
---


# Question
Title: Can not delete picture from Android phone
An image someone sent me to my gmail, has ended up on my phone gallery, I am unable to delete. Any ideas?

# Answer
It is possible that due to it being in your Gmail, and your account being set up on the phone, that when you try to delete it, Gmail resyncs it to your device.

So my advice would be to log into Gmail.com and remove the email from there, making sure you remove it from trash as well. Then attempt to remove the picture from your gallery.
> 1 votes

---
Tags: gmail, email, google-apps
---


title: Blinkfeed, what exactly it is?

text:
# Question
Title: Blinkfeed, what exactly it is?
HTC says best feature of the device. But what exactly is Blinkfeed?

# Answer
> 2 votes
> BlinkFeed—an aggregator of news and social network content \[...\]
>
> BlinkFeed will always occupy the leftmost page of the home screen.
>
> The default BlinkFeed home screen of HTC Sense 5

(Wikipedia: HTC One)

To explain the second line:

> By default, there will only be two home screen panels out of the box: a "BlinkFeed" page and a classic Android home screen on the right.

This explanation is taken from HTC One software hands-on: Sense 5, BlinkFeed, Sense TV and new Sync Manager (Engadget), where *Blinkfeed* is further described:

> This is simply a Flipboard-like tile interface that sits permanently on the main home page. Created in collaboration with Mobiles Republic, this tool pulls in content from various publications and social networks (Twitter, Plurk, LinkedIn, Flickr, Zoe Share and more), as well as your calendar and TV shows from the TV app (more on that later). You won't be seeing emails here, as HTC positions BlinkFeed as a place for more ambient info rather than critical updates. Regardless, the feed can be customized to suit your needs, though the first version won't let you add custom RSS feeds just yet.

Read more in the linked articles themselves.

---
Tags: htc-one-x, htc
---


# Question
Title: What is the FastBoot? and what is the difference to obtain the root on Nexus devices?
I have some doubts about fastboot and some other stuff.

I am an owner of an old HTC Desire on which, a long time ago, I installed **Cyanogen Mod** Android distribution.

Although I installed the Cyanogen I have many doubts about the fastboot and the Android architecture.

What exactly is **FastBoot**? What it is for?

I also have a doubt about how obtain **root permission** on the new **Nexus 5**, reading online I have understand that to obtain root permission on the Nexus devices I have to connect it to my PC and to execute a program that give me the root...but this is the same thing that I did on my HTC Desire.

What is the difference? Why many people say that obtain root permission on Nexus devices is easier than on others devices? It seems to me the same thing !!! What am I missing?

# Answer
> 1 votes
When talking about gaining root for a given device, it usually means obtaining it for the first time by developers. There are generally two ways of doing this. You can either find a software vulnerability that can be exploited to elevate permissions and sneak in the `su` (superuser) binary into write-protected system area, or you can flash an image of the device with root already in place. Needless to say, exploiting vulnerabilities is a lot more difficult. This is where fastboot comes in.

On some devices (mostly HTC and Motorola) Fastboot is a special start-up mode that allows you to flash pre-made images onto various internal memory partitions. It is similar to Samsung's "Download" mode, except instead of proprietary software like Kies or Odin (and Heimdall), it uses the fastboot utility that comes standard with Android SDK.

However, flashing can be, and usually is, restricted by device manufacturers to only images signed by the manufacturer themselves (or the carriers). This is what is referred to as bootloader locking. Most new phones ship with locked bootloaders, which makes it impossible to flash custom ROMs. You are back to having to root via the other, more difficult method.

Nexus devices come with unlockable bootloaders, so that you can flash ROMs easily and without restrictions. Unlocking a bootloader of a Nexus device is very easy as well. A pre-rooted image usually surfaces very quickly for these devices after they are released.

It is worth noting that with Android 4.3 (Jelly Bean) and even more so with 4.4 (KitKat) Google has changed some low level OS security policies, which renders old rooting methods obsolete. Unlocking the bootloader and flashing a modified image of the OS that circumvents these new policies will soon become the only way to really achieve root. You can read more about this here.

---
Tags: rooting, root-access, fastboot, nexus-5
---


# Question
Title: How do I make OpenVPN Connect honour the keepalive setting?
I've got an OpenVPN server and a Android OpenVPN client (OpenVPN Connect). In the server config I've configured it to use a less often than standard keepalive ping. By default, it's a ping every 10 seconds, but I want to save battery by increasing this to 600. In the `server.conf` I've put a line `keepalive 600 1800` to do this.

I'm expecting the server to push these settings to the client and that the client honours these settings. However, on the client I see disconnects already after 40 seconds after connecting due to inactivity!

Here's what I see in detail:

* The OpenVPN pushes the `ping 600` and `ping-restart 1800` (as a result of the `keepalive` statement) perfectly fine to the client.
* Disconnect reason is as quick as 40 seconds after connection on idling, reason: *Session invalidated: KEEPALIVE\_TIMEOUT*. That does not make sense to me.

+ Server version: 2.1.3 x86\_64-pc-linux-gnu (Debian version 2.1.3-2+squeeze1)
    + Client version: 1.1.12 build 45 (OpenVPN Connect from Google Play)
    + Android version: 4.2.2 (Paranoid Android 3.69)

How can I have an increased interval for keepalive pings and have the client not disconnect?

*FYI - I've also posted this on OpenVPN support forums: topic.*

# Answer
It's a bug with OpenVPN Connect, apparently:

> You are absolutely right -- server-pushed keepalive parameters (ping, ping-restart) are being ignored in 1.1.12 and earlier.
>
> Will be fixed in next release.
>
> Thanks,
>
> James

By using OpenVPN for Android (alternative), I can connect properly.
> 2 votes

---
Tags: openvpn
---


title: Lock screen orientation on Nexus 4

text:
# Question
Title: Lock screen orientation on Nexus 4
Is there a shortcut to lock the screen orientation on the Nexus 4 with android 4.2.1? I read you can swipe down from the top right corner on the Nexus 7 but haven't found any info for the 4.

# Answer
You can go to `Settings > Display` and then un-check Auto-Rotate. Since that's rather inconvenient, I installed an app called Power Toggles which makes it possible to force lock the screen orientation to landscape or portrait from the notification bar very easily.

I particularly liked this app since its very lightweight, only about 248kb. It also makes it possible to add single-click actions for things such as the turning on the flashlight or mobile hotspot.
> 4 votes

# Answer
To lock home screen so it would not rotate, just go to launcher settings and disable "rotate screen". That is all you need to do. I am referring to Nexus 4 with OS 4.3 There is nothing is settings that will help. I have been fighting with this for a week not remembering how I did it in the first place..
> 0 votes

---
Tags: nexus-4, screen, orientation
---


# Question
Title: What do Android application permissions mean?
When installing an application, the application lists permissions that it needs to perform its functions.

I am creating this list of the the system defined permissions and a description of what they mean. It is a community wiki so if new permissions are added in the future they can be added to this list.

# Answer
> 23 votes
This is all the available permissions that an application can require. Of this list, there are some that can only be "requested" by "System" applications. Applications that are not system applications will not be able to request permissions to "System Permissions". Only applications that are in the /system/app location and signed with the System key can request these specific system permissions.

These are the names that are used by the developer of the application to request the permission, but the name that is displayed when installing should have some similar wording to the name.

---

## Permissions

* **ACCESS\_CHECKIN\_PROPERTIES**
    + Allows read/write access to the "properties" table in the (Unix security) checkin database, to change values that get uploaded.
    + **Group:** LOCATION
    + **Level:** SYSTEM
* **ACCESS\_COARSE\_LOCATION**
    + Allows an app to access approximate location derived from network location sources such as cell towers and Wi-Fi.
    + **Group:** LOCATION
    + This permission is usually used by applications that display location based ads by publishers like Admob (Google).
* **ACCESS\_FINE\_LOCATION**
    + Allows an app to access precise location from location sources such as GPS, cell towers, and Wi-Fi.
    + **Group:** LOCATION
    + This permission can be used by applications that display location based ads by publishers like Admob (Google). It is also used by applications that want your exact location. Examples would be Navigation applications, "Check-In" apps like 4square.
* **ACCESS\_LOCATION\_EXTRA\_COMMANDS**
    + Allows an application to access extra location provider commands.
    A good example for poor documentation, as even books on Android application development state: *The Android documentation doesn’t tell us which location commands are “extra,” so we’ll ask for all of them.*
    + **Group:** LOCATION
* **ACCESS\_MOCK\_LOCATION**
    + Allows an application to create mock location providers for testing, and is intended for development use in e.g. the Android Emulator (to save the dev from having to run around to check if positions are displayed correctly). Cases where this is needed in an app ready for endusers should be rare.
    + This allows an application to fake the location information.
    + **Group:** LOCATION
* **ACCESS\_NETWORK\_STATE**
    + Allows applications to access information about networks.
    + Information including if a network is available (or just connecting), what type of network the device is connected to, if any (WiFi, 3G, LTE), if it's in Roaming, and also reasons for a failed connection attempt (if any).
    + Good use: The application may check the state of your connection before trying to access the internet, and e.g. restrict itself to WiFi for some actions.
    + Bad use: Only in combination with other permissions (e.g. data collection for profiling).
    + **Group:** NETWORK
* **ACCESS\_SURFACE\_FLINGER**
    + Allows an application to use SurfaceFlinger's low level features.
    SurfaceFlinger is part of Android's media framework. It provides a compositor which takes care for rendering in frame buffers (so this has to do with graphics).
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **ACCESS\_WIFI\_STATE**
    + Allows applications to access information about Wi-Fi networks
    + **Group:** NETWORK
    + This could be requested by any application that uses internet access. The application may check the state of your connection before trying to access the internet.
    + Good/Bad use: See ACCESS\_NETWORK\_STATE above.
* **ACCOUNT\_MANAGER**
    + Allows applications to call into AccountAuthenticators. Only the system can get this permission.
    An account-manager is the service working behind the scenes and taking care everything works as expected.
    + **Group:** ACCOUNTS
    + **Level:** SYSTEM
    + This permission is reserved for system apps.
* **ADD\_VOICEMAIL** (4.0+)
    + Allows an application to add voicemails into the system.
    + **Group:** PERSONAL\_INFO
* **AUTHENTICATE\_ACCOUNTS**
    + Allows an application to act as an AccountAuthenticator for the AccountManager
    + **Group:** ACCOUNTS
    + This is for applications that would authenticate you to their service.
    An app using this permission usually provides an interface to deal with a certain account type (which is not known by the pre-installed Android system), such as Dropbox. As shipped, Android does not know how to login to Dropbox and how to deal with a Dropbox account – so the Dropbox app provides the mechanism. Additionally, an "account authenticator" might restrict the actions an app can perform with the account (so it would e.g. be possible to administrate this via some web interface offered by the service).
* **BATTERY\_STATS**
    + Allows an application to collect battery statistics
    + Battery widgets and other battery information tools use this permission
    + **Group:** SYSTEM\_TOOLS
* **BIND\_APPWIDGET**
    + Allows an application to tell the AppWidget service which application can access AppWidget's data. The normal user flow is that a user picks an AppWidget to go into a particular host, thereby giving that host application access to the private data from the AppWidget app. An application that has this permission should honor that contract. Very few applications should need to use this permission.
    + **Group:** PERSONAL\_INFO
    + **Level:** SYSTEM
* **BIND\_DEVICE\_ADMIN** (2.2+)
* Must be required by device administration receiver, to ensure that only the system can interact with it.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **BIND\_INPUT\_METHOD**
    + Must be required by an InputMethodService, to ensure that only the system can bind to it.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **BIND\_REMOTEVIEWS** (3.0+)
    + Must be required by a RemoteViewsService, to ensure that only the system can bind to it.
    + **Level:** SYSTEM
* **BIND\_TEXT\_SERVICE** (4.0+)
    + Must be required by a TextService (e.g. SpellCheckerService) to ensure that only the system can bind to it.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **BIND\_VPN\_SERVICE** (4.0+)
    + Must be required by a Vpn Service, to ensure that only the system can bind to it.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **BIND\_WALLPAPER** (2.2+)
    + Must be required by a WallpaperService, to ensure that only the system can bind to it.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **BIND\_\***
    + many more like the above for different services, like NFC, PrintService, and others
* **BLUETOOTH**
    + Allows applications to connect to paired bluetooth devices
    + **Group:** NETWORK
* **BLUETOOTH\_ADMIN**
    + Allows applications to discover and pair bluetooth devices
    + **Group:** SYSTEM\_TOOLS
* **BLUETOOTH\_PRIVILEGED** (4.4+)
    + Allows applications to pair bluetooth devices without user interaction. This is not available to third party applications.
* **BRICK**
    + Required to be able to disable the device
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **BROADCAST\_PACKAGE\_REMOVED**
    + Allows an application to broadcast a notification that an application package has been removed.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **BROADCAST\_SMS**
    + Allows an application to broadcast an SMS receipt notification
    + **Group:** MESSAGES
    + **Level:** SYSTEM
* **BROADCAST\_STICKY**
    + Allows an application to broadcast sticky intents. These are broadcasts whose data is held by the system after being finished, so that clients can quickly retrieve that data without having to wait for the next broadcast.
    + **Group:** SYSTEM\_TOOLS
* **BROADCAST\_WAP\_PUSH**
    + Allows an application to broadcast a WAP PUSH receipt notification
    + **Group:** MESSAGES
    + **Level:** SYSTEM
* **CALL\_PHONE**
    + Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.
    + **Group:** COST\_MONEY
    + This will allow the application to "prompt" you to place a call. You will not have to enter the number, but you will have to place the "call" button. You will be able to see the number that is being called.
* **CALL\_PRIVILEGED**
    + Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed.
    + **Group:** MESSAGES
    + **Level:** SYSTEM
* **CAMERA**
    + Required to be able to access the camera device.
    + **Group:** HARDWARE\_CONTROLS
    + Any application that uses the rear or front cameras.
* **CAPTURE\_AUDIO\_OUTPUT** (4.4+)
    + Allows an application to capture audio output. Not for use by third-party applications.
* **CAPTURE\_SECURE\_VIDEO\_OUTPUT** (4.4+)
    + Allows an application to capture secure video output. Not for use by third-party applications.
* **CAPTURE\_VIDEO\_OUTPUT** (4.4+)
    + Allows an application to capture video output. Not for use by third-party applications.
* **CHANGE\_COMPONENT\_ENABLED\_STATE**
    + Allows an application to change whether an application component (other than its own) is enabled or not.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **CHANGE\_CONFIGURATION**
    + Allows an application to modify the current configuration, such as locale.
    + **Group:** SYSTEM\_TOOLS
* **CHANGE\_NETWORK\_STATE**
    + Allows applications to change network connectivity state
    + **Group:** SYSTEM\_TOOLS
* **CHANGE\_WIFI\_MULTICAST\_STATE**
    + Allows applications to enter Wi-Fi Multicast mode
    + **Group:** SYSTEM\_TOOLS
* **CHANGE\_WIFI\_STATE**
    + Allows applications to change Wi-Fi connectivity state
    + **Group:** SYSTEM\_TOOLS
* **CLEAR\_APP\_CACHE**
    + Allows an application to clear the caches of all installed applications on the device.
    + **Group:** SYSTEM\_TOOLS
* **CLEAR\_APP\_USER\_DATA**
    + Allows an application to clear user data
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **CONTROL\_LOCATION\_UPDATES**
    + Allows enabling/disabling location update notifications from the radio. Not for use by normal applications.
    + **Group:** LOCATION
    + **Level:** SYSTEM
* **DELETE\_CACHE\_FILES**
    + Allows an application to delete cache files.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **DELETE\_PACKAGES**
    + Allows an application to delete packages.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **DEVICE\_POWER**
    + Allows low-level access to power management
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **DIAGNOSTIC**
    + Allows applications to RW to diagnostic resources.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **DISABLE\_KEYGUARD**
    + Allows applications to disable the keyguard
    + **Group:** SYSTEM\_TOOLS
* **DUMP**
    + Allows an application to retrieve state dump information from system services.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **EXPAND\_STATUS\_BAR**
    + Allows an application to expand or collapse the status bar.
    + **Group:** SYSTEM\_TOOLS
* **FACTORY\_TEST**
    + Run as a manufacturer test application, running as the root user. Only available when the device is running in manufacturer test mode.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **FLASHLIGHT**
    + Allows access to the flashlight
    + **Group:** HARDWARE\_CONTROLS
    + Allows application to control the LED flash from the camera and have it act like a flashlight.
* **FORCE\_BACK**
    + Allows an application to force a BACK operation on whatever is the top activity.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **GET\_ACCOUNTS**
    + Allows access to the list of accounts in the Accounts Service
    + Applications that require some type of authentication from accounts that are "connected" to the device. A list of the accounts are ususally displayed so you can choose the account to use with the application. To really use those credentials, the `USE_CREDENTIALS` permission is required.
    + **Group:** ACCOUNTS
    + also see: What does “discover known accounts” permission mean?
* **GET\_PACKAGE\_SIZE**
    + Allows an application to find out the space used by any package.
    + **Group:** SYSTEM\_TOOLS
* **GET\_TASKS**
    + Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc. **Bad cop:** spy for possible security leaks (vulnerable apps), data collection. **Good cop:** check whether the app's own service is running, show recently used apps (task-switcher), provide app-specific behaviour (eg orientation manager tools).
    + **Group:** SYSTEM\_TOOLS
* **GET\_TOP\_ACTIVITY\_INFO** (4.3+)
    + Allows an application to retrieve private information about the current top activity, such as any assist context it can provide. Not for use by third-party applications.
* **GLOBAL\_SEARCH**
    + This permission can be used on content providers to allow the global search system to access their data. Typically it used when the provider has some permissions protecting it (which global search would not be expected to hold), and added as a read-only permission to the path in the provider where global search queries are performed. This permission can not be held by regular applications; it is used by applications to protect themselves from everyone else besides global search.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **HARDWARE\_TEST**
    + Allows access to hardware peripherals. Intended only for hardware testing
    + **Group:** HARDWARE\_CONTROLS
* **INJECT\_EVENTS**
    + Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window. Without this permission, you can only deliver events to windows in your own process. Very few applications should need to use this permission.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM (or APPLICATION ONLY)
* **INSTALL\_LOCATION\_PROVIDER**
    + Allows an application to install a location provider into the Location Manager
    + **Group:** LOCATION
* **INSTALL\_PACKAGES**
    + Allows an application to install packages.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **INSTALL\_SHORTCUT** (4.4+)
    + Allows an application to install a shortcut in Launcher (Homescreen)
* **INTERACT\_ACROSS\_USERS** (4.4+?)
    + Allows an application to call APIs that allow it to do interactions across the users on the device, using singleton services and user-targeted broadcasts. This permission is not available to third party applications.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SIGNATURE\_OR\_SYSTEM
    + also see this answer
* **INTERNAL\_SYSTEM\_WINDOW**
    + Allows an application to open windows that are for use by parts of the system user interface. Not for use by third party apps.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **INTERNET**
    + Allows applications to open network sockets.
    + **Group:** NETWORK
    + Any application that accesses the internet for any reason will have to request this permission.
* **KILL\_BACKGROUND\_PROCESSES** (2.2+)
    + Allows an application to call `killBackgroundProcesses`
    + **Group:** SYSTEM\_TOOLS
* **LOCATION\_HARDWARE** (4.3+)
    + Allows an application to use location features in hardware, such as the geofencing api. Not for use by third-party applications.
* **MANAGE\_ACCOUNTS**
    + Allows an application to manage the list of accounts in the AccountManager
    + **Group:** ACCOUNTS
    + This permission allows an application to add/remove accounts in the account manager. Like when you log in to facebook, it adds your account to the Account Manager accounts. For further details, see: What does permission “MANAGE\_ACCOUNTS” mean?, and also the AccountManager Documentation on the Android Developers site.
* **MANAGE\_APP\_TOKENS**
    + Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. This is only for use by the system.
    + **Group:** ACCOUNTS
    + **Level:** SYSTEM
* **MANAGE\_DOCUMENTS** (4.4+)
    + Allows an application to manage access to documents, usually as part of a document picker.
* **MANAGE\_USB**
    + Allows an application to manage preferences and permissions for USB devices
    + **Group:** HARDWARE\_CONTROLS
    + **Level:** SYSTEM
* **MANAGE\_MTP**
    + Allows an application to access the MTP USB kernel driver. For use only by the device side MTP implementation.
    + **Group:** HARDWARE\_CONTROLS
    + **Level:** SYSTEM
* **MASTER\_CLEAR**
    + **Level:** SYSTEM
* **MEDIA\_CONTENT\_CONTROL** (4.4+)
    + Allows an application to know what content is playing and control its playback. Not for use by third-party applications due to privacy of media consumption
* **MODIFY\_AUDIO\_SETTINGS**
    + Allows an application to modify global audio settings
    + **Group:** HARDWARE\_CONTROLS
* **MODIFY\_PHONE\_STATE**
    + Allows modification of the telephony state - power on, mmi, etc. Does not include placing calls.
    + **Group:** PHONE\_CALLS
    + **Level:** System
* **MOUNT\_FORMAT\_FILESYSTEMS**
    + Allows formatting file systems for removable storage
    + **Group:** SYSTEM\_TOOLS
* **MOUNT\_UNMOUNT\_FILESYSTEMS**
    + Allows mounting and unmounting file systems for removable storage
    + **Group:** SYSTEM\_TOOLS
* **NFC** (2.3+)
    + Allows applications to perform I/O operations over NFC
    + **Group:** NETWORK
* **PERSISTENT\_ACTIVITY**
    + Allow an application to make its activities persistent. `deprecated`
    + **Group:** SYSTEM\_TOOLS
* **PROCESS\_OUTGOING\_CALLS**
    + Allows an application to monitor, modify, or abort outgoing calls.
    + **Group:** PHONE\_CALLS
* **READ\_CALENDAR**
    + Allows an application to read the user's calendar data.
    + **Group:** PERSONAL\_INFO
* **READ\_CALL\_LOG** (4.1+)
    + Allows an application to read the system's call log that contains information about incoming and outgoing calls.
* **READ\_CONTACTS**
    + Allows an application to read the user's contacts data.
    + **Group:** PERSONAL\_INFO
    + Check the app permission.READ\_CONTACTS to see what informations can be obtained with this permission.
* **READ\_CONTENT\_PROVIDER**
    + Access mail information
    + **Group:** MESSAGES
    + This is primarily for access to information on Mails in Gmail. Developers can use this content provider to display label information to the user.
    + also see: What lurks behind these Gmail/GTalk permissions?
* **READ\_EXTERNAL\_STORAGE** (4.1+)
    + Provides protected read access to external storage. In Android 4.1 by default all applications still have read access. This changed with Android 4.4 (API level 19), which now requires that applications explicitly request read access using this permission. If an application already requests write access, it will automatically get read access as well.
    + **Group:** STORAGE
* **READ\_FRAME\_BUFFER**
    + Allows an application to take screen shots and more generally get access to the frame buffer data
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **READ\_GMAIL**
* **READ\_HISTORY\_BOOKMARKS**
    + Allows an application to read (but not write) the user's browsing history and bookmarks.
    + **Group:** PERSONAL\_INFO
    + Check the app READ\_HISTORY\_BOOKMARKS App. to see what information can be obtained with this permission.
* **READ\_INPUT\_STATE**
    + Allows an application to retrieve the current state of keys and switches. This is only for use by the system.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **READ\_LOGS**
    + Allows an application to read the low-level system log files. Log entries can contain the user's private information
    + **Group:** PERSONAL\_INFO
    + No longer granted to user apps starting with Android 4.2+ (user apps can now only see their own log entries). Work-arounds are possible on rooted devices.
    + For details, see: Read logs from all apps on android from within an app for android 4.2+
* **READ\_OWNER\_DATA**
* **READ\_PHONE\_STATE**
* **READ\_PROFILE** (4.0+)
    + Allows an application to read the user's personal profile data.
    + **Group:** PERSONAL\_INFO
* **READ\_SECURE\_SETTINGS**
    + Allows an application to read the secure system settings.
    + **Group:** HARDWARE\_CONTROLS
* **READ\_SMS**
    + Allows an application to read SMS messages.
    + **Group:** MESSAGES
    + Check the app permission.READ\_SMS to see what information can be obtained with this permission.
* **READ\_SOCIAL\_STREAM** (4.0+)
    + Allows an application to read from the user's social stream.
    + **Group:** PERSONAL\_INFO
* **READ\_SYNC\_SETTINGS**
    + Allows applications to read the sync settings
    + **Group:** SYSTEM\_TOOLS
* **READ\_SYNC\_STATS**
    + Allows applications to read the sync stats
    + **Group:** SYSTEM\_TOOLS
* **READ\_USER\_DICTIONARY** (4.1+)
    + Allows an application to read the user dictionary. This should really only be required by an IME, or a dictionary editor like the Settings app.
    + **Group:** PERSONAL\_INFO
* **REBOOT**
    + Required to be able to reboot the device
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **RECEIVE\_BOOT\_COMPLETED**
    + Allows an application to receive the `ACTION_BOOT_COMPLETED` that is broadcast after the system finishes booting. If you don't request this permission, you will not receive the broadcast at that time. Though holding this permission does not have any security implications, it can have a negative impact on the user experience by increasing the amount of time it takes the system to start and allowing applications to have themselves running without the user being aware of them. As such, you must explicitly declare your use of this facility to make that visible to the user.
    + **Group:** SYSTEM\_TOOLS
* **RECEIVE\_EMERGENCY\_BROADCAST**
    + Allows an application to receive emergency cell broadcast messages, to record or display them to the user. Reserved for system apps.
    + **Group:** MESSAGES
    + **Level:** SYSTEM
    + *Pending API council approval*
* **RECEIVE\_MMS**
    + Allows an application to monitor incoming MMS messages, to record or perform processing on them.
    + **Group:** MESSAGES
* **RECEIVE\_SMS**
* **RECEIVE\_WAP\_PUSH**
    + Allows an application to monitor incoming WAP push messages.
    + **Group:** MESSAGES
* **RECORD\_AUDIO**
    + Allows an application to record audio
    + **Group:** HARDWARE\_CONTROLS
* **REORDER\_TASKS**
    + Allows an application to change the Z-order of tasks
    + **Group:** SYSTEM\_TOOLS
* **RESTART\_PACKAGES**
    + `deprecated` \- No longer supported
* **SEND\_RESPOND\_VIA\_MESSAGE** (4.3+)
    + Allows an application (Phone) to send a request to other applications to handle the respond-via-message action during incoming calls. Not for use by third-party applications.
* **SEND\_SMS**
    + Allows an application to send SMS messages.
    + **Group:** COST\_MONEY
* **SEND\_SMS\_NO\_CONFIRMATION**
    + Allows an application to send SMS messages via the Messaging app with no user input or confirmation.
    + **Group:** COST\_MONEY
    + **Level:** SYSTEM
* **SET\_ACTIVITY\_WATCHER**
    + Allows an application to watch and control how activities are started globally in the system.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **SET\_ALARM** (2.3+)
    + Allows an application to broadcast an Intent to set an alarm for the user.
    + **Group:** PERSONAL\_INFO
* **SET\_ALWAYS\_FINISH**
    + Allows an application to control whether activities are immediately finished when put in the background.
    + **Group:** DEVELOPMENT\_TOOLS
* **SET\_ANIMATION\_SCALE**
    + Modify the global animation scaling factor.
    + **Group:** SYSTEM\_TOOLS
* **SET\_DEBUG\_APP**
    + Configure an application for debugging.
    + **Group:** DEVELOPMENT\_TOOLS
* **SET\_ORIENTATION**
    + Allows low-level access to setting the orientation (actually rotation) of the screen. Not for use by normal applications.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **SET\_POINTER\_SPEED** (3.2+)
    + Allows low-level access to setting the pointer speed. Not for use by normal applications.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **SET\_PREFERRED\_APPLICATIONS**
    + `deprecated` No longer useful
    + **Group:** SYSTEM\_TOOLS
* **SET\_PROCESS\_LIMIT**
    + Allows an application to set the maximum number of (not needed) application processes that can be running.
    + **Group:** DEVELOPMENT\_TOOLS
* **SET\_TIME** (2.2+)
    + Allows applications to set the system time
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **SET\_TIME\_ZONE**
    + Allows applications to set the system time zone
    + **Group:** SYSTEM\_TOOLS
* **SET\_WALLPAPER**
    + Allows applications to set the wallpaper
    + **Group:** SYSTEM\_TOOLS
* **SET\_WALLPAPER\_HINTS**
    + Allows applications to set the wallpaper hints
    + **Group:** SYSTEM\_TOOLS
* **SIGNAL\_PERSISTENT\_PROCESSES**
    + Allow an application to request that a signal be sent to all persistent processes
    + **Group:** DEVELOPMENT\_TOOLS
* **STATUS\_BAR**
    + Allows an application to open, close, or disable the status bar and its icons.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **SUBSCRIBED\_FEEDS\_READ**
    + Allows an application to read the subscribed feeds ContentProvider.
    + **Group:** SYSTEM\_TOOLS
* **SUBSCRIBED\_FEEDS\_WRITE**
    + Allows an application to write to the subscribed feeds ContentProvider.
    + **Group:** SYSTEM\_TOOLS
* **SYSTEM\_ALERT\_WINDOW**
    + Allows an application to open windows using the type `TYPE_SYSTEM_ALERT`, shown on top of all other applications. Very few applications should use this permission; these windows are intended for system-level interaction with the user.
    + **Group:** SYSTEM\_TOOLS

---

continue here
<sup>too many characters *(Body is limited to 30000 characters)*, so it had to be split</sup>

# Answer
> 3 votes
<sup>Continued from first answer (got too long, could be extended no more)</sup>

## Permissions (continued)

* **TRANSMIT\_IR** (4.4+)
    + Allows using the device's IR transmitter, if available
* **UNINSTALL\_SHORTCUT** (4.4+)
    + Allows an application to uninstall a shortcut in Launcher (Homescreen)
* **UPDATE\_DEVICE\_STATS**
    + Allows an application to update device statistics. Not for use by third party apps.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **USE\_CREDENTIALS**
    + Allows an application to request authtokens from the AccountManager
    + **Group:** ACCOUNTS
    + This app may use the "credentials" to log into an account. In most cases, "credentials" just means the corresponding authenticator creates a fitting token and hands that over (though, how to deal with that is left to the authenticator). When using an account for the first time, the *Account Manager* should make sure the user is asked whether he permits this.
    + details: What can an app do with the “USE ACCOUNTS ON THE DEVICE” permission?
* **USE\_SIP** (2.3)
    + Allows an application to use SIP service
    + **Group:** NETWORK
* **VIBRATE**
    + Allows access to the vibrator
    + **Group:** HARDWARE\_CONTROLS
* **WAKE\_LOCK**
    + Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming
    + **Group:** SYSTEM\_TOOLS
* **WRITE\_APN\_SETTINGS**
    + Allows applications to write the apn settings
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **WRITE\_CALENDAR**
    + Allows an application to write (but not read) the user's calendar data.
    + **Group:** PERSONAL\_INFO
* **WRITE\_CALL\_LOG** (4.1+)
    + Allows an application to modify the system's call log stored on your phone
* **WRITE\_CONTACTS**
    + Allows an application to write (but not read) the user's contacts data.
    + **Group:** PERSONAL\_INFO
* **WRITE\_EXTERNAL\_STORAGE**
* **WRITE\_GMAIL**
* **WRITE\_GSERVICES**
* **WRITE\_HISTORY\_BOOKMARKS**
    + Allows an application to write (but not read) the user's browsing history and bookmarks.
    + **Group:** PERSONAL\_INFO
* **WRITE\_OWNER\_DATA**
* **WRITE\_PROFILE** (4.0+)
    + Allows an application to write (but not read) the user's personal profile data.
    + **Group:** PERSONAL\_INFO
* **WRITE\_SECURE\_SETTINGS**
    + Allows an application to read or write the secure system settings.
    + **Group:** SYSTEM\_TOOLS
    + **Level:** SYSTEM
* **WRITE\_SETTINGS**
    + Allows an application to read or write the system settings.
    + **Group:** SYSTEM\_TOOLS
* **WRITE\_SMS**
    + Allows an application to write SMS messages.
    + **Group:** MESSAGES
* **WRITE\_SOCIAL\_STREAM** (4.0+)
    + Allows an application to write (but not read) the user's social stream data.
    + **Group:** PERSONAL\_INFO
* **WRITE\_SYNC\_SETTINGS**
    + Allows applications to write the sync settings
    + **Group:** SYSTEM\_TOOLS
* **WRITE\_USER\_DICTIONARY** (4.1+)
    + Allows an application to write to the user dictionary.
    + **Group:** PERSONAL\_INFO

## Groups

The individual permissions above fall in to one (or more) of the following permission groups:

* **ACCOUNTS**
    + Permissions for direct access to the accounts managed by the Account Manager.
* **AFFECTS\_BATTERY**
* **APP\_INFO**
* **AUDIO\_SETTINGS**
* **BLUETOOTH\_NETWORK**
* **BOOKMARKS**
* **CALENDAR**
* **CAMERA**
* **COST\_MONEY**
    + Used for permissions that can be used to make the user spend without their direct involvement. For example, this is the group for permissions that allow you to directly place phone calls, directly send SMS messages, etc.
* **DEVELOPMENT\_TOOLS**
    + Group of permissions that are related to development features. These are not permissions that should appear in normal applications; they protect APIs that are intended only to be used for development purposes.
* **DEVICE\_ALARMS**
* **DISPLAY**
* **HARDWARE\_CONTROLS**
    + Used for permissions that provide direct access to the hardware on the device. This includes audio, the camera, vibrator, etc.
* **LOCATION**
    + Used for permissions that allow access to the user's current location.
* **MESSAGES**
    + Used for permissions that allow an application to send messages on behalf of the user or intercept messages being received by the user. This is primarily intended for SMS/MMS messaging, such as receiving or reading an MMS.
* **MICROPHONE**
* **NETWORK**
    + Used for permissions that provide access to networking services. The main permission here is internet access, but this is also an appropriate group for accessing or modifying any network configuration or other related network operations.
* **PERSONAL\_INFO**
    + Used for permissions that provide access to the user's private data, such as contacts, calendar events, e-mail messages, etc. This includes both reading and writing of this data (which should generally be expressed as two distinct permissions).
* **PHONE\_CALLS**
    + Used for permissions that are associated with accessing and modifyign telephony state: intercepting outgoing calls, reading and modifying the phone state. Note that placing phone calls is not in this group, since that is in the more important "takin' yer moneys" group.
* **SCREENLOCK**
* **SOCIAL\_INFO**
* **STATUS\_BAR**
* **STORAGE**
    + Group of permissions that are related to SD card access.
* **SYNC\_SETTINGS**
* **SYSTEM\_CLOCK**
* **SYSTEM\_TOOLS**
    + Group of permissions that are related to system APIs. Many of these are not permissions the user will be expected to understand, and such permissions should generally be marked as "normal" protection level so they don't get displayed. This can also, however, be used for miscellaneous features that provide access to the operating system, such as writing the global system settings.
* **USER\_DICTIONARY**
* **VOICEMAIL**
* **WALLPAPER**
* **WRITE\_USER\_DICTIONARY**

---
Tags: security, permissions
---


title: Vibrate-only mode for google voice

text:
# Question
Title: Vibrate-only mode for google voice
I'd like to keep my mobile number private & give out the Google voice number for business.

Is it possible to see the caller number for a google voice call, but set it so that it is in silent mode?

I don't want to silence the phone if the call is to my private number. This is to ensure that I do not miss a call if my private number is dialed (it is an emergency number due to medical reasons). But since I am in a lot of meetings etc, I want to keep it on silent for all other calls. I hope this makes sense.

I have looked around online, but cannot figure out a way to do this. Any help would be greatly appreciated!

# Answer
> 1 votes
Unfortunately, this is not possible with setting Google Voice to forward the caller number to your phone.

When someone calls you using your Google Voice number and you set it up to go straight to your phone, the system spoofs the caller's number and sends it to your phone; the VoIP part of the call ends when Voice connects your caller to you, it's your basic forwarding service.

You cannot control any part of that with the settings from either the webapp or the Andorid app.

EDIT: There's a potential solution to this, depending on whether your emergency contacts have fixed numbers or not. You can set your default ringtone to "None", but for those contacts who do have your number, assign an actual ringtone to them and keep your phone's ringer on loud. Of course, this would not include emergency calls from numbers that you would not know, like hospitals or police stations.

# Answer
> 0 votes
You could get a second google voice number that you also forward to your phone, and use that as your emergency number. So you would never give out your real cell, just your normal GV to everyone and your emergency GV to specific people.

On the emergency GV number, change the settings in GV so that it doesn't display the caller number but instead shows just the emergency GV number as incoming. Then, set a specific ringtone for that emergency number. You won't know exactly who is calling, but assuming you only hand out the emergency number to a few people, it won't matter. It's an emergency.

Note that to link your phone to two google voice accounts, you must specify the real cell number as a home number on both accounts. Otherwise, adding the real cell on one GV account removes it from the other. The downside to specifying the real cell as a Home number instead of a Cell number is that you won't be able to forward text messages to a Home number (though you can still use the Google Voice app to send and receive messages).

---
Tags: ringtone, google-voice
---


# Question
Title: Is there a way to control the blink speed of the notification LED on Nexus 4?
On my Nexus 4, when I get a notification the LED blinks. However it is very slow so you can't notice it with a quick glance at the phone.

Is there a way to make the LED blink faster?

# Answer
There is no way to control the blink speed in the OS itself. However, Light Flow provides a plethora of options for colour, flash rate, etc. There are probably other equivalent apps too.
> 3 votes

---
Tags: nexus-4, notification-led
---


title: Cannot move app to sd-card?

text:
# Question
Title: Cannot move app to sd-card?
My sdcard has plenty free space but I cannot move any apps. On my sdcard there's the old Android/data path with many older apps. Why cannot it be possible to move apps here? Maybe I can create a symlink?

# Answer
> 0 votes
I think I found the solution. I need to be root to move the apps.

---
Tags: applications, sd-card, app2sd
---


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

How can I achieve this?

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

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

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

Or do I need another contact app to achieve this?

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

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

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

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

# Answer
> 1 votes
To make sure that none of my contacts get synychronized to google (Setup: Cyanogenmod 10 with Android 4.1) I deleted the GoogleContactsSyncadapter.apk in folder `/system/app/`. After restarting no contacts got synchronized, if I add a new contact I also get the information, that the contact will only be stored locally. Google Calendar synchronization works normally.

See also this thread.

---
Tags: cyanogenmod, contacts, sync, lineageos, google-apps
---


# Question
Title: What is the difference between restoring and installing an app on an Android device?
Is there any difference between restoring an app and installing an app on an Android device, or are both the same?

# Answer
> 0 votes
As David said, you can restore an unsupported app from a previous backup, or you can restore the data of that app ( e.g. saves in a game ). when you install an app from the play store, you are limited to what's available for your country (unless you're rooted then there some ways to go around it) and even if you install an app that you previously had, the data will not be restored.

google play store just backs up your apps names so when you restore through the play store, the data is not restored.

# Answer
> 0 votes
Well, one that comes to mind - if application is removed from market or is not listed as compatible for your device, restoring from Google account is one way of getting those applications. I did it with "FML official" and "Amazon" applications when they were not available on Nexus 7 2013 - "backed" them up on my Samsung S2 and "restored" on Nexus 7.

And, of course, for **some** applications settings are restored too.

---
Tags: applications
---


# Question
Title: What is the difference between Ultra pixel and Mega Pixel camara?
How we can compare Ultra Pixel and Mega pixel? And what is the difference between these two camara technologies.

# Answer
Extracted from UltraPixel vs Megapixel: HTC One & iPhone 5 Camera Shoot-Out:

**Ultra-Pixels:**

> Basically the sensor on the HTC One features larger pixels for better low light sensitivity and, on paper, better overall camera performance.
>
> \[...\]
>
> We have to understand that “ultrapixel” is just HTC’s marketing team saying that the pixels on the HTC One’s sensor are larger. Here’s how it works: the sensor on the HTC One isn’t larger than the sensors on other modern phones: 1/3.2-inch is what HTC used in the One and the same size is also present on the iPhone 5, Galaxy S III, or Lumia 920. A larger sensor means having something like the Nokia 808 PureView has with its 1/1.2 inch sensor.

Some other site described that term as "plain market buzz". More on the term UltraPixel can also be found at Wikipedia.

Megapixel, on the other hand, is a measurement term, describing the resolution of an image – *a term used not only for the number of pixels in an image, but also to express the number of image sensor elements of digital cameras or the number of display elements of digital displays.*
> 3 votes

---
Tags: camera, htc
---


# Question
Title: Screen brightness keeps switching to auto & timeout to 500min
My Samsung Galaxy Tab 2 7" (Android v4.1.1) has been having a bizarre problem since I installed (and uninstalled) Aldiko reader. It has been setting the Screen Timeout to 500min (which isn't even an available setting in the Display options) and the brightness to "Auto". Regardless of any changes I make, it changes back immediately to those settings - I can actually watch it happen.

Little help?

# Answer
While I wasn't able to directly address the issue, I found an app called Screen Control that can modify screen timeout and brightness settings for *all* applications... using this to reset things and then uninstalling it seems to have done the trick.
> 0 votes

---
Tags: screen, screen-brightness
---


# Question
Title: Simplified prepaid phone balance with Tasker
On my prepaid phone, I can receive current balance as text message responses. They are five messages, four indicating the balance itself and some additional bonuses, and one more indicating the remaining SMS count. However this requires sending a message to the balance number, reading each of the responses, then deleting them manually. How can I set up a simple notification as replacement for this using Tasker?

# Answer
> 0 votes
Here is a summary of how I have implemented it. Besides Tasker, I also used:

## Profiles

* **Request Balance on Calls -** on outgoing call: *Balance Before Call*, on exit: *Balance After Call*.
* **Process Received Balance -** on SMS received from the balance numbers: *Process Balance*.
* **Show Balance Summary -** on *Balance* variable set: *Show Balance*.

## Tasks

* **Balance Before Call**

```
AutomatedBalance = Yes
CheckConsumption = Yes
Request balance by SMS

```
* **Balance After Call**

```
Wait 15 seconds
Unset CheckConsumption
Request balance by SMS
Flash "Balance has been requested"

```
* **Process Balance**

```
response = number from each SMS response
Case SMS sender is the one responsible for
    Bonus balance
        BonusBalance = response
    SMS balance
        SMSBalance = response
    Normal balance
        BalanceConsumption = (Balance - response)
        Balace = response
    Favorite-number balance
        FavoriteBalanceConsumption = (FavoriteBalance - response)
        FavoriteBalance = response
    Same-carrier balance
        CarrierBalanceConsumption = (CarrierBalance - response)
        CarrierBalance = response
    Local landline balance, then
        LocalBalanceConsumption = (LocalBalance - response)
        LocalBalance = response
    Unknown sender
        # This normally means an error, when none of the above have been fired
        Append "(previous)" to Balance

```
* **Show Balance**

```
If CheckConsumption
    If Balance is not currency
        notify "Error while getting the balance in the beginning of call"
    Exit from task
Wait 5 seconds
If Balance is currency
    If FavoriteBalanceConsumption > 0
        consumption = FavoriteBalanceConsumption
        Prefix consumption with "Call to favorite (min) consumed"
    Else if CarrierBalanceConsumption > 0
        consumption = CarrierBalanceConsumption + LocalBalanceConsumption +
            BalanceConsumption
        Prefix consumption with "Call to same-carrier number consumed"
    Else if LocalBalanceConsumption > 0
        consumption = LocalBalanceConsumption + BalanceConsumption
        Prefix consumption with "Call to local number consumed"
    Else if BalanceConsumption > 0
        consumption = BalanceConsumption
        Prefix consumption with "Regular call consumed"
    Else if AutomatedBalance
        consumption = "Free call"
    Else
        consumption = "Phone balance"
    Notify consumption and all balances
    Set all unset balances to zero
    Set all consumptions to zero
Else
    previous_balance = number from balance prefixed with "Previous balance is"
    notify "Error while getting the balance", previous_balance
Unset AutomatedBalance

```

# Answer
> -1 votes
Action -\> Event -\> Phone -\> Received Text

* Type: SMS
* Sender: Phone balance
* Content: *balance*

New Task -\> Variables -\> Variable Set

* Name: %SMSBALANCE
* To: %SMSRB

Add Task -\> Alert -\> Popup

* Title: balance text: \[see in variables\] ...

VOILA

---
Tags: sms, tasker
---


# Question
Title: Desire sv does not start after clear cache
I cleared cache memory of my HTC Desire SV then tried to restart the phone. It does not start. I have also tried hard boot on this phone but result is same.

How can I get my phone to boot again?

# Answer
My phone is working now.I have followed steps to bring my phone up :

1. Removed battery from phone for 30-40 minutes.
2. Insert battery to slot and press power-on button, that's it.

"Now, I don't bother about root cause "
> 0 votes

---
Tags: htc-desire, boot, cache
---


title: How to recognize Nexus 4 as a drive

text:
# Question
Title: How to recognize Nexus 4 as a drive
I'm looking how to recognize my Nexus 4 as a drive.

Actually it's like a camera.

Any idea?

# Answer
This is how many modern Android phones (Including all Nexus phones) work. The Nexus 4 can switch between MTP and PTP modes. To overgeneralize a bit, it can use MTP to emulate a Media Device and PTP to emulate a camera.

The Nexus 4 has **no way to mount as a Mass Storage Device** (and thus, no practical way to mount it and get a drive letter for it)
> 3 votes

---
Tags: nexus-4
---


# Question
Title: Enable slide-lock without PIN/password prior to security timeout - PIN/password enforced by enterprise security policy
I'm on a Galaxy S2X on Jelly Bean 4.1.2, and my company's security policy forces me to use PIN or Password to unlock the device.

Jellybean now allows you to disable "Lock instantly with power button" - if you press the power button, it turns off the screen without locking. And then if you press the power button again before the security timeout, the screen turns back on, and you are not required to enter your password / PIN.

I want to change the behaviour so that if you press the power button, it enables the swipe lock; so if you press the power button again before the security timeout, you are required to swipe the screen to use the phone (prevents "butt-dialing", etc.). I would still want to require the password / PIN after the security timeout.

I've seen a number of posts on this with solutions that use Tasker and Secure Settings to enable and disable the password / PIN on certain conditions - example: Slide unlock till pattern lock gets activated after interval; but this solution does not work when you have a security policy that does not allow you to disable the password / PIN.

Is there another way to achieve this?

I was thinking that if there were some way to de-couple the "slide" from the actual "lock" (since locking always requires a password / PIN on my phone). Is there a way I can invoke the Android slide screen using Tasker without locking? Or, could I invoke a 3rd party slide screen?

# Answer
> -1 votes
I've found a workable solution for this problem. I installed Go Locker, which is a custom slide screen lock. Follow its initial (somewhat confusing) instruction to disable unlocking with the home button, and enable Settings -\> Visual Setting -\> Hide status bar. Then when you press the power button to lock the phone, when you unlock you get the Go Locker screen. The only downside is after your security timeout, you'll have to enter your password/PIN and *then* slide to unlock with Go Locker.

---
Tags: 4.1-jelly-bean, lock-screens
---


# Question
Title: Is it possible to reboot the Nexus 4 without root?
On the Nexus 4, the power menu only allows you to shutdown the device, but not reboot the device. Of course, you could wait for the device to shutdown and then power it up again. What I'm looking for is the ability to reboot in one action.

A lot of apps provide this ability, but it seems that they all requires root.

Is it possible to reboot the Nexus 4 without root?

# Answer
> 1 votes
I found one solution: `adb reboot`

This requires connecting the device to a computer, so it's not perfect, but it works pretty well if I just want to reboot it when I go to sleep.

# Answer
> 0 votes
I don't have a 4 but I have an original 7. You can get a reboot on the 7 by pushing and holding the power button until it reboots. So try that. Sometimes you can go to the shut down menu and long press where it says shut down, but that may just be mods. But if it were me I'd try those, just to try it. :-)

---
Tags: nexus-4, 4.3-jelly-bean, reboot
---


title: How to root without a computer

text:
# Question
Title: How to root without a computer
I have a Samsung Galaxy Attain 4G and I was wondering about rooting my phone without using a computer. I just want to use my phone to root it. And z4root doesn't work.

# Answer
> -2 votes
You positively need a computer. Rooting an Android phone means running an exploit, that the phone will not allow to run on itself. It can be run only on "Debug via USB" mode.

---
Tags: rooting
---


# Question
Title: How can I tell if I have mini port or micro port on my Android tablet?
I was given an Android tablet. I want to hook up a keyboard and a mouse. By looking at it, how can I tell if it has a micro port or a mini port?

# Answer
> 4 votes
This one is mini:

and this one is micro:

There's also another new micro version for USB 3.0, which looks like this. The port is backwards compatible with the previous micro USB cables (you just use half the port and it'll just step down to USB 2.0 speeds). I'm not sure if any Android devices use the new port as yet.

---
Tags: usb
---


# Question
Title: How can I get an infinite callhistory in CyanogenMod 10.0?
I would like to have all calls I ever called or called me in the history.

Is this possible?

# Answer
> 0 votes
Try BearContact on Google Play. It can keep unlimited call logs.

---
Tags: calls, logging, call-history
---


# Question
Title: How can I capture tethered traffic and save it as a pcap file?
I use my Android device with 3G as a hotspot for my laptop. I also occasionally connect other Internet devices to the network, and would like to look at the traffic.

I need a way to log the traffic on my Android device, and a way to save it as a pcap file so I can use it for Wireshark on my laptop.

What's the best way of doing this? Using Android 2.3.7.

# Answer
> -1 votes
You need this soft which capture packet on android

http://lost-and-found-narihiro.blogspot.ru/2012/11/packet-capture-on-android-tpacket.html

---
Tags: 2.3-gingerbread, networking, tethering
---


# Question
Title: How to run a compiled binary which writes to /dev/evdev/event* without rooting the device?
I want to try this record and replay tool, but do not want to root my device.

Is it possible to run a binary which might need root access, without rooting the device?

# Answer
After some searching and trial and error, I could run replay.exe from RERAN, without rooting my device.

For some reason I could not copy and exectute replay.exe to/from /data/local as the original article suggests, but I could do it to/from /data/local/tmp.

I tested it on 3 devices. HTC-One mobile, Google Nexus 7 tab, Samsung Galaxy tab 10.

Here are details.

* I had to enable developer option and enable USB debugging
* Install USB driver for Android on my Windows 7
* Once I see the device in adb run following commands
    + .\adb.exe push replay.exe /data/local/tmp/ to copy the binary
    + .\adb.exe shell /data/local/tmp/replay.exe to run the binary

Now one thing I cannot understand but why does it run when copied to /data/local/tmp?

* Is it a security hole or debugging aid?
* Or writing to /dev/input/event\* really do not need root access?
> 2 votes

---
Tags: root-access
---


# Question
Title: How to properly factory-reset a Samsung Galaxy S2?
I did a factory reset on a Samsung Galaxy S2 like this:

* switch off phone
* hold down buttons Volume Up, Home and Power until phone boots into "Android System Recovery" mode
* select wipe/factory reset and confirm all questions

As expected, after the factory reset, all apps were not installed anymore.

But this does not seem to have worked for the file system: On the file system of the internal USB memory (/storage/sdcard0), I see many folders of previously installed apps and also some which I had manually created before the factory reset. I think that a factory reset should delete all these folders, because e.g. the WhatsApp folder contains all my personal messages. I think that if a function is called a factory reset, then afterwards personal messages should be deleted. So what's wrong here?

# Answer
A factory reset usually doesn't touch "external storage" (may sound confusing, but that includes the "internal SDcard" as well) – unless it explicitly specifies so (some devices/ROMs have a corresponding checkbox in the system menu, usually *Settings → Backup & Reset*, where this might be specified to be included).

What a factory reset usually does is, basically, to wipe `/cache` (where the application cache should be) and `/data` (where the userdata reside, including the apps the user installed).

Which means: Nothing is wrong here, it's "working as designed". If you want the SDcard to be wiped, you will have to do so yourself. You can e.g. use a file manager app, or connect your device to a computer. Or simply use a terminal app (or `adb shell`), and invoke `rm -rf /storage/sdcard0/*` to have all files removed from there.

See also: tag-wiki
> 5 votes

---
Tags: samsung-galaxy-s-2, factory-reset, internal-sd
---


# Question
Title: How do I disable full-screen mode in Chrome for Android?
Some time ago, both Chrome and Chrome Beta started going full-screen. That is, I no longer see my status bar. This is a deal breaker for me, as I can no longer see what time it is or if I have notifications.

I have browsed chrome://flags and didn't see anything related to this.

Is it possible to disable this full-screen mode?

Chrome versions:

* Chrome (30.0.1599.92)
* Chrome Beta (31.0.1650.32)

My phone:

* Galaxy Note 2
* Android 4.1.2
* Verizon
* no custom rom or root

# Answer
I had the same problem, but I saw the exact moment it happened, a message appeared saying "switching to full screen mode". Then I couldn't switch it off. I deleted all data in Chrome, and the problem was fixed. There was no need to uninstall the app, just cleaned the data using the Android built-in Application Manager. It seems some website included code that caused this, and the Chrome for Android simply does not have the settings to revert this. Hope this helps.
> 3 votes

# Answer
Exactly the same thing just happened to me. Restarting the phone put it back to normal.
> 2 votes

# Answer
I found that if you go to chrome://flags and click "reset all to default" that it will return your status bar. I wasn't able to find any other ways to do that.
> 1 votes

# Answer
The short answer is no. If you feel that this should be a feature then please file a bug on crbug.com/new and let me know. It should have no effect on scrolling as it keeps all the settings and state exactly the same, if you are seeing problems with scrolling such as events not firing then that is due to the way the compositor works.

The reason why not is that this is a feature on all mobile platforms and we have parity with their way of providing the user with more vertical real estate.
> -1 votes

---
Tags: chrome-for-android
---


# Question
Title: Why does the default Music Player have an 'End' option in the menu
I noticed in Galaxy Note N7000 with Android 4.1.2 that the default music player has 'End' option in the menu, it is not a problem or a bug, but I never noticed this option in any other Android app, so I am curious to know its purpose from design/ coding/ app lifecycle perspective.

Please see the image attached

# Answer
I don't know about this app specifically, but I can answer based on the usual behaviour of music players. If music is playing when you leave the app the usual way, the app starts a *foreground service* to keep playing the music. This is a special kind of service: it shows an "Ongoing" notification and Android will not kill it to free memory, unless it's really desperate.

Sometimes, this is exactly what the user wants: you start playing music, switch to another app, and the music keeps playing. But sometimes, it's not clear how to make it stop, and avoid the foreground service taking up memory. The "Close" option gives you an obvious way to do this.

In most cases, app authors shouldn't add a "Close" option, because it confuses users (just as you've been confused here), and because the Android app lifecycle doesn't work that way. In this case, the potential for confusion caused by the foreground service is greater, so it's a sensible trade-off.
> 1 votes

---
Tags: 4.1-jelly-bean, music-player, samsung-galaxy-note
---


# Question
Title: where does default setting for Command Line Switches is set in kernel source code in android
My android device is quad-core . But during booting only 2 cores are up . CPU\_HOTPLUG is enabled . In dumpstate i found :

`maxcpus=2`

in command Line options. I wanted to make this maxcpus=4 . I have all source code with me . I wanted to set this maxcpus value in source code (especially in default settings) .

So my question is : In which file does this default value setting is done ? I grep'ed it through source in platform and kernel. But i didn't get any clue .I think this code lie in bootloader .If so please guide me

# Answer
> 1 votes
I presume that CPU\_HOTPLUG means hotplug cpu governor is enabled in your system. hotplug cpu governor can make cpu core online or offline based on total system load. So, It might be possible that your other two cores are offline at the moment.

You can check the exact cpu cores by,

$ cat /sys/devices/system/cpu/present

This will display total cores on your system. Or you can do "ls /sys/devices/system/cpu/cpu\*" then see cpu0,cpu1,... directories. Those are your different cores.

If you can not find 4 cores (0,1,2,3) in that directory, than there is some problem with your system.

You can change the cpu governor to some other for example, ondemand to utilize all four cores. But it may use more battery.

I hope this helps.

**\[update\]** Also, if you are referring to set the default kernel command line from configuration then it is available at,

Symbol: CMDLINE \[=\]

Type : string

Prompt: Default kernel command string

Defined at arch/arm/Kconfig:1766

Location: -\> Boot options

in kernel menuconfig window.

Generally in android, kernel commandline is part of boot image and not this default one, But you can still try that out. If bootloader is passing the kernel command line string than this configuration will be ignored.

Good luck.

---
Tags: 4.3-jelly-bean, bootloader, kernel
---


title: Adobe flash for Asus Transformer TF700T

text:
# Question
Title: Adobe flash for Asus Transformer TF700T
Does anyone know if the Adobe flash player will be available for Android devices any time soon? I have Android 4.0 Ice cream sandwich. On ASUS Transformer TF700T. I can watch movies, videos and only play some games that don't require Adobe. Someone, Anyone. Please Help!

# Answer
> 2 votes
Adobe Flash fot Android has been discontinued and all official methods of installing it have been removed. This is mainly due to problems in security, performance and stability, but the rise of HTML5 has also played its part. You can find more info from here or here.

---
Tags: 4.0-ice-cream-sandwich, asus-eee-pad-transformer, adobe-flash
---


# Question
Title: Calendar and contacts sync using "Server" account type
Device: Galaxy S4
Android: 4.2.2

I have been looking through the `Settings > Accounts > Add account` menu and found there is an entry called "Server" that seems to allow you to sync calendar and contacts from a private server. Does anyone know how this works? I have tried pointing it at my OwnCloud server but cannot seem to get it to work.

# Answer
> 1 votes
This is an account for syncing via SyncML, a protocol used by (e.g.) funambol.

In a test, I've already managed to sync some events using syncevolution as http-server, but currently I'm not sure, wether SSL connections work as well. (I've even started a question on that topic.)

---
Tags: contacts, sync, calendar
---


# Question
Title: Why is the ART VM slower than the Dalvik VM, at sorting an array when the array size is 62000?
Look at row 62 of this graph.

It is the time taken for a quick sort integer array, on a VM for android 4.4 (KitKat). How come that ART is faster except at an array size of 62000? In fact, it is significantly slower than Dalvik, as Dalvik takes 238 seconds, but ART takes 333 seconds. The result does not even fit the pattern of results, in rows 61 and 63. I could even say that its anomalous. This is very strange. Why does this happen?

# Answer
Most probably the test is inconsistent. Have you tried repeating the test at least 100 times to have pseudo-valid statistic results? And are you sure the emulator is a valid platform on where to test such low-level things? It may be optimised for the Dalvik VM.

Best guess is to try it on a real device, like the new Nexus 5 or waiting for the Nexus 4 and Nexus 7 updates.
> 1 votes

---
Tags: dalvik, 4.4-kitkat, art
---


# Question
Title: How to put a ROM on read-only /sdcard, while adb shell not working (HTC One X)
I've been searching my *_* off for two days now to find a solution for my problem, but I can't find one working for me.

What I do have right now:

* NO working ROM (I believe because of a failed atempt to revert to a backup in CWM)
* Access to my bootloader (unlocked through HTCDev)
* Access to my recovery (Which is the latest CWM)
* Fastboot/adb working
* Phone boots upon the HTC logo screen
* NO ROM zipfile on the SD-Card (I accidentilly deleted that, I still hate myself for that)
* I've managed to push to ROM file into both `/data` and `/system`, which (of course) isn't usefull to flash from because they don't show up in CWM.

What I've tried:

* Reverting to a Nandroid backup, I've 2 on the sdcard. Both don't pass the part where `/system` is being restored.
* `adb shell` to push files, or mount the SD card, does not work. First I had the error saying '--exec /system/bin/sh failure: file or dir not found (2)'. I managed to push the `sh` file into system, (and I believe into `/system/bin`), and the error changed to '\[...\] No directory (20)'
* `adb push <ROM.zip> /sdcard/<ROM.zip>`; doesn't work because `/sdcard` is read-only.
* In CWM I can't mount as USB storage, is says something about a file which can't be found.
* TWRP recovery doesn't work on my device, I can touch whatever I wan't, the only button responding is the power button, which causes a locked recovery, which I can't unlock. (You need to swipe for that, which my phone seems to ignore).
* I've read almost every topic on XDA and whatever Google could give me, but most solutions somewhere relied on the `adb shell`, or pushing into the `/sdcard`, or simply assume I still can mount as USB storage. :(

Does anyone have any suggestions left on howto get a ROM into the `/sdcard` so I can flash it? I would be thanking you forever!

Thanks in advance!

# Answer
If your version of CWM recovery has the “install zip from sideload” option in the main menu (looks like such recovery version for HTC One X exists), you can use this option to install from a zip file which is stored on your computer without copying it to the SD card:

1. Select the “install zip from sideload” option in the recovery menu.
2. Run the following command on your computer:

```
adb sideload UPDATE.zip

```

where `UPDATE.zip` is the zip file you want to install.

You may need to update your ADB executable if it does not understand the `sideload` subcommand.

Note that currently there is no confirmation when the “install zip from sideload” command is selected, and also no way to abort the sideload mode once it is entered, therefore if you enter the sideload installation mode without a way to give the `adb sideload UPDATE.zip` command, the only way out would be to pull the battery (on some phones holding the power button for 10–15 seconds to force a reboot also works). Or, if you entered the sideload mode, but do not actually want to install a zip package, run something like `adb sideload /dev/null`, or use any small file which is not a zip package.

The sideload option is primarily made for phones which do not have internal FAT32-formatted storage, but should also work on other models. One important limitation is that the zip file is temporarily downloaded into the phone RAM (it is placed into `/tmp/update.zip`, which is in ramfs), therefore, depending on RAM size of your phone, you may not be able to install large packages this way.
> 1 votes

# Answer
I don't know CWM, but TWRP (which supports your smartphone) allows you to mount the /sdcard partition via USB. If you've got troubles with the latest version, try an older one (I had some problems too in the past with another phone). If that's still RO, you may need to format it (always in the TWRP menu). As a plus, it's a 100% touch screen recovery!
> 0 votes

---
Tags: adb, custom-roms, sd-card, bootloader, shell
---


# Question
Title: Remote Access/Editing files from Android without rooting on any other remote platform
I have a Nexus 7 Tablet and a Samsung Galaxy Ace Phone. I wish to use WiFi only. The phone does not have a 3G tariff.

As the Nexus 7 Tablet does not have an SD card slot of any type, I wish to find a way to connect the Nexus 7 Tablet to other devices including the Samsung Galaxy ACE phone or any other form of inexpensive external storage while mobile, and Windows/Linux PC's when at home.

More specifically I wish to access files stored remotely, to edit the files, and save them remotely, without writing the file to the Nexus 7 local storage at any point from opening to saving and closing, and using any application on the Nexus 7, such as a Word Processor/Spreadsheet.

I wish to accomplish this without rooting either the Tablet or the Phone. I am concerned that rooting will compromise what little security is built into Android. My concern stems from the fact that there is little guarantee that some applications will not accidentally or deliberately take advantage of the device once rooted.

I am aware of applications such as ES File Explorer, and would choose to use such an app, if I could connect it to another Android Device, perhaps if there were a Samba/CIFS server which could use custom ports (\>1024) as long as I could also use the same ports on ES File Explorer (or similar app) either through the config of the apps themselves or by some mechanism to reroute ports as may be found in a Home Firewall Router.

I would also be open to using SSH as a means of facilitating a connection if necessary.

I do not wish to use Cloud Services as I do not trust that the Operator will not copy, use, or lose any data I upload.

# Answer
I guess the part rendering solutions close to imposible is *without writing the file to the Nexus 7 local storage at any point from opening to saving and closing*. If that should also exclude automatically created temp files, you're very much out of luck.

Additionally: *and using any application on the Nexus 7* Yo. That means either all apps have to support Samba/CIFS/whatever network protocol to be used – or you need to mount that network drive locally. This brings it down to apps like CifsManager (last release: 4/2011) or Mount Manager (requires root; I would wonder if that doesn't apply to CifsManager as well). Moreover, on your remote device you will need the counterpart providing the network drive, of course. No problem on the PC, where it comes with the OS. For your other Android device, as pointed out in my comment on your question, that could e.g. be Samba Server.
> 0 votes

# Answer
You may use software like FTPServer to let someone read and write your files on your device remotely via FTP, and ES or similar software to access to. Note though that you'll still need to download the file, in order to modify it.

The simpliest solution may be to run an SSH server on your target device and then accessing it via a terminal emulator: in this way, you'll be able to edit your text files without the need of downloading it (using nano or similar software, installed on the target device).
> 0 votes

---
Tags: nexus-7, files, remote-access
---


title: Can you screen save on a Nexus 4?

text:
# Question
Title: Can you screen save on a Nexus 4?
I fly a lot, but never accept a mobile boarding pass as I need a decent signal to display it. My iPad allows me to save screenshots to the gallery. I find it incredibly usefull, but can't find it on my Nexus 4!!

# Answer
> 0 votes
If by "screen save" you mean a screenshot, yes you can :)

Just press both `Power` and `Volume Down` together and hold them for a second.

---
Tags: nexus-4, screenshots
---


# Question
Title: How to disable Settings & Google Play in a restricted profile?
Using the new 4.3 restricted profile feature I'm able to remove most apps from a restricted profile.

How can I remove the remaining icons (Google Play & Settings) from the App Drawer and the Quick Settings menu? This would be ideal for a complete kiosk mode.

# Answer
> 1 votes
Whilst the Play Store icon is still available, it doesn't seem to work on a restricted profile - pressing it on my Nexus 7 results in:

> You don't have permission to use Google Play Store.

Note that Google Play Store doesn't even appear in the list of apps you can enable.

The Settings app is still there, as it allows the user to force stop running apps, etc.

---
Tags: 4.3-jelly-bean, restricted-profiles
---


# Question
Title: How can I merge WiFi passwords from a backup and from the current configuration?
I have an old backup of the WiFi passwords on my Nexus 7. I also have a new configuration which has some passwords that are newer and some that are older.

How can I merge the configuration in a controlled manner without having to entrust my WiFi passwords to some third-party app?

# Answer
> 1 votes
If you have root access on your device:

1. Grab a copy of `/data/misc/wifi/wpa_supplicant.conf`, e.g. using `adb pull`, and save it to your computer
2. Restore the data from your backup, and grab a copy of that in the same manner
3. Use a text editor, and merge the entries to a new file
4. Put that file back into place, e.g. using `adb push`
5. Make sure the file is owned by `system:wifi` and has permissions `664`.

Without root access, it might be possible as well, but would be much more tricky (plus the overhead would probably not be worth it). The following is untested, and requires at least Android 4.0:

1. Create an `adb backup`
2. Restore the "old data" to your device
3. Create another `adb backup`
4. Extract both backups to different locations on your device (see: \[How do you extract an App's data from a full backup made through “adb backup”?\])(How do you extract an App's data from a full backup made through "adb backup"?)
5. Merge the data from both `wpa_supplicant.conf` files
6. Re-assemble the backup file
7. Restore the re-assembled backup

---

A third way lies in between, but does not require to re-assemble and restore the backup file, nor to replace the `wpa_supplicant.conf` directly. But you will need a copy of that file, which you either can obtain via `adb pull` or by extracting the backup files.

Once you've got a copy of both files, you can simply read your connection data, and enter those you wish manually: everything is stored as plain-text here, completely unencrypted (including the passwords!). An example entry (slightly modified to hide the real data):

```
network={
    ssid="smartcafe"
    psk="cafesmart"
    key_mgmt=WPA-PSK
    priority=46
}

```

As you see: if you would like to use that data for the APN "smartcafe", simply edit your config and put the corresponding password (`psk`):

1. Go to *Settings → WiFi*
2. Scroll to the APN
3. Long-press its entry, select "Change"
4. Enter the new password

If it should be a new entry: At the same place, at the bottom of the screen, tap the "add network" button, and enter the data you've read from the file.

---
Tags: wi-fi, settings, backup, password
---