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

Commit bf43d47b authored by Tony Huang's avatar Tony Huang
Browse files

Block non exported activities show on drawer when GET_CONTENT

Docsui start non exported activity will cause SecurityException,
we should block these activities show on drawer.

Fix: 139111827
Test: manual
Change-Id: Ice503618ab4f96b9bbbad8b497faecf40cc6f26e
parent 04b3ea89
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static com.android.documentsui.base.State.ACTION_OPEN;
import static com.android.documentsui.base.State.ACTION_OPEN_TREE;
import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION;

import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.ComponentName;
import android.content.Intent;
@@ -298,7 +299,12 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH
        intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT);
        intent.setComponent(new ComponentName(
                info.activityInfo.applicationInfo.packageName, info.activityInfo.name));
        try {
            mActivity.startActivityForResult(intent, CODE_FORWARD);
        } catch (SecurityException | ActivityNotFoundException e) {
            Log.e(TAG, "Caught error: " + e.getLocalizedMessage());
            mInjector.dialogs.showNoApplicationFound();
        }
    }

    @Override
+7 −0
Original line number Diff line number Diff line
@@ -355,6 +355,13 @@ public class RootsFragment extends Fragment {

        // Omit ourselves and maybe calling package from the list
        for (ResolveInfo info : infos) {
            if (!info.activityInfo.exported) {
                if (VERBOSE) {
                    Log.v(TAG, "Non exported activity: " + info.activityInfo);
                }
                continue;
            }

            final String packageName = info.activityInfo.packageName;
            if (!context.getPackageName().equals(packageName) &&
                    !TextUtils.equals(excludePackage, packageName)) {