Android Market 2.3 Force Close / Crash


I was stumped by this issue for a long time and was only recently able to find the solution using the Android SDK’s “adb logcat” function to reveal the system logs.

Essentially, you try to install or update an app from the Android market, and it crashes with a force close message. Reading around on the forums over at xda-developers.com and other places suggest the following:

Proposed Solution #1
Settings -> Applications -> Manage Applications -> All -> Market :: Hit “Uninstall” to uninstall updates, essentially roll back the version to the one that came with your ROM.

Proposed Solution #2
Settings -> Applications -> Manage Applications -> All -> Market :: Hit “Clear Data” and “Clear Cache”

Proposed Solution #3 (mailny for cyanogenmod or ROMs that don’t come with the Google apps installed)
Boot into recovery and reinstall the gapps zip file.

Proposed Solution #4
Search for the Market app’s apk file and install it using “adb install -r appname.apk”. Make sure you have Settings -> Applications -> Install from Unknown Sources enabled.

Proposed Solution #5
Wipe all data / factory reset. Obviously #sadface. Or #angryface.

I tried all of the suggested solutions above, except the full reset. Obviously should be something that doesn’t require that drastic of a change… but none of the other solutions worked. So I turned on usb debugging, ran “adb logcat”, and then reproduced the market force close / crash. Deep in the hundreds of lines of code, I found this:

E/AndroidRuntime( 2975): FATAL EXCEPTION: Download Service
E/AndroidRuntime( 2975): java.lang.SecurityException: Requires VIBRATE permission

What the hell? Yes, I thought the same thing… Why does the market place require vibrate permissions? For notifications maybe… but even more interesting is the fact that the vibrate permissions are required for com.android.media (the music player), which force closes before the market app.

The solution? I had a profile that turned vibrations off for the default “Media” apps group (be default it only has the Music app in it). Switching it to “No override” fixed the crashing / force close issue in a jiffy.

What’s up with this funky fix? And why does the Android Market need to call the Music app with vibrate permissions? Beats me… too bad Google’s apps are closed source.

EDIT: Known affected Market versions (by me), as of writing: 2.3.2, 2.3.3, 2.3.4.