Code This

std::cout <<me.ramble() <<std::endl;

Archive for the ‘HTC’ Category

An Inside Look At Exchange Support In K-9 Mail

with 25 comments

When I first bought my Droid Eris, around a year ago, it came loaded with HTC replacements for most of the stock Google apps, including the mail app, the dialer, mms, etc… The HTC mail app just worked – it supported Exchange, handled multiple in-boxes, and the notifications worked like a charm. Sadly, when I switched to a Froyo ROM, the HTC applications where no longer available and I was stuck with the stock Google apps. Well, as far as the mail application was concerned, this was a very bad thing. The Google mail app came with some significant bugs, and a notification system that was pretty much useless. So I set out to find an acceptable replacement for the HTC app.

This is when I found K-9. It was reviewed well, and boasted Exchange support, which is apparently hard to find on Android. I was saddened when I discovered the state of the Exchange support, which wasn’t great. Firstly, there was a bug in it that prevented it from working with the domain\username format. But alas, the project was open source and, being a developer, this was good news. So I took it upon myself to dive in and fix whatever bug(s) was preventing it from working correctly. I had no idea what I was in for at that point.

What was going to hopefully be a few line patch turned into 2,000 lines or so – and I was only half done at that point. By now I have completely rewritten the process of making the initial connection to Exchange and authenticating. After my initial patch was (reluctantly) reviewed and merged, the project head offered me the position of taking over as maintainer for Exchange support. I accepted, but warned him that I don’t have much free time these days. Either way, I have gained a lot of knowledge about how Exchange with OWA and WebDAV work, and am able to share that knowledge with you.

First, let me describe a little bit about how WebDAV access works. Each user has a mailbox, which by default can be accessed by a URL in the form: Tack ‘/Inbox’ on to that path, and you have the user’s inbox. You can type that into your browser and you will be kindly redirected to an OWA login page. If you were to send an HTTP GET request to that URL, you would find that the Exchange server responds with a 302 status code, which is a redirect. This is exactly what K-9 does when making its initial connection to your exchange server.

Assuming this request is “successful” (I won’t go into what qualifies as success), K-9 then attempts to authenticate you. Based on the initial response, this will either be through basic authentication or form-based authentication. The greater majority of Exchange servers are setup for form-based authentication, and this is the only configuration I have actually tested. Unless the user has overridden the default authentication path in their configuration (which is completely unnecessary), the path used is: If Exchange gives K-9 back authentication cookies on the response, the user is authenticated and K-9 retrieves the user’s list of folders. Otherwise, it tries a more brute-force approach. It will check the response for an HTML form target. If it does not find one, it will send a request to the redirect URL from our initial connection and check this response for an HTML form target. Assuming one of these searches yields a valid form target, it will then try to authenticate again using a URL constructed with this form target. For this reason, the user can enter complete junk into the ‘Authentication path’ field, and K-9 will still be able to authenticate the user (albeit less efficiently). I could have removed this field entirely, but chose not to just in case a user has a completely custom/bizarre Exchange configuration.

The only reason I have encountered for why a user would need to enter a value for one of the “advanced” configuration options is if their mailbox alias does not match their user name. Unfortunately, this was not the case for versions of K-9 prior to 3.400. For this reason, upgrading K-9 to the most recent version will break Exchange support for some users until their configuration is corrected. I didn’t really want to do this, but it was a necessary improvement so that these advanced options have a specific and deterministic affect on how K-9 connects to your Exchange server. I don’t want users spending hours “tinkering” with their options trying to get K-9 to work anymore.

To cap off this blog post, I’d like to show some screen shots of the updated screen for configuring an Exchange account. As of the writing of this post, these changes have not even been merged into trunk yet.

Let me know what you think.

Written by Kris Wong

January 7, 2011 at 7:06 pm

Posted in Android, Exchange, HTC, K-9 Mail, OWA

My Droid Eris Apps And Configuration

with one comment

First, if you haven’t seen my last post, this one won’t mean much to you. I’ll start with my main home screen:

I use LauncherPro for my home screen/application launcher. It is fast, looks nice, has lots of features, and is highly configurable. The only problem with using LauncherPro instead of HTC’s Sense UI is that you lose the ability to use the Sense widgets. Not a huge deal, it just means that I had to find replacements. I turned off any animation features available in LauncherPro. I like the animations, but I’m realist when it comes to the fact that I own an Eris, not an Incredible. While there is a free version of this application in the Android Market, I’d recommend paying for LauncherPro Plus. The developer of this application has put a lot of hard work into it and deserves a little compensation form the community. The only issue is that you have to use PayPal instead of the Android Market. The author is not from the US and cannot receive payment using the Android Market (really, Google?).

The time and weather widget I am using is a part of Beautiful Widgets, available in the Android Market. This application costs around $2, if I recall correctly (it’s actually sold in British pounds). The skin I am using is “Destroy,” which can be set in the widget options. I am also using some Beautiful Widget’s widgets on my “left” home screen:

I am referring to the settings widgets in the bottom row of this screen. Keeping things like GPS and WiFi turned off when not in use saves precious battery life. And finally, on my “right” home screen:

