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
This commit is contained in:
Lorenzo Colitti
2015-06-10 22:49:52 +09:00
parent dcc6155426
commit 2593589209

View File

@@ -54,15 +54,21 @@ public final class WifiNoInternetDialog extends AlertActivity implements
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;
}