On K+, intent out to Wallpaper manager for crop and set wallpaper.

Bug: 4225598

Change-Id: Ib58a85775ebfd774356d26fd9aa01f2059916300
diff --git a/src/com/android/gallery3d/app/Wallpaper.java b/src/com/android/gallery3d/app/Wallpaper.java
index b0a26c2..016a9ec 100644
--- a/src/com/android/gallery3d/app/Wallpaper.java
+++ b/src/com/android/gallery3d/app/Wallpaper.java
@@ -18,6 +18,7 @@
 
 import android.annotation.TargetApi;
 import android.app.Activity;
+import android.app.WallpaperManager;
 import android.content.Intent;
 import android.graphics.Point;
 import android.net.Uri;
@@ -95,12 +96,18 @@
                 // fall-through
             }
             case STATE_PHOTO_PICKED: {
-                int width = getWallpaperDesiredMinimumWidth();
-                int height = getWallpaperDesiredMinimumHeight();
-                Point size = getDefaultDisplaySize(new Point());
-                float spotlightX = (float) size.x / width;
-                float spotlightY = (float) size.y / height;
-                Intent request = new Intent(CropActivity.CROP_ACTION)
+                Intent cropAndSetWallpaperIntent;
+                if ("KeyLimePie".equals(Build.VERSION.CODENAME)
+                        || Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+                    WallpaperManager wpm = WallpaperManager.getInstance(getApplicationContext());
+                    cropAndSetWallpaperIntent = wpm.getCropAndSetWallpaperIntent(mPickedItem);
+                } else {
+                    int width = getWallpaperDesiredMinimumWidth();
+                    int height = getWallpaperDesiredMinimumHeight();
+                    Point size = getDefaultDisplaySize(new Point());
+                    float spotlightX = (float) size.x / width;
+                    float spotlightY = (float) size.y / height;
+                    cropAndSetWallpaperIntent = new Intent(CropActivity.CROP_ACTION)
                         .setDataAndType(mPickedItem, IMAGE_TYPE)
                         .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT)
                         .putExtra(CropExtras.KEY_OUTPUT_X, width)
@@ -112,7 +119,8 @@
                         .putExtra(CropExtras.KEY_SCALE, true)
                         .putExtra(CropExtras.KEY_SCALE_UP_IF_NEEDED, true)
                         .putExtra(CropExtras.KEY_SET_AS_WALLPAPER, true);
-                startActivity(request);
+                }
+                startActivity(cropAndSetWallpaperIntent);
                 finish();
             }
         }