diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index d7bad589ef..5ed0f8832a 100644
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -48,6 +48,10 @@
android:label="@string/app_name"
android:theme="@style/MWMMain">
+
+
@@ -190,6 +194,8 @@
android:label="@string/more_apps_title"
android:screenOrientation="behind"/>
+
+
PUBLISH_PERMISSIONS = Arrays.asList("publish_actions");
+
public static void activate(Context context)
{
if (!Statistics.INSTANCE.isStatisticsEnabled(context))
@@ -23,5 +42,84 @@ public class FbUtil
AppEventsLogger.activateApp(context, context.getString(R.string.fb_app_id));
}
+ public static boolean isSubsetOf(Collection subset, Collection superset)
+ {
+ for (String string : subset)
+ {
+ if (!superset.contains(string))
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Tries to get session with publish permissions and create a promo post.
+ *
+ * @param activity
+ * @return true, if should reauthorize
+ */
+ public static boolean makeFbPromoPost(Activity activity)
+ {
+ Session session = Session.getActiveSession();
+
+ if (session != null)
+ {
+ // check publish permissions
+ List permissions = session.getPermissions();
+ if (!FbUtil.isSubsetOf(PUBLISH_PERMISSIONS, permissions))
+ {
+ Session.NewPermissionsRequest newPermissionsRequest = new Session
+ .NewPermissionsRequest(activity, PUBLISH_PERMISSIONS);
+ session.requestNewPublishPermissions(newPermissionsRequest);
+ return true;
+ }
+
+ final Bundle postParams = new Bundle();
+ postParams.putString("message", activity.getString(R.string.maps_me_is_free_today_facebook_post_android));
+ postParams.putString("link", PROMO_MARKET_URL);
+ postParams.putString("picture", PROMO_IMAGE_URL);
+
+ Request.Callback callback = new Request.Callback()
+ {
+ public void onCompleted(Response response)
+ {
+ FacebookRequestError error = response.getError();
+ if (error != null)
+ Utils.toastShortcut(MWMApplication.get(), error.getErrorMessage());
+ }
+ };
+
+ Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);
+
+ RequestAsyncTask task = new RequestAsyncTask(request);
+ task.execute();
+ }
+
+ return false;
+ }
+
+ public static boolean isPromoTimeNow()
+ {
+ final int promoYear = 2014;
+ final int promoDateStart = 17;
+ final int promoDateEnd = 18;
+ final int promoHourStart = 2;
+ final int promoHourEnd = 22;
+ final Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.YEAR, promoYear);
+ calendar.set(Calendar.MONTH, Calendar.AUGUST);
+ calendar.set(Calendar.DAY_OF_MONTH, promoDateStart);
+ calendar.set(Calendar.HOUR_OF_DAY, promoHourStart);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ final long startMillis = calendar.getTimeInMillis();
+ calendar.set(Calendar.DAY_OF_MONTH, promoDateEnd);
+ calendar.set(Calendar.HOUR_OF_DAY, promoHourEnd);
+ final long endMillis = calendar.getTimeInMillis();
+
+ return System.currentTimeMillis() > startMillis && System.currentTimeMillis() < endMillis;
+ }
+
private FbUtil() {}
}