package com.cusnews.gcm; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.view.Window; import com.cusnews.R; import com.cusnews.ds.Entry; import com.cusnews.utils.Prefs; import com.facebook.FacebookException; import com.facebook.widget.WebDialog; import com.facebook.widget.WebDialog.OnCompleteListener; import com.tinyurl4j.Api; import com.tinyurl4j.data.Response; import retrofit.Callback; import retrofit.RetrofitError; public class NotificationShareService extends Activity { public static final String EXTRAS_TYPE = NotificationShareService.class.getName() + ".EXTRAS.type"; public static final String EXTRAS_ID = NotificationShareService.class.getName() + ".EXTRAS.id"; public static final int TYPE_NORMAL = 0; public static final int TYPE_FACEBOOK = 1; public static final String EXTRAS_SHARED_ENTRY = NotificationShareService.class.getName() + ".EXTRAS.entry"; /** * A tinyurl to the {@link Entry}. */ private String mSharedEntryUrl; @Override protected void onCreate( Bundle _savedInstanceState ) { requestWindowFeature( Window.FEATURE_NO_TITLE ); super.onCreate( _savedInstanceState ); setContentView( R.layout.service_notification_share ); onHandleIntent( getIntent() ); } private void onHandleIntent( final Intent intent ) { final Entry entry = (Entry) intent.getSerializableExtra( EXTRAS_SHARED_ENTRY ); Api.getTinyUrl( entry.getUrl(), new Callback<Response>() { @Override public void success( Response response, retrofit.client.Response response2 ) { mSharedEntryUrl = response.getResult(); share( intent ); } @Override public void failure( RetrofitError error ) { mSharedEntryUrl = entry.getUrl(); share( intent ); } } ); } private void share( Intent intent ) { Entry entry = (Entry) intent.getSerializableExtra( EXTRAS_SHARED_ENTRY ); switch( intent.getIntExtra( EXTRAS_TYPE, TYPE_NORMAL ) ) { case TYPE_FACEBOOK: Bundle postParams = new Bundle(); final WebDialog fbDlg = new WebDialog.FeedDialogBuilder( NotificationShareService.this, getString( R.string.applicationId ), postParams ).setCaption( entry.getTitle() ) .setDescription( entry.getKwic() ).setLink( mSharedEntryUrl ).build(); fbDlg.setOnCompleteListener( new OnCompleteListener() { @Override public void onComplete( Bundle bundle, FacebookException e ) { fbDlg.dismiss(); ActivityCompat.finishAfterTransition( NotificationShareService.this ); } } ); fbDlg.show(); break; default: String subject = getString( R.string.lbl_share_entry_title, getString( R.string.application_name ), entry.getTitle() ); String text = getString( R.string.lbl_share_entry_content, entry.getKwic(), mSharedEntryUrl, Prefs.getInstance().getAppDownloadInfo() ); Intent i = com.chopping.utils.Utils.getShareInformation( subject, text ); i.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT ); startActivity( i ); ActivityCompat.finishAfterTransition( NotificationShareService.this ); break; } } }