Add WallpaperManagerCompat#getWallpaperId().

This is necessary for the wallpaper color extraction, which uses the
id to only do the extraction if the wallpaper has changed.

Change-Id: I69df0352b26d972c3ac507679c6bf5e9eb993b60
diff --git a/src/com/android/wallpaperpicker/common/WallpaperManagerCompat.java b/src/com/android/wallpaperpicker/common/WallpaperManagerCompat.java
index 96df749..92f24f2 100644
--- a/src/com/android/wallpaperpicker/common/WallpaperManagerCompat.java
+++ b/src/com/android/wallpaperpicker/common/WallpaperManagerCompat.java
@@ -30,4 +30,6 @@
             int whichWallpaper) throws IOException;
 
     public abstract void clear(int whichWallpaper) throws IOException;
+
+    public abstract int getWallpaperId(int whichWallpaper);
 }
diff --git a/src/com/android/wallpaperpicker/common/WallpaperManagerCompatV16.java b/src/com/android/wallpaperpicker/common/WallpaperManagerCompatV16.java
index a320beb..ea3dc98 100644
--- a/src/com/android/wallpaperpicker/common/WallpaperManagerCompatV16.java
+++ b/src/com/android/wallpaperpicker/common/WallpaperManagerCompatV16.java
@@ -24,4 +24,9 @@
     public void clear(int whichWallpaper) throws IOException {
         mWallpaperManager.clear();
     }
+
+    @Override
+    public int getWallpaperId(int whichWallpaper) {
+        return -1;
+    }
 }
diff --git a/src/com/android/wallpaperpicker/common/WallpaperManagerCompatVN.java b/src/com/android/wallpaperpicker/common/WallpaperManagerCompatVN.java
index 2eb9c51..d044d1f 100644
--- a/src/com/android/wallpaperpicker/common/WallpaperManagerCompatVN.java
+++ b/src/com/android/wallpaperpicker/common/WallpaperManagerCompatVN.java
@@ -40,4 +40,15 @@
             super.clear(whichWallpaper);
         }
     }
+
+    @Override
+    public int getWallpaperId(int whichWallpaper) {
+        try {
+            // TODO: use mWallpaperManager.getWallpaperId(whichWallpaper) without reflection.
+            Method getWallpaperId = WallpaperManager.class.getMethod("getWallpaperId", int.class);
+            return (int) getWallpaperId.invoke(mWallpaperManager, whichWallpaper);
+        } catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
+            return -1;
+        }
+    }
 }