Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cfa3cb2 authored by sarbyn's avatar sarbyn Committed by Abhisek Devkota
Browse files

'Delete application' development shortcut

Just another shortcut that enables the 'delete application' action
 in recent tasks list and in the notification area

Change-Id: Ia80882b9ec06f4dd14de1e087d29103d80fdd362
parent d1bca643
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -21,5 +21,6 @@
    <item android:id="@+id/notification_inspect_item" android:title="@string/status_bar_notification_inspect_item_title" />
    <item android:id="@+id/notification_inspect_item_force_stop" android:title="@string/advanced_dev_option_force_stop" />
    <item android:id="@+id/notification_inspect_item_wipe_app" android:title="@string/advanced_dev_option_wipe_app" />
    <item android:id="@+id/notification_inspect_item_uninstall" android:title="@string/advanced_dev_option_uninstall" />
    <item android:id="@+id/notification_spam_item" android:title="@string/status_bar_notification_spam_item_title" />
</menu>
+1 −0
Original line number Diff line number Diff line
@@ -22,4 +22,5 @@
    <item android:id="@+id/recent_inspect_item" android:title="@string/status_bar_recent_inspect_item_title" />
    <item android:id="@+id/recent_force_stop" android:title="@string/advanced_dev_option_force_stop" />
    <item android:id="@+id/recent_wipe_app" android:title="@string/advanced_dev_option_wipe_app" />
    <item android:id="@+id/recent_uninstall" android:title="@string/advanced_dev_option_uninstall" />
</menu>
+1 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@
    <!-- Development shortcut -->
    <string name="advanced_dev_option_wipe_app">Wipe app data</string>
    <string name="advanced_dev_option_force_stop">Force stop</string>
    <string name="advanced_dev_option_uninstall">Uninstall</string>

    <!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <string name="accessibility_dock_battery_level">Dock battery <xliff:g id="number">%d</xliff:g> percent.</string>
+16 −1
Original line number Diff line number Diff line
@@ -788,6 +788,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
            Settings.Secure.DEVELOPMENT_SHORTCUT, 0) == 0) {
            popup.getMenu().findItem(R.id.recent_force_stop).setVisible(false);
            popup.getMenu().findItem(R.id.recent_wipe_app).setVisible(false);
            popup.getMenu().findItem(R.id.recent_uninstall).setVisible(false);
        } else {
            ViewHolder viewHolder = (ViewHolder) selectedView.getTag();
            if (viewHolder != null) {
@@ -802,7 +803,9 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
                          == ApplicationInfo.FLAG_SYSTEM
                          || mDpm.packageHasActiveAdmins(ad.packageName)) {
                        popup.getMenu()
                        .findItem(R.id.notification_inspect_item_wipe_app).setEnabled(false);
                        .findItem(R.id.recent_wipe_app).setEnabled(false);
                        popup.getMenu()
                        .findItem(R.id.recent_uninstall).setEnabled(false);
                    } else {
                        Log.d(TAG, "Not a 'special' application");
                    }
@@ -847,6 +850,18 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
                    } else {
                        throw new IllegalStateException("Oops, no tag on view " + selectedView);
                    }
                } else if (item.getItemId() == R.id.recent_uninstall) {
                    ViewHolder viewHolder = (ViewHolder) selectedView.getTag();
                    if (viewHolder != null) {
                        final TaskDescription ad = viewHolder.taskDescription;
                        Uri packageURI = Uri.parse("package:"+ad.packageName);
                        Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
                        uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, true);
                        mContext.startActivity(uninstallIntent);
                        ((ViewGroup) mRecentsContainer).removeViewInLayout(selectedView);
                    } else {
                        throw new IllegalStateException("Oops, no tag on view " + selectedView);
                    }
                } else {
                    return false;
                }
+11 −0
Original line number Diff line number Diff line
@@ -501,6 +501,8 @@ public abstract class BaseStatusBar extends SystemUI implements
                            .findItem(R.id.notification_inspect_item_force_stop).setVisible(false);
                    mNotificationBlamePopup.getMenu()
                            .findItem(R.id.notification_inspect_item_wipe_app).setVisible(false);
                    mNotificationBlamePopup.getMenu()
                            .findItem(R.id.notification_inspect_item_uninstall).setVisible(false);
                } else {
                    try {
                        PackageManager pm = (PackageManager) mContext.getPackageManager();
@@ -513,6 +515,8 @@ public abstract class BaseStatusBar extends SystemUI implements
                              || mDpm.packageHasActiveAdmins(packageNameF)) {
                            mNotificationBlamePopup.getMenu()
                            .findItem(R.id.notification_inspect_item_wipe_app).setEnabled(false);
                            mNotificationBlamePopup.getMenu()
                            .findItem(R.id.notification_inspect_item_uninstall).setEnabled(false);
                        }
                    } catch (NameNotFoundException ex) {
                        Slog.e(TAG, "Failed looking up ApplicationInfo for " + packageNameF, ex);
@@ -535,6 +539,13 @@ public abstract class BaseStatusBar extends SystemUI implements
                                    .getSystemService(Context.ACTIVITY_SERVICE);
                            am.clearApplicationUserData(packageNameF,
                                    new FakeClearUserDataObserver());
                        } else if (item.getItemId() == R.id.notification_inspect_item_uninstall) {
                            Uri packageURI = Uri.parse("package:"+packageNameF);
                            Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
                            uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, true);
                            uninstallIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            mContext.startActivity(uninstallIntent);
                            animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
                        } else if (item.getItemId() == R.id.notification_spam_item) {
                            ContentValues values = new ContentValues();
                            String message = SpamFilter.getNotificationContent(