Pass in the netId using intent data, not intent extras.
This allows ConnectivityService to use different PendingIntents
for different dialogs; two PendingIntents that differ in their
data are treated as different, but two PendingIntents that differ
only in their extras are treated as being the same.
Bug: 20081183
Change-Id: Ie1bdcf2a0a0747be815ea528db0cb34f5ab415b9
diff --git a/src/com/android/settings/wifi/WifiNoInternetDialog.java b/src/com/android/settings/wifi/WifiNoInternetDialog.java
index 9705248..b870873 100644
--- a/src/com/android/settings/wifi/WifiNoInternetDialog.java
+++ b/src/com/android/settings/wifi/WifiNoInternetDialog.java
@@ -54,15 +54,21 @@
final Intent intent = getIntent();
if (intent == null ||
- !intent.getAction().equals(ConnectivityManager.ACTION_PROMPT_UNVALIDATED)) {
+ !intent.getAction().equals(ConnectivityManager.ACTION_PROMPT_UNVALIDATED) ||
+ !"netId".equals(intent.getScheme())) {
Log.e(TAG, "Unexpected intent " + intent + ", exiting");
finish();
return;
}
- mNetwork = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK);
+ try {
+ mNetwork = new Network(Integer.parseInt(intent.getData().getSchemeSpecificPart()));
+ } catch (NullPointerException|NumberFormatException e) {
+ mNetwork = null;
+ }
+
if (mNetwork == null) {
- Log.e(TAG, "ACTION_PROMPT_UNVALIDATED for null network, exiting");
+ Log.e(TAG, "Can't determine network from '" + intent.getData() + "' , exiting");
finish();
return;
}