Settings: Make all user apps cloneable
* Filter system apps and overlays * Include pre-defined apps in com.android.internal.R.array.cloneable_apps Change-Id: Ia08a1095cd2aec9c6d77d055f1344e57225a44d5 Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> Signed-off-by: AnierinB <anierin@evolution-x.org>
This commit is contained in:
@@ -24,6 +24,7 @@ import static com.android.settingslib.applications.ApplicationsState.AppFilter;
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.custom.utils.AppUtils;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settingslib.applications.ApplicationsState;
|
||||
|
||||
@@ -42,13 +43,13 @@ public class AppStateClonedAppsBridge extends AppStateBaseBridge{
|
||||
private final List<String> mAllowedApps;
|
||||
private List<String> mCloneProfileApps = new ArrayList<>();
|
||||
private int mCloneUserId;
|
||||
private AppUtils appUtils = new AppUtils();
|
||||
|
||||
public AppStateClonedAppsBridge(Context context, ApplicationsState appState,
|
||||
Callback callback) {
|
||||
super(appState, callback);
|
||||
mContext = context;
|
||||
mAllowedApps = Arrays.asList(mContext.getResources()
|
||||
.getStringArray(com.android.internal.R.array.cloneable_apps));
|
||||
mAllowedApps = appUtils.getCloneableAppListStr(mContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -30,6 +30,7 @@ import androidx.lifecycle.OnLifecycleEvent;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.custom.utils.AppUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
@@ -45,6 +46,7 @@ public class ClonedAppsPreferenceController extends BasePreferenceController
|
||||
implements LifecycleObserver {
|
||||
private Preference mPreference;
|
||||
private Context mContext;
|
||||
private AppUtils appUtils = new AppUtils();
|
||||
|
||||
public ClonedAppsPreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
@@ -81,9 +83,7 @@ public class ClonedAppsPreferenceController extends BasePreferenceController
|
||||
@Override
|
||||
protected Integer[] doInBackground(Void... unused) {
|
||||
// Get list of allowlisted cloneable apps.
|
||||
List<String> cloneableApps = Arrays.asList(
|
||||
mContext.getResources().getStringArray(
|
||||
com.android.internal.R.array.cloneable_apps));
|
||||
List<String> cloneableApps = appUtils.getCloneableAppListStr(mContext);
|
||||
List<String> primaryUserApps = mContext.getPackageManager()
|
||||
.getInstalledPackagesAsUser(/* flags*/ 0, UserHandle.myUserId()).stream()
|
||||
.map(x -> x.packageName).toList();
|
||||
|
||||
30
src/com/android/settings/custom/utils/AppUtils.kt
Normal file
30
src/com/android/settings/custom/utils/AppUtils.kt
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.android.settings.custom.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageInfo
|
||||
import android.os.UserHandle
|
||||
|
||||
class AppUtils {
|
||||
public fun getCloneableAppList(context: Context): List<PackageInfo> {
|
||||
var packageList: List<PackageInfo> =
|
||||
context.getPackageManager().getInstalledPackagesAsUser(/* flags*/ 0, UserHandle.myUserId())
|
||||
|
||||
var filteredList: List<PackageInfo> = packageList.filter {
|
||||
val packageName = it.applicationInfo?.packageName
|
||||
val isSystemApp = it.applicationInfo?.isSystemApp()
|
||||
val isResourceOverlay = it.applicationInfo?.isResourceOverlay()
|
||||
|
||||
val cloneableApps = context.resources.getStringArray(com.android.internal.R.array.cloneable_apps)?.toList()
|
||||
|
||||
cloneableApps?.contains(packageName) == true || (isSystemApp == false && isResourceOverlay == false)
|
||||
}
|
||||
|
||||
return filteredList
|
||||
}
|
||||
|
||||
public fun getCloneableAppListStr(context: Context): List<String> {
|
||||
return getCloneableAppList(context).map {
|
||||
x -> x.packageName
|
||||
}.toList()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user