Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -4470,6 +4470,7 @@ package android.app { method public boolean onHasView(); method public boolean onHasWindowAnimations(); method public void onInvalidateOptionsMenu(); method public void onRequestPermissionsFromFragment(android.app.Fragment, java.lang.String[], int); method public boolean onShouldSaveFragmentState(android.app.Fragment); method public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle); method public boolean onUseFragmentManagerInflaterFactory(); api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -4566,6 +4566,7 @@ package android.app { method public boolean onHasView(); method public boolean onHasWindowAnimations(); method public void onInvalidateOptionsMenu(); method public void onRequestPermissionsFromFragment(android.app.Fragment, java.lang.String[], int); method public boolean onShouldSaveFragmentState(android.app.Fragment); method public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle); method public boolean onUseFragmentManagerInflaterFactory(); core/java/android/app/Activity.java +31 −26 Original line number Diff line number Diff line Loading @@ -690,6 +690,8 @@ public class Activity extends ContextThemeWrapper 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 REQUEST_PERMISSIONS_WHO_PREFIX = "@android:requestPermissions:"; private static class ManagedDialog { Dialog mDialog; Bundle mArgs; Loading Loading @@ -3751,7 +3753,7 @@ public class Activity extends ContextThemeWrapper */ public final void requestPermissions(@NonNull String[] permissions, int requestCode) { Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); startActivityForResult(intent, requestCode); startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); } /** Loading Loading @@ -6348,13 +6350,18 @@ public class Activity extends ContextThemeWrapper + ", resCode=" + resultCode + ", data=" + data); mFragments.noteStateNotSaved(); if (who == null) { if (isRequestPermissionResult(data)) { onActivityResult(requestCode, resultCode, data); } else if (who.startsWith(REQUEST_PERMISSIONS_WHO_PREFIX)) { who = who.substring(REQUEST_PERMISSIONS_WHO_PREFIX.length()); if (TextUtils.isEmpty(who)) { dispatchRequestPermissionsResult(requestCode, data); } else { onActivityResult(requestCode, resultCode, data); Fragment frag = mFragments.findFragmentByWho(who); if (frag != null) { dispatchRequestPermissionsResultToFragment(requestCode, data, frag); } } else { if (who.startsWith("@android:view:")) { } } else if (who.startsWith("@android:view:")) { ArrayList<ViewRootImpl> views = WindowManagerGlobal.getInstance().getRootViews( getActivityToken()); for (ViewRootImpl viewRoot : views) { Loading @@ -6367,15 +6374,10 @@ public class Activity extends ContextThemeWrapper } else { Fragment frag = mFragments.findFragmentByWho(who); if (frag != null) { if (isRequestPermissionResult(data)) { dispatchRequestPermissionsResultToFragment(requestCode, data, frag); } else { frag.onActivityResult(requestCode, resultCode, data); } } } } } /** * Request to put this Activity in a mode where the user is locked to the Loading Loading @@ -6484,11 +6486,6 @@ public class Activity extends ContextThemeWrapper fragement.onRequestPermissionsResult(requestCode, permissions, grantResults); } private static boolean isRequestPermissionResult(Intent intent) { return intent != null && PackageManager.ACTION_REQUEST_PERMISSIONS.equals(intent.getAction()); } class HostCallbacks extends FragmentHostCallback<Activity> { public HostCallbacks() { super(Activity.this /*activity*/); Loading Loading @@ -6535,6 +6532,14 @@ public class Activity extends ContextThemeWrapper Activity.this.startActivityFromFragment(fragment, intent, requestCode, options); } @Override public void onRequestPermissionsFromFragment(Fragment fragment, String[] permissions, int requestCode) { String who = REQUEST_PERMISSIONS_WHO_PREFIX + fragment.mWho; Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); startActivityForResult(who, intent, requestCode, null); } @Override public boolean onHasWindowAnimations() { return getWindow() != null; Loading core/java/android/app/Fragment.java +1 −3 Original line number Diff line number Diff line Loading @@ -1200,9 +1200,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene if (mHost == null) { throw new IllegalStateException("Fragment " + this + " not attached to Activity"); } Intent intent = mHost.getContext().getPackageManager().buildRequestPermissionsIntent(permissions); mHost.onStartActivityFromFragment(this, intent, requestCode, null); mHost.onRequestPermissionsFromFragment(this, permissions,requestCode); } /** Loading core/java/android/app/FragmentHostCallback.java +9 −1 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ package android.app; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; Loading Loading @@ -125,6 +125,14 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { mContext.startActivity(intent); } /** * Requests permissions from the given fragment. * See {@link Activity#requestPermissions(String[], int)} */ public void onRequestPermissionsFromFragment(@NonNull Fragment fragment, @NonNull String[] permissions, int requestCode) { } /** * Return {@code true} if there are window animations. */ Loading Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -4470,6 +4470,7 @@ package android.app { method public boolean onHasView(); method public boolean onHasWindowAnimations(); method public void onInvalidateOptionsMenu(); method public void onRequestPermissionsFromFragment(android.app.Fragment, java.lang.String[], int); method public boolean onShouldSaveFragmentState(android.app.Fragment); method public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle); method public boolean onUseFragmentManagerInflaterFactory();
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -4566,6 +4566,7 @@ package android.app { method public boolean onHasView(); method public boolean onHasWindowAnimations(); method public void onInvalidateOptionsMenu(); method public void onRequestPermissionsFromFragment(android.app.Fragment, java.lang.String[], int); method public boolean onShouldSaveFragmentState(android.app.Fragment); method public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle); method public boolean onUseFragmentManagerInflaterFactory();
core/java/android/app/Activity.java +31 −26 Original line number Diff line number Diff line Loading @@ -690,6 +690,8 @@ public class Activity extends ContextThemeWrapper 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 REQUEST_PERMISSIONS_WHO_PREFIX = "@android:requestPermissions:"; private static class ManagedDialog { Dialog mDialog; Bundle mArgs; Loading Loading @@ -3751,7 +3753,7 @@ public class Activity extends ContextThemeWrapper */ public final void requestPermissions(@NonNull String[] permissions, int requestCode) { Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); startActivityForResult(intent, requestCode); startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null); } /** Loading Loading @@ -6348,13 +6350,18 @@ public class Activity extends ContextThemeWrapper + ", resCode=" + resultCode + ", data=" + data); mFragments.noteStateNotSaved(); if (who == null) { if (isRequestPermissionResult(data)) { onActivityResult(requestCode, resultCode, data); } else if (who.startsWith(REQUEST_PERMISSIONS_WHO_PREFIX)) { who = who.substring(REQUEST_PERMISSIONS_WHO_PREFIX.length()); if (TextUtils.isEmpty(who)) { dispatchRequestPermissionsResult(requestCode, data); } else { onActivityResult(requestCode, resultCode, data); Fragment frag = mFragments.findFragmentByWho(who); if (frag != null) { dispatchRequestPermissionsResultToFragment(requestCode, data, frag); } } else { if (who.startsWith("@android:view:")) { } } else if (who.startsWith("@android:view:")) { ArrayList<ViewRootImpl> views = WindowManagerGlobal.getInstance().getRootViews( getActivityToken()); for (ViewRootImpl viewRoot : views) { Loading @@ -6367,15 +6374,10 @@ public class Activity extends ContextThemeWrapper } else { Fragment frag = mFragments.findFragmentByWho(who); if (frag != null) { if (isRequestPermissionResult(data)) { dispatchRequestPermissionsResultToFragment(requestCode, data, frag); } else { frag.onActivityResult(requestCode, resultCode, data); } } } } } /** * Request to put this Activity in a mode where the user is locked to the Loading Loading @@ -6484,11 +6486,6 @@ public class Activity extends ContextThemeWrapper fragement.onRequestPermissionsResult(requestCode, permissions, grantResults); } private static boolean isRequestPermissionResult(Intent intent) { return intent != null && PackageManager.ACTION_REQUEST_PERMISSIONS.equals(intent.getAction()); } class HostCallbacks extends FragmentHostCallback<Activity> { public HostCallbacks() { super(Activity.this /*activity*/); Loading Loading @@ -6535,6 +6532,14 @@ public class Activity extends ContextThemeWrapper Activity.this.startActivityFromFragment(fragment, intent, requestCode, options); } @Override public void onRequestPermissionsFromFragment(Fragment fragment, String[] permissions, int requestCode) { String who = REQUEST_PERMISSIONS_WHO_PREFIX + fragment.mWho; Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions); startActivityForResult(who, intent, requestCode, null); } @Override public boolean onHasWindowAnimations() { return getWindow() != null; Loading
core/java/android/app/Fragment.java +1 −3 Original line number Diff line number Diff line Loading @@ -1200,9 +1200,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene if (mHost == null) { throw new IllegalStateException("Fragment " + this + " not attached to Activity"); } Intent intent = mHost.getContext().getPackageManager().buildRequestPermissionsIntent(permissions); mHost.onStartActivityFromFragment(this, intent, requestCode, null); mHost.onRequestPermissionsFromFragment(this, permissions,requestCode); } /** Loading
core/java/android/app/FragmentHostCallback.java +9 −1 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ package android.app; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; Loading Loading @@ -125,6 +125,14 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer { mContext.startActivity(intent); } /** * Requests permissions from the given fragment. * See {@link Activity#requestPermissions(String[], int)} */ public void onRequestPermissionsFromFragment(@NonNull Fragment fragment, @NonNull String[] permissions, int requestCode) { } /** * Return {@code true} if there are window animations. */ Loading