Refactoring of Android's Hackbook example

Summary:
Cleaning of the Hackbook code. Main reason of this commit is mixing tabs and
white spaces inside the code, which makes the code ugly (for example browsing
the code inside github).

In addition I also refactored few other things:
 - I tried to wrap the lines to 100 characters per line (80 per comments) - at
least in those places where it made sense
 - Remove trailing whitespaces and unnecessary blank lines
 - Add missing @Override adnnotations
 - Fixed syntax in some places (like "for(i=0;..." -> "for (i = 0;...")
 - Added missing 'static' keywords

Test Plan:
Run the app and see if everything works :-)

Reviewers: jimbru, raghuc1, vksgupta, dalves

Reviewed By: dalves

CC: platform-diffs@lists, nbushak, dalves

Differential Revision: 370079
Fixed setAccessExpiresIn method.

Summary:
There are two types of access tokens:
 - ones that doesn't expire (expiresIn == 0)
 - ones that have some expiration period( (expiresIn > 0)
When we receive a new token from FB server for both them we call the
setAccessExpiresIn method.
Because of that:
1. We shouldn't ignore the "0" value
2. We should also expect tokens that have long expiration period.
For example 60 days is 2592000000000 miliseconds which is too much for an
integer variable to handle :)

Test Plan: Tried Login In / Logout for both types of tokens.

Reviewers: jimbru, yariv

Reviewed By: jimbru

CC: kamil, jimbru

Differential Revision: 370353
Update README.md
Update README.md
Added the refresh token method.

Summary: This allows developers to silently refresh their access token by
calling Facebook.refreshToken method. This SDK will try to call our Facebook
Android App which will handle the API call.

Test Plan:
This requires adding a refresh token service to our sdk. See D364973.
After that try using the new Hackbook example.

Reviewers: jimbru, raghuc1, brent, dalves, ttung, yariv

Reviewed By: jimbru

CC: dalves, jimbru

Differential Revision: https://phabricator.fb.com/D366540

Task ID: 799996
Merge remote-tracking branch 'origin/expiringAccessTokens'
Fixing Token refresh issue in SDK

Summary:
The TokenRefresh intent is exposed as a service, but we were validating it as
an activity.  Fixign that and refactoring code. This code should have never
worked.

Note that without the FB app the refresh token feature will not work.  If that
is necessary, it's not part of this diff.

Test Plan: Verify that hackbook can login & refresh token on the emulator.

Reviewers: mmarucheck, yariv, ttung, raghuc1, trvish, pfung

Reviewed By: mmarucheck

CC: gregschechte, jacl, lshepard

Differential Revision: https://phabricator.fb.com/D410960

Task ID: 926377
Disable logging by default

Summary:
Logging was turned on unconditionally before, which led to apps leaking
sensitive data.  This change puts the logging api behind an explicit gate that
developers have to turn on.

It's unfortunate that this isn't automatic - ideally this would automatically
turn on for non-release signed bits.  I couldn't find such a check in Android
framework.  If android experts have better ways of tackling this, i'm all ears.
But bear in mind this is a security fix and needs to go out asap.

Test Plan: Launched in default mode and verified no logging in emulator.
Turned on log gate and verified logging.

Reviewers: mmarucheck, lshepard, yariv, raghuc1

Reviewed By: mmarucheck

CC: gregschechte, jacl

Differential Revision: https://phabricator.fb.com/D411377

Task ID: 933141
Fixed null pointer issue.

Summary:
We need to call unbindService on a Context.  In some cases, mAuthActivity
is null.  Since applicationsContext is passed in to the constructor
and never modified, it should not be null.  So we call unbindService
on applicationsContext instead.

Test Plan: Try SSO with pre-1.8 FB app.

Reviewers: vijaye, jacl, caabernathy

Reviewed By: vijaye

CC: selekman, constantin, lshepard

Differential Revision: https://phabricator.fb.com/D432892

Revert Plan: Safe to revert

Task ID: 982981
Merge small pull requests

Summary:
To give credit for changes, I am listing author/pull request here
for changes incorporated in this checkin.

I am submitting these changes directly to master to preserve a
linear history, to allow for minor edits, and to credit multiple
people when more than one change was merged to fix a single issue.

=== Summary by submitter of pull requests in this commit ===
andypalmer:
- 160: ClassCastExceptions in Util.java
grant land:
- 216: Fix ArrayOutOfBoundsException when clicking "Don't Allow" in FbDialog one
iamnoah:
- 117: Fixed a NPE
lvillani:
- 261: Add support for Android build system.
nikreiman:
- 218: Fix exception when trying to decode invalid string
plowman:
- 246: Fix for Issue #160: ClassCastExceptions filling up the logs.

To investigate pull request 260, I enabled orientation changes in Hackbook.
This did not demonstrate the issue, but doesn't hurt anything and makes it
easier to test on the x86 emulator.

I also fixed some build issues in Hackbook around SDK version required and
the path to the SDK.

Test Plan:
Full clean builds of facebook and Hackbook.
Verify creating Eclipse project per public docs still works.
Upload photo in Android Hackbook.

Reviewers: caabernathy, jacl, vijaye, yariv

Reviewed By: jacl

CC: ekoneil, gregschechte

Differential Revision: https://phabricator.fb.com/D451434

Revert Plan: Safe to revert

Task ID: 1028564
Disable password saving in FbDialog

Summary:
By default, Android WebViews store passwords in a per-application
sqlite database.  This changes the default for the Facebook SDK.

Test Plan:
- Build from command-line.
- Uninstall Facebook app, run Hackbook, log in, adb shell, inspect
  webview database to verify no password was saved.

Revert Plan: OK

Reviewers: clang, jacl, vijaye

Reviewed By: vijaye

Differential Revision: https://phabricator.fb.com/D497389

Task ID: 1108189
Merge git://github.com/facebook/facebook-android-sdk

Conflicts:
	.gitignore
	facebook/build.xml
	facebook/project.properties