Android 8 pop-up window BUG when requesting permission

Pop-up BUG

When the application uses requestPermissions to apply for permissions, the system will pop up a selection window to allow or deny.
In this window, there is a "Don't ask again" selection box, "Deny" and "Allow" buttons.
Encountered a bug, click "Don't ask again", the "Allow" button will be grayed out and disabled.
insert image description here

position

First locate where the code is, first find out the corresponding English
packages/apps/PackageInstaller/res/values-zh-rCN/strings.xml:108: "Don't ask again" through the text "Don't ask again"

Look for ./packages/apps/PackageInstaller/res/layout/grant_permissions.xml by this "never_ask_again"
: android:text="@string/never_ask_again"

        <!-- desc_container用于显示请求权限程序的图标perm_desc_root,及请求的权限permission_message -->
        <FrameLayout
            android:id="@+id/desc_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="18dip"
            android:paddingStart="20dip"
            android:paddingEnd="16dip">
            <include
                layout="@layout/permission_description" />
        </FrameLayout>
           <!-- do_not_ask_checkbox就是 不再询问的选择框 -->
            <CheckBox
                android:id="@+id/do_not_ask_checkbox"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="-12dp"
                android:minHeight="48dp"
                android:text="@string/never_ask_again"
                android:textColor="?android:attr/textColorPrimary"
                style="?android:attr/textAppearanceSmall"
                android:visibility="gone">
            </CheckBox>

Locate the source code in the packages/apps/PackageInstaller file.
GrantPermissionsActivity is a pop-up window for permission assignment. GrantPermissionsDefaultViewHandler is used to control the ui view of GrantPermissionsActivity. Button click events are handled through the GrantPermissionsViewHandler.ResultListener interface, which is implemented by GrantPermissionsActivity

public class GrantPermissionsActivity extends OverlayTouchActivity
        implements GrantPermissionsViewHandler.ResultListener {
    
    
            mViewHandler = new com.android.packageinstaller.permission.ui.handheld
                    .GrantPermissionsViewHandlerImpl(this, getCallingPackage())
                    .setResultListener(this);
}

Modify BUG

Modify the code under packages

diff --git a/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java b/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
index a372e2c5..41c65b89 100644
--- a/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
+++ b/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
@@ -342,7 +342,8 @@ public class GrantPermissionsViewHandlerImpl implements GrantPermissionsViewHand
                 if (mResultListener != null) {
                     view.performAccessibilityAction(
                             AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
-                    mResultListener.onPermissionGrantResult(mGroupName, true, false);
+                    mResultListener.onPermissionGrantResult(mGroupName, true,
+                            mShowDonNotAsk && mDoNotAskCheckbox.isChecked());
                 }
                 break;
             case R.id.permission_deny_button:
@@ -361,7 +362,7 @@ public class GrantPermissionsViewHandlerImpl implements GrantPermissionsViewHand
                 mActivity.startActivity(intent);
                 break;
             case R.id.do_not_ask_checkbox:
-                mAllowButton.setEnabled(!mDoNotAskCheckbox.isChecked());
+                //mAllowButton.setEnabled(!mDoNotAskCheckbox.isChecked());
                 break;
         }
     }

Author: Too handsome to go out and refuse to reprint

Guess you like

Origin blog.csdn.net/zmlovelx/article/details/129218597