Switch from REMOTE_INTENT to the new push messaging, add the required permission.
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index e36eba9..d31b25b 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -1840,7 +1840,7 @@
* @hide
*/
public static final String ACTION_REMOTE_INTENT =
- "android.intent.action.REMOTE_INTENT";
+ "com.google.android.pushmessaging.intent.RECEIVE";
/**
* Broadcast Action: hook for permforming cleanup after a system update.
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 8273dbf..a27d28f 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1227,6 +1227,13 @@
android:description="@string/permlab_copyProtectedData"
android:protectionLevel="signature" />
+ <!-- Push messaging permission.
+ @hide Used internally.
+ -->
+ <permission android:name="android.intent.category.MASTER_CLEAR.permission.PUSH_MESSAGE"
+ android:protectionLevel="signature" />
+ <uses-permission android:name="android.intent.category.MASTER_CLEAR.permission.PUSH_MESSAGE"/>
+
<application android:process="system"
android:persistent="true"
android:hasCode="false"
@@ -1309,7 +1316,7 @@
<action android:name="android.intent.action.MASTER_CLEAR" />
<!-- MCS always uses REMOTE_INTENT: category=MASTER_CLEAR -->
- <action android:name="android.intent.action.REMOTE_INTENT" />
+ <action android:name="com.google.android.pushmessaging.intent.RECEIVE" />
<category android:name="android.intent.category.MASTER_CLEAR" />
</intent-filter>
</receiver>
diff --git a/services/java/com/android/server/MasterClearReceiver.java b/services/java/com/android/server/MasterClearReceiver.java
index ab0eb81..0417e71 100644
--- a/services/java/com/android/server/MasterClearReceiver.java
+++ b/services/java/com/android/server/MasterClearReceiver.java
@@ -30,7 +30,7 @@
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_REMOTE_INTENT)) {
- if (!intent.getBooleanExtra("android.intent.extra.from_trusted_server", false)) {
+ if (!"google.com".equals(intent.getStringExtra("from"))) {
Log.w(TAG, "Ignoring master clear request -- not from trusted server.");
return;
}