A small problem with the facebook Android SDK
At Mobialia the lasts weeks I was involved on the development of a social app using, among other social networks APIs, the facebook API. The event was really beneficial to me as I even met some SEO and marketing experts from The Marketing Heaven, and learnt quite a lot from them.
For me it was easier to implement Twitter API access using only the signpost library, for facebook they recommend to download their Android SDK, and I did so. First we need a class attribute with the Facebook object:
Facebook fb = new Facebook(appId);
The problem is during the autentication process: we must call the fb.authorize method…
fb.authorize(this, PERMISSIONS, ACTIVITY_CODE, this);
And wait for the result of this called activity on our onActivityResult method
protected void onActivityResult(int requestCode, int resultCode, Intent data) { fb.authorizeCallback(requestCode, resultCode, data); }
But, here is the problem, under heavy memory requierements (like testing on a old HTC Magic) the caller activity may be killed, and the status of the Facebook object is not maintained so the call to authorizeCallback
is going to fail.
Then I need a method to mantain the Facebook object status, and here comes the hack. I added this method to the Facebook object:
public void setStatus(int mAuthActivityCode, DialogListener mAuthDialogListener){ this.mAuthActivityCode = mAuthActivityCode; this.mAuthDialogListener = mAuthDialogListener; }
And I call this method on my onActivityResult:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { fb.setStatus(ACTIVITY_CODE, this); fb.authorizeCallback(requestCode, resultCode, data); }
Note that the DialogListener is the same Activity. Other solution may be to avoid killing of the caller activity, but I don’t figure how…