Skip to content

Commit 1927ae8

Browse files
author
Dianne Hackborn
committed
Fix issue #6717667: expanded notification actions don't work on the lock screen
FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS was a mistake. Instead, and the infrastructure for the status bar to take care of closing and hiding things itself when you press these buttons, just like it does for the main Intent of the notification. Bug: 6717667 Change-Id: I1b22186e0cedc05f46a1a3ec78053a72afaf61b1
1 parent e9b4b3e commit 1927ae8

File tree

11 files changed

+197
-67
lines changed

11 files changed

+197
-67
lines changed

api/16.txt

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,6 +676,7 @@ package android {
676676
field public static final int measureAllChildren = 16843018; // 0x101010a
677677
field public static final int measureWithLargestChild = 16843476; // 0x10102d4
678678
field public static final int mediaRouteButtonStyle = 16843693; // 0x10103ad
679+
field public static final int mediaRouteTypes = 16843694; // 0x10103ae
679680
field public static final int menuCategory = 16843230; // 0x10101de
680681
field public static final int mimeType = 16842790; // 0x1010026
681682
field public static final int minDate = 16843583; // 0x101033f
@@ -3688,6 +3689,8 @@ package android.app {
36883689
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
36893690
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
36903691
method public int getRouteTypes();
3692+
method public void onAttachedToWindow();
3693+
method public void onDetachedFromWindow();
36913694
method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
36923695
method public void setRouteTypes(int);
36933696
method public void showDialog();
@@ -3759,6 +3762,7 @@ package android.app {
37593762
public static class Notification.BigPictureStyle extends android.app.Notification.Style {
37603763
ctor public Notification.BigPictureStyle();
37613764
ctor public Notification.BigPictureStyle(android.app.Notification.Builder);
3765+
method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.Bitmap);
37623766
method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
37633767
method public android.app.Notification build();
37643768
method public android.app.Notification.BigPictureStyle setBigContentTitle(java.lang.CharSequence);
@@ -5827,7 +5831,6 @@ package android.content {
58275831
field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
58285832
field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
58295833
field public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
5830-
field public static final int FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS = 8192; // 0x2000
58315834
field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
58325835
field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
58335836
field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000
@@ -11537,6 +11540,7 @@ package android.media {
1153711540
method public abstract void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
1153811541
method public abstract void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
1153911542
method public abstract void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
11543+
method public abstract void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
1154011544
}
1154111545

1154211546
public static class MediaRouter.RouteCategory {
@@ -11564,10 +11568,21 @@ package android.media {
1156411568
method public android.graphics.drawable.Drawable getIconDrawable();
1156511569
method public java.lang.CharSequence getName();
1156611570
method public java.lang.CharSequence getName(android.content.Context);
11571+
method public int getPlaybackStream();
11572+
method public int getPlaybackType();
1156711573
method public java.lang.CharSequence getStatus();
1156811574
method public int getSupportedTypes();
1156911575
method public java.lang.Object getTag();
11576+
method public int getVolume();
11577+
method public int getVolumeHandling();
11578+
method public int getVolumeMax();
11579+
method public void requestSetVolume(int);
11580+
method public void requestUpdateVolume(int);
1157011581
method public void setTag(java.lang.Object);
11582+
field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
11583+
field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
11584+
field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
11585+
field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
1157111586
}
1157211587

1157311588
public static class MediaRouter.SimpleCallback extends android.media.MediaRouter.Callback {
@@ -11579,15 +11594,29 @@ package android.media {
1157911594
method public void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
1158011595
method public void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
1158111596
method public void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
11597+
method public void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
1158211598
}
1158311599

1158411600
public static class MediaRouter.UserRouteInfo extends android.media.MediaRouter.RouteInfo {
11601+
method public android.media.RemoteControlClient getRemoteControlClient();
1158511602
method public void setIconDrawable(android.graphics.drawable.Drawable);
1158611603
method public void setIconResource(int);
1158711604
method public void setName(java.lang.CharSequence);
1158811605
method public void setName(int);
11606+
method public void setPlaybackStream(int);
11607+
method public void setPlaybackType(int);
1158911608
method public void setRemoteControlClient(android.media.RemoteControlClient);
1159011609
method public void setStatus(java.lang.CharSequence);
11610+
method public void setVolume(int);
11611+
method public void setVolumeCallback(android.media.MediaRouter.VolumeCallback);
11612+
method public void setVolumeHandling(int);
11613+
method public void setVolumeMax(int);
11614+
}
11615+
11616+
public static abstract class MediaRouter.VolumeCallback {
11617+
ctor public MediaRouter.VolumeCallback();
11618+
method public abstract void onVolumeSetRequest(android.media.MediaRouter.RouteInfo, int);
11619+
method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int);
1159111620
}
1159211621

1159311622
public class MediaScannerConnection implements android.content.ServiceConnection {
@@ -22816,10 +22845,18 @@ package android.view {
2281622845
public abstract class ActionProvider {
2281722846
ctor public ActionProvider(android.content.Context);
2281822847
method public boolean hasSubMenu();
22848+
method public boolean isVisible();
2281922849
method public abstract deprecated android.view.View onCreateActionView();
2282022850
method public android.view.View onCreateActionView(android.view.MenuItem);
2282122851
method public boolean onPerformDefaultAction();
2282222852
method public void onPrepareSubMenu(android.view.SubMenu);
22853+
method public boolean overridesItemVisibility();
22854+
method public void refreshVisibility();
22855+
method public void setVisibilityListener(android.view.ActionProvider.VisibilityListener);
22856+
}
22857+
22858+
public static abstract interface ActionProvider.VisibilityListener {
22859+
method public abstract void onActionProviderVisibilityChanged(boolean);
2282322860
}
2282422861

2282522862
public final class Choreographer {
@@ -28146,8 +28183,11 @@ package android.widget {
2814628183
method public void setString(int, java.lang.String, java.lang.String);
2814728184
method public void setTextColor(int, int);
2814828185
method public void setTextViewCompoundDrawables(int, int, int, int, int);
28186+
method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
2814928187
method public void setTextViewText(int, java.lang.CharSequence);
28188+
method public void setTextViewTextSize(int, int, float);
2815028189
method public void setUri(int, java.lang.String, android.net.Uri);
28190+
method public void setViewPadding(int, int, int, int, int);
2815128191
method public void setViewVisibility(int, int);
2815228192
method public void showNext(int);
2815328193
method public void showPrevious(int);

api/current.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3689,6 +3689,8 @@ package android.app {
36893689
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
36903690
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
36913691
method public int getRouteTypes();
3692+
method public void onAttachedToWindow();
3693+
method public void onDetachedFromWindow();
36923694
method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
36933695
method public void setRouteTypes(int);
36943696
method public void showDialog();
@@ -5829,7 +5831,6 @@ package android.content {
58295831
field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
58305832
field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
58315833
field public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
5832-
field public static final int FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS = 8192; // 0x2000
58335834
field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
58345835
field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
58355836
field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000

core/java/android/app/ActivityManagerNative.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,6 +1617,16 @@ public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
16171617
return true;
16181618
}
16191619

1620+
case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: {
1621+
data.enforceInterface(IActivityManager.descriptor);
1622+
IIntentSender r = IIntentSender.Stub.asInterface(
1623+
data.readStrongBinder());
1624+
boolean res = isIntentSenderAnActivity(r);
1625+
reply.writeNoException();
1626+
reply.writeInt(res ? 1 : 0);
1627+
return true;
1628+
}
1629+
16201630
case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: {
16211631
data.enforceInterface(IActivityManager.descriptor);
16221632
Configuration config = Configuration.CREATOR.createFromParcel(data);
@@ -3753,6 +3763,19 @@ public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws Remo
37533763
return res;
37543764
}
37553765

3766+
public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException {
3767+
Parcel data = Parcel.obtain();
3768+
Parcel reply = Parcel.obtain();
3769+
data.writeInterfaceToken(IActivityManager.descriptor);
3770+
data.writeStrongBinder(sender.asBinder());
3771+
mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0);
3772+
reply.readException();
3773+
boolean res = reply.readInt() != 0;
3774+
data.recycle();
3775+
reply.recycle();
3776+
return res;
3777+
}
3778+
37563779
public void updatePersistentConfiguration(Configuration values) throws RemoteException
37573780
{
37583781
Parcel data = Parcel.obtain();

core/java/android/app/IActivityManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,8 @@ public void setPackageAskScreenCompat(String packageName, boolean ask)
338338

339339
public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException;
340340

341+
public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException;
342+
341343
public void updatePersistentConfiguration(Configuration values) throws RemoteException;
342344

343345
public long[] getProcessPss(int[] pids) throws RemoteException;
@@ -603,4 +605,5 @@ private WaitResult(Parcel source) {
603605
int FINISH_ACTIVITY_AFFINITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+148;
604606
int GET_LAUNCHED_FROM_UID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+149;
605607
int UNSTABLE_PROVIDER_DIED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+150;
608+
int IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+151;
606609
}

core/java/android/app/PendingIntent.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,20 @@ public boolean isTargetedToPackage() {
630630
}
631631
}
632632

633+
/**
634+
* @hide
635+
* Check whether this PendingIntent will launch an Activity.
636+
*/
637+
public boolean isActivity() {
638+
try {
639+
return ActivityManagerNative.getDefault()
640+
.isIntentSenderAnActivity(mTarget);
641+
} catch (RemoteException e) {
642+
// Should never happen.
643+
return false;
644+
}
645+
}
646+
633647
/**
634648
* Comparison operator on two PendingIntent objects, such that true
635649
* is returned then they both represent the same operation from the

core/java/android/content/Intent.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3104,17 +3104,6 @@ public static Intent createChooser(Intent target, CharSequence title) {
31043104
* saw. This can only be used in conjunction with {@link #FLAG_ACTIVITY_NEW_TASK}.
31053105
*/
31063106
public static final int FLAG_ACTIVITY_TASK_ON_HOME = 0X00004000;
3107-
/**
3108-
* If set in an Intent passed to {@link Context#startActivity Context.startActivity()},
3109-
* upon starting the activity the system will also clear any system dialogs that
3110-
* are currently shown. This is intended primarily for any actions that are
3111-
* associated with buttons in a notification: tapping on the button to launch
3112-
* the activity needs to also dismiss the notification window (which is one
3113-
* of the system dialogs); setting this flag on the Intent associated with that
3114-
* action will ensure that and other system dialogs are dismissed so that the
3115-
* user arrives in the new activity.
3116-
*/
3117-
public static final int FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS = 0X00002000;
31183107
/**
31193108
* If set, when sending a broadcast only registered receivers will be
31203109
* called -- no BroadcastReceiver components will be launched.

0 commit comments

Comments
 (0)