Loading core/java/android/app/Activity.java +29 −0 Original line number Diff line number Diff line Loading @@ -689,6 +689,8 @@ public class Activity extends ContextThemeWrapper private static final String SAVED_DIALOGS_TAG = "android:savedDialogs"; private static final String SAVED_DIALOG_KEY_PREFIX = "android:dialog_"; private static final String SAVED_DIALOG_ARGS_KEY_PREFIX = "android:dialog_args_"; private static final String HAS_CURENT_PERMISSIONS_REQUEST_KEY = "android:hasCurrentPermissionsRequest"; private static final String REQUEST_PERMISSIONS_WHO_PREFIX = "@android:requestPermissions:"; Loading Loading @@ -797,6 +799,8 @@ public class Activity extends ContextThemeWrapper SharedElementCallback mEnterTransitionListener = SharedElementCallback.NULL_CALLBACK; SharedElementCallback mExitTransitionListener = SharedElementCallback.NULL_CALLBACK; private boolean mHasCurrentPermissionsRequest; /** Return the intent that started this activity. */ public Intent getIntent() { return mIntent; Loading Loading @@ -1298,6 +1302,7 @@ public class Activity extends ContextThemeWrapper onSaveInstanceState(outState); saveManagedDialogs(outState); mActivityTransitionState.saveState(outState); storeHasCurrentPermissionRequest(outState); if (DEBUG_LIFECYCLE) Slog.v(TAG, "onSaveInstanceState " + this + ": " + outState); } Loading @@ -1313,6 +1318,7 @@ public class Activity extends ContextThemeWrapper final void performSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { onSaveInstanceState(outState, outPersistentState); saveManagedDialogs(outState); storeHasCurrentPermissionRequest(outState); if (DEBUG_LIFECYCLE) Slog.v(TAG, "onSaveInstanceState " + this + ": " + outState + ", " + outPersistentState); } Loading Loading @@ -3811,8 +3817,15 @@ public class Activity extends ContextThemeWrapper * @see #shouldShowRequestPermissionRationale(String) */ public final void requestPermissions(@NonNull String[] permissions, int requestCode) { if (mHasCurrentPermissionsRequest) { Log.w(TAG, "Can reqeust only one set of permissions at a time"); // Dispatch the callback with empty arrays which means a cancellation. onRequestPermissionsResult(requestCode, new String[0], new int[0]); return; } Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); mHasCurrentPermissionsRequest = true; } /** Loading Loading @@ -6234,12 +6247,14 @@ public class Activity extends ContextThemeWrapper } final void performCreate(Bundle icicle) { restoreHasCurrentPermissionRequest(icicle); onCreate(icicle); mActivityTransitionState.readState(icicle); performCreateCommon(); } final void performCreate(Bundle icicle, PersistableBundle persistentState) { restoreHasCurrentPermissionRequest(icicle); onCreate(icicle, persistentState); mActivityTransitionState.readState(icicle); performCreateCommon(); Loading Loading @@ -6418,6 +6433,19 @@ public class Activity extends ContextThemeWrapper return mResumed; } private void storeHasCurrentPermissionRequest(Bundle bundle) { if (bundle != null && mHasCurrentPermissionsRequest) { bundle.putBoolean(HAS_CURENT_PERMISSIONS_REQUEST_KEY, true); } } private void restoreHasCurrentPermissionRequest(Bundle bundle) { if (bundle != null) { mHasCurrentPermissionsRequest = bundle.getBoolean( HAS_CURENT_PERMISSIONS_REQUEST_KEY, false); } } void dispatchActivityResult(String who, int requestCode, int resultCode, Intent data) { if (false) Log.v( Loading Loading @@ -6545,6 +6573,7 @@ public class Activity extends ContextThemeWrapper } private void dispatchRequestPermissionsResult(int requestCode, Intent data) { mHasCurrentPermissionsRequest = false; // If the package installer crashed we may have not data - best effort. String[] permissions = (data != null) ? data.getStringArrayExtra( PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES) : new String[0]; Loading core/java/android/app/ApplicationPackageManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -1619,7 +1619,8 @@ final class ApplicationPackageManager extends PackageManager { // System apps and apps demanding internal storage can't be moved // anywhere else if (app.isSystemApp() || app.installLocation == PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY) { || app.installLocation == PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY || app.installLocation == PackageInfo.INSTALL_LOCATION_UNSPECIFIED) { return false; } Loading core/java/android/app/Fragment.java +1 −4 Original line number Diff line number Diff line Loading @@ -460,9 +460,6 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene // If set this fragment is being retained across the current config change. boolean mRetaining; // If set this fragment's loaders are being retained across the current config change. boolean mRetainLoader; // If set this fragment has menu items to contribute. boolean mHasMenu; Loading Loading @@ -2404,7 +2401,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene mLoaderManager = mHost.getLoaderManager(mWho, mLoadersStarted, false); } if (mLoaderManager != null) { if (mRetainLoader) { if (mHost.getRetainLoaders()) { mLoaderManager.doRetain(); } else { mLoaderManager.doStop(); Loading core/java/android/app/FragmentController.java +0 −1 Original line number Diff line number Diff line Loading @@ -341,7 +341,6 @@ public class FragmentController { */ public void doLoaderStop(boolean retain) { mHost.doLoaderStop(retain); mHost.mFragmentManager.setRetainLoader(retain); } /** Loading core/java/android/app/FragmentHostCallback.java +11 −0 Original line number Diff line number Diff line Loading @@ -42,9 +42,14 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { private final Handler mHandler; final int mWindowAnimations; final FragmentManagerImpl mFragmentManager = new FragmentManagerImpl(); /** The loader managers for individual fragments [i.e. Fragment#getLoaderManager()] */ private ArrayMap<String, LoaderManager> mAllLoaderManagers; /** Whether or not fragment loaders should retain their state */ private boolean mRetainLoaders; /** The loader manger for the fragment host [i.e. Activity#getLoaderManager()] */ private LoaderManagerImpl mLoaderManager; private boolean mCheckedForLoaderManager; /** Whether or not the fragment host loader manager was started */ private boolean mLoadersStarted; public FragmentHostCallback(Context context, Handler handler, int windowAnimations) { Loading Loading @@ -166,6 +171,10 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { return true; } boolean getRetainLoaders() { return mRetainLoaders; } Activity getActivity() { return mActivity; } Loading Loading @@ -217,6 +226,8 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { } void doLoaderStop(boolean retain) { mRetainLoaders = retain; if (mLoaderManager == null) { return; } Loading Loading
core/java/android/app/Activity.java +29 −0 Original line number Diff line number Diff line Loading @@ -689,6 +689,8 @@ public class Activity extends ContextThemeWrapper private static final String SAVED_DIALOGS_TAG = "android:savedDialogs"; private static final String SAVED_DIALOG_KEY_PREFIX = "android:dialog_"; private static final String SAVED_DIALOG_ARGS_KEY_PREFIX = "android:dialog_args_"; private static final String HAS_CURENT_PERMISSIONS_REQUEST_KEY = "android:hasCurrentPermissionsRequest"; private static final String REQUEST_PERMISSIONS_WHO_PREFIX = "@android:requestPermissions:"; Loading Loading @@ -797,6 +799,8 @@ public class Activity extends ContextThemeWrapper SharedElementCallback mEnterTransitionListener = SharedElementCallback.NULL_CALLBACK; SharedElementCallback mExitTransitionListener = SharedElementCallback.NULL_CALLBACK; private boolean mHasCurrentPermissionsRequest; /** Return the intent that started this activity. */ public Intent getIntent() { return mIntent; Loading Loading @@ -1298,6 +1302,7 @@ public class Activity extends ContextThemeWrapper onSaveInstanceState(outState); saveManagedDialogs(outState); mActivityTransitionState.saveState(outState); storeHasCurrentPermissionRequest(outState); if (DEBUG_LIFECYCLE) Slog.v(TAG, "onSaveInstanceState " + this + ": " + outState); } Loading @@ -1313,6 +1318,7 @@ public class Activity extends ContextThemeWrapper final void performSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { onSaveInstanceState(outState, outPersistentState); saveManagedDialogs(outState); storeHasCurrentPermissionRequest(outState); if (DEBUG_LIFECYCLE) Slog.v(TAG, "onSaveInstanceState " + this + ": " + outState + ", " + outPersistentState); } Loading Loading @@ -3811,8 +3817,15 @@ public class Activity extends ContextThemeWrapper * @see #shouldShowRequestPermissionRationale(String) */ public final void requestPermissions(@NonNull String[] permissions, int requestCode) { if (mHasCurrentPermissionsRequest) { Log.w(TAG, "Can reqeust only one set of permissions at a time"); // Dispatch the callback with empty arrays which means a cancellation. onRequestPermissionsResult(requestCode, new String[0], new int[0]); return; } Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); mHasCurrentPermissionsRequest = true; } /** Loading Loading @@ -6234,12 +6247,14 @@ public class Activity extends ContextThemeWrapper } final void performCreate(Bundle icicle) { restoreHasCurrentPermissionRequest(icicle); onCreate(icicle); mActivityTransitionState.readState(icicle); performCreateCommon(); } final void performCreate(Bundle icicle, PersistableBundle persistentState) { restoreHasCurrentPermissionRequest(icicle); onCreate(icicle, persistentState); mActivityTransitionState.readState(icicle); performCreateCommon(); Loading Loading @@ -6418,6 +6433,19 @@ public class Activity extends ContextThemeWrapper return mResumed; } private void storeHasCurrentPermissionRequest(Bundle bundle) { if (bundle != null && mHasCurrentPermissionsRequest) { bundle.putBoolean(HAS_CURENT_PERMISSIONS_REQUEST_KEY, true); } } private void restoreHasCurrentPermissionRequest(Bundle bundle) { if (bundle != null) { mHasCurrentPermissionsRequest = bundle.getBoolean( HAS_CURENT_PERMISSIONS_REQUEST_KEY, false); } } void dispatchActivityResult(String who, int requestCode, int resultCode, Intent data) { if (false) Log.v( Loading Loading @@ -6545,6 +6573,7 @@ public class Activity extends ContextThemeWrapper } private void dispatchRequestPermissionsResult(int requestCode, Intent data) { mHasCurrentPermissionsRequest = false; // If the package installer crashed we may have not data - best effort. String[] permissions = (data != null) ? data.getStringArrayExtra( PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES) : new String[0]; Loading
core/java/android/app/ApplicationPackageManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -1619,7 +1619,8 @@ final class ApplicationPackageManager extends PackageManager { // System apps and apps demanding internal storage can't be moved // anywhere else if (app.isSystemApp() || app.installLocation == PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY) { || app.installLocation == PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY || app.installLocation == PackageInfo.INSTALL_LOCATION_UNSPECIFIED) { return false; } Loading
core/java/android/app/Fragment.java +1 −4 Original line number Diff line number Diff line Loading @@ -460,9 +460,6 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene // If set this fragment is being retained across the current config change. boolean mRetaining; // If set this fragment's loaders are being retained across the current config change. boolean mRetainLoader; // If set this fragment has menu items to contribute. boolean mHasMenu; Loading Loading @@ -2404,7 +2401,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene mLoaderManager = mHost.getLoaderManager(mWho, mLoadersStarted, false); } if (mLoaderManager != null) { if (mRetainLoader) { if (mHost.getRetainLoaders()) { mLoaderManager.doRetain(); } else { mLoaderManager.doStop(); Loading
core/java/android/app/FragmentController.java +0 −1 Original line number Diff line number Diff line Loading @@ -341,7 +341,6 @@ public class FragmentController { */ public void doLoaderStop(boolean retain) { mHost.doLoaderStop(retain); mHost.mFragmentManager.setRetainLoader(retain); } /** Loading
core/java/android/app/FragmentHostCallback.java +11 −0 Original line number Diff line number Diff line Loading @@ -42,9 +42,14 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { private final Handler mHandler; final int mWindowAnimations; final FragmentManagerImpl mFragmentManager = new FragmentManagerImpl(); /** The loader managers for individual fragments [i.e. Fragment#getLoaderManager()] */ private ArrayMap<String, LoaderManager> mAllLoaderManagers; /** Whether or not fragment loaders should retain their state */ private boolean mRetainLoaders; /** The loader manger for the fragment host [i.e. Activity#getLoaderManager()] */ private LoaderManagerImpl mLoaderManager; private boolean mCheckedForLoaderManager; /** Whether or not the fragment host loader manager was started */ private boolean mLoadersStarted; public FragmentHostCallback(Context context, Handler handler, int windowAnimations) { Loading Loading @@ -166,6 +171,10 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { return true; } boolean getRetainLoaders() { return mRetainLoaders; } Activity getActivity() { return mActivity; } Loading Loading @@ -217,6 +226,8 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { } void doLoaderStop(boolean retain) { mRetainLoaders = retain; if (mLoaderManager == null) { return; } Loading