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

Commit e5282c52 authored by Ankita Vyas's avatar Ankita Vyas Committed by Android (Google) Code Review
Browse files

Merge "Register receiver for package added in clone profile."

parents 738218ce 91a59948
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ import android.os.Environment;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Log;
import android.util.Log;


@@ -306,4 +307,17 @@ public class AppUtils {
            }
            }
        }
        }
    }
    }

    /**
     * Returns clone user profile id if present. Returns -1 if not present.
     */
    public static int getCloneUserId(Context context) {
        UserManager userManager = context.getSystemService(UserManager.class);
        for (UserHandle userHandle : userManager.getUserProfiles()) {
            if (userManager.getUserInfo(userHandle.getIdentifier()).isCloneProfile()) {
                return userHandle.getIdentifier();
            }
        }
        return -1;
    }
}
}
+20 −0
Original line number Original line Diff line number Diff line
@@ -123,6 +123,7 @@ public class ApplicationsState {
    final int mAdminRetrieveFlags;
    final int mAdminRetrieveFlags;
    final int mRetrieveFlags;
    final int mRetrieveFlags;
    PackageIntentReceiver mPackageIntentReceiver;
    PackageIntentReceiver mPackageIntentReceiver;
    PackageIntentReceiver mClonePackageIntentReceiver;


    boolean mResumed;
    boolean mResumed;
    boolean mHaveDisabledApps;
    boolean mHaveDisabledApps;
@@ -265,6 +266,15 @@ public class ApplicationsState {
            mPackageIntentReceiver.registerReceiver();
            mPackageIntentReceiver.registerReceiver();
        }
        }


        // Listen to any package additions in clone user to refresh the app list.
        if (mClonePackageIntentReceiver == null) {
            int cloneUserId = AppUtils.getCloneUserId(mContext);
            if (cloneUserId != -1) {
                mClonePackageIntentReceiver = new PackageIntentReceiver();
                mClonePackageIntentReceiver.registerReceiverForClone(cloneUserId);
            }
        }

        final List<ApplicationInfo> prevApplications = mApplications;
        final List<ApplicationInfo> prevApplications = mApplications;
        mApplications = new ArrayList<>();
        mApplications = new ArrayList<>();
        for (UserInfo user : mUm.getProfiles(UserHandle.myUserId())) {
        for (UserInfo user : mUm.getProfiles(UserHandle.myUserId())) {
@@ -456,6 +466,10 @@ public class ApplicationsState {
            mPackageIntentReceiver.unregisterReceiver();
            mPackageIntentReceiver.unregisterReceiver();
            mPackageIntentReceiver = null;
            mPackageIntentReceiver = null;
        }
        }
        if (mClonePackageIntentReceiver != null) {
            mClonePackageIntentReceiver.unregisterReceiver();
            mClonePackageIntentReceiver = null;
        }
    }
    }


    public AppEntry getEntry(String packageName, int userId) {
    public AppEntry getEntry(String packageName, int userId) {
@@ -1526,6 +1540,12 @@ public class ApplicationsState {
                removeUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL));
                removeUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL));
            }
            }
        }
        }

        public void registerReceiverForClone(int cloneId) {
            IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
            filter.addDataScheme("package");
            mContext.registerReceiverAsUser(this, UserHandle.of(cloneId), filter, null, null);
        }
    }
    }


    /**
    /**