////////////////////////////////////////////////////////////////////////////////////// // // Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ////////////////////////////////////////////////////////////////////////////////////// package com.freshplanet.ane.AirFacebook; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import com.facebook.Session; import com.facebook.android.BuildConfig; import com.facebook.model.OpenGraphAction; import com.facebook.widget.FacebookDialog; import com.facebook.widget.FacebookDialog.Callback; import com.facebook.widget.FacebookDialog.PendingCall; public class ShareOGActivity extends Activity implements DialogFactory, Callback { public static String extraPrefix = "com.freshplanet.ane.AirFacebook.ShareOGActivity"; private String callback; private DialogLifecycleHelper dialogHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dialogHelper = new DialogLifecycleHelper(this, this, this); callback = this.getIntent().getStringExtra(extraPrefix+".callback"); dialogHelper.onCreate(savedInstanceState); } @Override public PendingCall createDialog() { // Retrieve extra values String actionType = this.getIntent().getStringExtra(extraPrefix+".actionType"); String previewProperty = this.getIntent().getStringExtra(extraPrefix+".previewProperty"); Bundle ogObjectProperties = this.getIntent().getBundleExtra(extraPrefix+".actionParams"); OpenGraphAction action = OpenGraphAction.Factory.createForPost(actionType); for ( String key:ogObjectProperties.keySet() ) action.setProperty(key, ogObjectProperties.get(key)); String appId; Session session = AirFacebookExtension.context.getSession(); if ( session == null ) { AirFacebookExtension.log("ERROR - AirFacebook is not initialized"); finish(); return null; } appId = session.getApplicationId(); // This constructor has been modified from the original SDK try{ FacebookDialog.OpenGraphActionDialogBuilder dialogBuilder = new FacebookDialog.OpenGraphActionDialogBuilder( this, action, actionType, previewProperty ); return dialogBuilder.build().present(); } catch(Exception e) { if(BuildConfig.DEBUG) e.printStackTrace(); AirFacebookExtension.context.dispatchStatusEventAsync(callback, AirFacebookError.makeJsonError(e)); finish(); return null; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); dialogHelper.onActivityResult(requestCode, resultCode, data); } @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); dialogHelper.onSaveInstanceState(savedInstanceState); } @Override public void onComplete(PendingCall pendingCall, Bundle data) { AirFacebookExtension.context.dispatchStatusEventAsync(callback, "{ \"success\": \"true\" }" ); finish(); } @Override public void onError(PendingCall pendingCall, Exception error, Bundle data) { if(BuildConfig.DEBUG) error.printStackTrace(); AirFacebookExtension.context.dispatchStatusEventAsync(callback, AirFacebookError.makeJsonError(error)); finish(); } }