Skip to content

Commit 1825b98

Browse files
adampAndroid (Google) Code Review
authored andcommitted
Merge "Fun with Up navigation"
2 parents 60620a2 + 0fc5b2b commit 1825b98

File tree

4 files changed

+29
-22
lines changed

4 files changed

+29
-22
lines changed

core/java/android/app/Activity.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2708,7 +2708,12 @@ public boolean onNavigateUp() {
27082708
// metadata is available.
27092709
Intent upIntent = getParentActivityIntent();
27102710
if (upIntent != null) {
2711-
if (shouldUpRecreateTask(upIntent)) {
2711+
if (mActivityInfo.taskAffinity == null) {
2712+
// Activities with a null affinity are special; they really shouldn't
2713+
// specify a parent activity intent in the first place. Just finish
2714+
// the current activity and call it a day.
2715+
finish();
2716+
} else if (shouldUpRecreateTask(upIntent)) {
27122717
TaskStackBuilder b = TaskStackBuilder.create(this);
27132718
onCreateNavigateUpTaskStack(b);
27142719
onPrepareNavigateUpTaskStack(b);

core/java/com/android/internal/app/ResolverActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,8 @@ protected void onIntentSelected(ResolveInfo ri, Intent intent, boolean alwaysChe
371371

372372
void showAppDetails(ResolveInfo ri) {
373373
Intent in = new Intent().setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
374-
.setData(Uri.fromParts("package", ri.activityInfo.packageName, null));
374+
.setData(Uri.fromParts("package", ri.activityInfo.packageName, null))
375+
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
375376
startActivity(in);
376377
}
377378

packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.app.ActivityManager;
2222
import android.app.ActivityManagerNative;
2323
import android.app.ActivityOptions;
24+
import android.app.TaskStackBuilder;
2425
import android.content.Context;
2526
import android.content.Intent;
2627
import android.content.res.Configuration;
@@ -845,8 +846,9 @@ public void handleSwipe(View view) {
845846
private void startApplicationDetailsActivity(String packageName) {
846847
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
847848
Uri.fromParts("package", packageName, null));
848-
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
849-
getContext().startActivity(intent);
849+
intent.setComponent(intent.resolveActivity(mContext.getPackageManager()));
850+
TaskStackBuilder.create(getContext())
851+
.addNextIntentWithParentStack(intent).startActivities();
850852
}
851853

852854
public boolean onInterceptTouchEvent(MotionEvent ev) {

packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,24 @@
1616

1717
package com.android.systemui.statusbar;
1818

19+
import com.android.internal.statusbar.IStatusBarService;
20+
import com.android.internal.statusbar.StatusBarIcon;
21+
import com.android.internal.statusbar.StatusBarIconList;
22+
import com.android.internal.statusbar.StatusBarNotification;
23+
import com.android.internal.widget.SizeAdaptiveLayout;
24+
import com.android.systemui.R;
25+
import com.android.systemui.SearchPanelView;
26+
import com.android.systemui.SystemUI;
27+
import com.android.systemui.recent.RecentTasksLoader;
28+
import com.android.systemui.recent.RecentsPanelView;
29+
import com.android.systemui.recent.TaskDescription;
30+
import com.android.systemui.statusbar.policy.NotificationRowLayout;
31+
import com.android.systemui.statusbar.tablet.StatusBarPanel;
32+
1933
import android.app.ActivityManagerNative;
2034
import android.app.KeyguardManager;
2135
import android.app.PendingIntent;
36+
import android.app.TaskStackBuilder;
2237
import android.content.Context;
2338
import android.content.Intent;
2439
import android.content.pm.ApplicationInfo;
@@ -51,22 +66,6 @@
5166
import android.widget.PopupMenu;
5267
import android.widget.RemoteViews;
5368

54-
import com.android.internal.statusbar.IStatusBarService;
55-
import com.android.internal.statusbar.StatusBarIcon;
56-
import com.android.internal.statusbar.StatusBarIconList;
57-
import com.android.internal.statusbar.StatusBarNotification;
58-
import com.android.internal.widget.SizeAdaptiveLayout;
59-
import com.android.systemui.R;
60-
import com.android.systemui.SearchPanelView;
61-
import com.android.systemui.SystemUI;
62-
import com.android.systemui.recent.RecentTasksLoader;
63-
import com.android.systemui.recent.RecentsPanelView;
64-
import com.android.systemui.recent.TaskDescription;
65-
import com.android.systemui.statusbar.CommandQueue;
66-
import com.android.systemui.statusbar.NotificationData.Entry;
67-
import com.android.systemui.statusbar.policy.NotificationRowLayout;
68-
import com.android.systemui.statusbar.tablet.StatusBarPanel;
69-
7069
import java.util.ArrayList;
7170

7271
public abstract class BaseStatusBar extends SystemUI implements
@@ -299,8 +298,8 @@ protected void applyLegacyRowBackground(StatusBarNotification sbn, View content)
299298
private void startApplicationDetailsActivity(String packageName) {
300299
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
301300
Uri.fromParts("package", packageName, null));
302-
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
303-
mContext.startActivity(intent);
301+
intent.setComponent(intent.resolveActivity(mContext.getPackageManager()));
302+
TaskStackBuilder.create(mContext).addNextIntentWithParentStack(intent).startActivities();
304303
}
305304

306305
protected View.OnLongClickListener getNotificationLongClicker() {

0 commit comments

Comments
 (0)