Add support for settings for lock widgets

Change-Id: Iade094c6f32a7653bdbbd4921d345d68f2443ff4
diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java
index 5801551..499c15e 100644
--- a/services/java/com/android/server/AppWidgetServiceImpl.java
+++ b/services/java/com/android/server/AppWidgetServiceImpl.java
@@ -42,6 +42,7 @@
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.IBinder;
+import android.os.Process;
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.UserHandle;
@@ -409,7 +410,7 @@
     }
 
     public int allocateAppWidgetId(String packageName, int hostId) {
-        int callingUid = enforceCallingUid(packageName);
+        int callingUid = enforceSystemOrCallingUid(packageName);
         synchronized (mAppWidgetIds) {
             ensureStateLoadedLocked();
             int appWidgetId = mNextAppWidgetId++;
@@ -1391,6 +1392,15 @@
         return pkgInfo.applicationInfo.uid;
     }
 
+    int enforceSystemOrCallingUid(String packageName) throws IllegalArgumentException {
+        int callingUid = Binder.getCallingUid();
+        int uid = Process.myUid();
+        if (UserHandle.getAppId(uid) == Process.SYSTEM_UID || uid == 0) {
+            return callingUid;
+        }
+        return enforceCallingUid(packageName);
+    }
+
     int enforceCallingUid(String packageName) throws IllegalArgumentException {
         int callingUid = Binder.getCallingUid();
         int packageUid;