The stock symbol tracker widgets I am using are from an application called pFinance, available for free in the Android Market. You have to add 1 widget per symbol you’d like to track. As you can see today I lost some money, seems to be a trend lately. =/ The calendar widget is just the plain ‘ole Android calendar widget that comes with the phone. Finally, here is a list of other applications I have installed from the market:

  • PdaNet – USB tethering
  • Titanium Backup – indispensable for backing up/restoring all user apps and system data
  • Pandora – of course
  • SetCPU – discussed in my last post
  • The Moron Test – fun game
  • Smart Vibrator – for some reason my phone wasn’t vibrating when I received text messages (yes, my options were correct). This fixed the issue.
  • Backgrounds – has hundreds of images you can set as your wallpaper. This is were I got my current wallpaper.
  • Home Switcher – allows me to switch between LauncherPro and Sense
  • Robo Defense – fun time killer
  • NFL Mobile – so I can stay current on all my Bengals news
  • Paper toss – fairly entertaining
  • Google Maps
  • Math Workout Lite
  • xScope Lite – best browser available for Android (although Firefox is working on a browser)
  • Jewels
  • Stock Price Alerts – excellent for tracking buy and sell points of any stock, with notifications

I have also been experimenting with my SetCPU settings lately, as a result of a post I read on xda. By setting all my low points to 19 MHz, I can get even better battery life from my phone. I just made this change yesterday so I can’t comment on how well it works yet. In my next post I’ll go over all my new SetCPU settings.

Written by Kris Wong

August 28, 2010 at 10:32 am

A Droid By Any Other Name Would Surely Smell Sweeter

with one comment

It wasn’t long after I had received the Android 2.1 update for my Droid Eris, which I had been not so patiently awaiting for some time, that the hardware limitations of the device became painstakingly obvious. Translation: it was slow. Too slow. I managed to stop by a Verizon store this past weekend to play a bit with the HTC Droid Incredible and the Motorola Droid. These devices performed wonderfully. They navigated between screens and applications with minimal to no waiting at all. I was rather disappointed to find out that I still had over 1.5 years before I was eligible for an upgrade! I can’t complain too much. I purchased my Eris less than 6 months ago for $20. But, as they say, you get what you pay for.

Earlier this week I had surfed on by the Droid Eris forum at, as I often do to check for any news from the community, when I came across a rather interesting thread. The thread asks one simple question: why should I root my Eris? Rooting was something I hadn’t really considered in the past, as I didn’t really think there was anything in it for me. None-the-less, I was still interested to hear the responses. I was very excited to learn that rooting allowed you to overclock the phone, and even more excited to see that many people were reporting that doing so eliminated all the performances issues that had been plaguing my Eris. At that point, I was sold. Now, before I recommend to you that rooting your phone is the greatest thing since sliced bread, you need to understand a few things:

  1. Rooting your phone will void the warranty. If you need to take it to a VZW store for service, you had better hope you can remove any evidence of ever having rooted it.
  2. You can seriously screw up your phone if you do it wrong.
  3. Always back up your phone before making any significant changes.

Now that I have that disclaimer out of the way, rooting your phone is actually an easy (and well documented) process. The difficult part is all of the options involved. This required a couple days worth of research on my part. The main thing to decide is what custom ROM you would like to use after rooting your phone. You don’t have to use a custom ROM, but it doesn’t make much sense to go to the trouble of rooting and not use a custom ROM. A ROM is essentially an image of a new OS for your phone. It starts with the base Android image, and then the ROM developer makes changes to get it the way they want it.

I chose to go with xtrSENSE 3.1. The ROM boasted both stability and increased performance, which is exactly what I was looking for. This version of the ROM includes Sense UI, but there is also a version that does not, called xtrROM. Since I have installed the ROM I have disabled Sense, but it’s still a nice option to have. In my limited experience so far, I can say the ROM has lived up to the authors claims. Other popular ROMs include: KaosFroyo – the most popular Android 2.2 ROM, White Widow, and Evil Eris. I suggest you read up on each to see which one best suites your needs.

Now for the good part. You can read up about the rooting process here. There are several ways to root, including one that doesn’t even require a PC at all; you can find links to the various ways within the threads I’ve linked so far. I chose to use the Android SDK to root because it was the most straightforward and flexible method for me. After I had all of the required software downloaded and setup, I was able to complete the process in about 30 minutes. This includes a NAND backup before flashing my new ROM.

Once you have your custom ROM installed, you will undoubtedly want to overclock your phone. The software you will use is called SetCPU. This thread offers an excellent discussion of overclocking, and information about how to use SetCPU effectively. I have my overclock profiles setup exactly as discussed in the thread. I can honestly say, my phone no longer has all of the lag and performance issues it did previously. It’s like a brand new phone. I also love the replacement keyboard application used by my ROM – the HTC keyboard is terrible.

And without further ado, it’s time for some screen shots of my home screens…

As you can probably tell, I have quite a bit of custom software going on here beyond what is used in the xtrSENSE ROM. In my next post, I’ll talk about all of the apps I have on my phone and how I have it setup.

Written by Kris Wong

August 13, 2010 at 9:20 pm