summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Joe Onorato <joeo@google.com> 2011-01-10 17:33:28 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2011-01-10 17:33:28 -0800
commit94d7eef3bee2351f5490e7e1e5d83d5e4ceca13e (patch)
tree436e77d09d390398afe731cc55f9f4465e068352
parente5e9558871df227a09420fed6f16c33e6af0e3e7 (diff)
parentd070e89396e250782c015bc993bcae6e7e03af7a (diff)
Merge "Make AppWidgetService handle components enabling and disabling." into honeycomb
-rw-r--r--services/java/com/android/server/AppWidgetService.java14
-rw-r--r--tests/StatusBar/AndroidManifest.xml1
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/PowerTest.java20
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();