diff options
| author | 2011-01-10 17:33:28 -0800 | |
|---|---|---|
| committer | 2011-01-10 17:33:28 -0800 | |
| commit | 94d7eef3bee2351f5490e7e1e5d83d5e4ceca13e (patch) | |
| tree | 436e77d09d390398afe731cc55f9f4465e068352 | |
| parent | e5e9558871df227a09420fed6f16c33e6af0e3e7 (diff) | |
| parent | d070e89396e250782c015bc993bcae6e7e03af7a (diff) | |
Merge "Make AppWidgetService handle components enabling and disabling." into honeycomb
| -rw-r--r-- | services/java/com/android/server/AppWidgetService.java | 14 | ||||
| -rw-r--r-- | tests/StatusBar/AndroidManifest.xml | 1 | ||||
| -rw-r--r-- | tests/StatusBar/src/com/android/statusbartest/PowerTest.java | 20 |
3 files changed, 33 insertions, 2 deletions
diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java index ae408fccd8dc..22dd804f604b 100644 --- a/services/java/com/android/server/AppWidgetService.java +++ b/services/java/com/android/server/AppWidgetService.java @@ -144,6 +144,7 @@ class AppWidgetService extends IAppWidgetService.Stub // update the provider list. IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_CHANGED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addDataScheme("package"); mContext.registerReceiver(mBroadcastReceiver, filter); @@ -643,6 +644,12 @@ class AppWidgetService extends IAppWidgetService.Stub } boolean addProviderLocked(ResolveInfo ri) { + if ((ri.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) { + return false; + } + if (!ri.activityInfo.isEnabled()) { + return false; + } Provider p = parseProviderInfoXml(new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name), ri); if (p != null) { @@ -1160,6 +1167,7 @@ class AppWidgetService extends IAppWidgetService.Stub } } else { boolean added = false; + boolean changed = false; String pkgList[] = null; if (Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(action)) { pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); @@ -1178,14 +1186,16 @@ class AppWidgetService extends IAppWidgetService.Stub } pkgList = new String[] { pkgName }; added = Intent.ACTION_PACKAGE_ADDED.equals(action); + changed = Intent.ACTION_PACKAGE_CHANGED.equals(action); } if (pkgList == null || pkgList.length == 0) { return; } - if (added) { + if (added || changed) { synchronized (mAppWidgetIds) { Bundle extras = intent.getExtras(); - if (extras != null && extras.getBoolean(Intent.EXTRA_REPLACING, false)) { + if (changed || (extras != null && + extras.getBoolean(Intent.EXTRA_REPLACING, false))) { for (String pkgName : pkgList) { // The package was just upgraded updateProvidersForPackageLocked(pkgName); diff --git a/tests/StatusBar/AndroidManifest.xml b/tests/StatusBar/AndroidManifest.xml index ddb756b42539..81442bfc60a4 100644 --- a/tests/StatusBar/AndroidManifest.xml +++ b/tests/StatusBar/AndroidManifest.xml @@ -5,6 +5,7 @@ <uses-permission android:name="android.permission.STATUS_BAR" /> <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /> <uses-permission android:name="android.permission.VIBRATE" /> + <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" /> <application> <activity android:name="StatusBarTest" android:label="_StatusBar"> diff --git a/tests/StatusBar/src/com/android/statusbartest/PowerTest.java b/tests/StatusBar/src/com/android/statusbartest/PowerTest.java index 92d5bee00b06..31a1cf5ada32 100644 --- a/tests/StatusBar/src/com/android/statusbartest/PowerTest.java +++ b/tests/StatusBar/src/com/android/statusbartest/PowerTest.java @@ -26,6 +26,8 @@ import android.os.IBinder; import android.os.IPowerManager; import android.widget.ListView; import android.content.Intent; +import android.content.ComponentName; +import android.content.pm.PackageManager; import android.app.Notification; import android.app.NotificationManager; import android.app.StatusBarManager; @@ -66,6 +68,24 @@ public class PowerTest extends TestActivity return mTests; } private Test[] mTests = new Test[] { + new Test("Enable settings widget") { + public void run() { + PackageManager pm = getPackageManager(); + pm.setComponentEnabledSetting(new ComponentName("com.android.settings", + "com.android.settings.widget.SettingsAppWidgetProvider"), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0); + + } + }, + new Test("Disable settings widget") { + public void run() { + PackageManager pm = getPackageManager(); + pm.setComponentEnabledSetting(new ComponentName("com.android.settings", + "com.android.settings.widget.SettingsAppWidgetProvider"), + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + + } + }, new Test("Enable proximity") { public void run() { mProx.acquire(); |