package org.chromium.base;
+import android.animation.ValueAnimator;
+import android.annotation.TargetApi;
+import android.app.ActivityOptions;
+import android.app.Notification;
import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.os.Build;
+import android.os.Bundle;
+import android.provider.Settings;
import android.view.View;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.ViewTreeObserver;
}
/**
- * @see android.view.View#setTextDirection(int)
+ * @see android.view.View#setTextAlignment(int)
*/
public static void setTextAlignment(View view, int textAlignment) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
}
/**
+ * @see android.view.View#setTextDirection(int)
+ */
+ public static void setTextDirection(View view, int textDirection) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ view.setTextDirection(textDirection);
+ } else {
+ // Do nothing. RTL text isn't supported before JB MR1.
+ }
+ }
+
+ /**
* @see android.view.ViewGroup.MarginLayoutParams#setMarginEnd(int)
*/
public static void setMarginEnd(MarginLayoutParams layoutParams, int end) {
}
/**
+ * @see android.view.View#postOnAnimation()
+ */
+ public static void postOnAnimation(View view, Runnable action) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ view.postOnAnimation(action);
+ } else {
+ view.postDelayed(action, getFrameTime());
+ }
+ }
+
+ /**
+ * @see android.view.View#postOnAnimationDelayed()
+ */
+ public static void postOnAnimationDelayed(View view, Runnable action, long delayMillis) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ view.postOnAnimationDelayed(action, delayMillis);
+ } else {
+ view.postDelayed(action, getFrameTime() + delayMillis);
+ }
+ }
+
+ private static long getFrameTime() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ return ValueAnimator.getFrameDelay();
+ } else {
+ // Any reasonable fake frame delay will have to do.
+ return 10;
+ }
+ }
+
+ /**
* @see android.widget.RemoteViews#setContentDescription(int, CharSequence)
*/
public static void setContentDescriptionForRemoteView(RemoteViews remoteViews, int viewId,
}
}
+ /**
+ * @see android.app.Activity#startActivity(Intent, Bundle)
+ */
+ public static void startActivity(Context context, Intent intent, Bundle options) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ context.startActivity(intent, options);
+ } else {
+ context.startActivity(intent);
+ }
+ }
+
+ /**
+ * @see android.app.ActivityOptions#toBundle()
+ */
+ public static Bundle toBundle(ActivityOptions options) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ return options.toBundle();
+ } else {
+ return null;
+ }
+ }
+
// These methods have a new name, and the old name is deprecated.
/**
}
}
- public static boolean datePickerRequiresAccept() {
- // TODO(miguelg) use the final code for the L
- // https://crbug.com/399198
- return Build.VERSION.SDK_INT < 20; /* CUR_DEVELOPMENT */
+ /**
+ * @see android.app.Notification.Builder#setLocalOnly(boolean)
+ */
+ @SuppressWarnings("deprecation")
+ public static Notification build(Notification.Builder builder) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ return builder.build();
+ } else {
+ return builder.getNotification();
+ }
+ }
+
+ /**
+ * @see android.provider.Settings.Global#DEVICE_PROVISIONED
+ */
+ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+ public static boolean isDeviceProvisioned(Context context) {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) return true;
+ if (context == null) return true;
+ if (context.getContentResolver() == null) return true;
+ return Settings.Global.getInt(
+ context.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0;
}
}