BUG de la fenêtre pop-up Android 8 lors de la demande d'autorisation

BUG contextuel

Lorsque l'application utilise requestPermissions pour demander des autorisations, le système affiche une fenêtre de sélection pour autoriser ou refuser.
Dans cette fenêtre, il y a une boîte de sélection "Ne plus demander", des boutons "Refuser" et "Autoriser".
Si vous avez rencontré un bug, cliquez sur "Ne plus demander", le bouton "Autoriser" sera grisé et désactivé.
insérez la description de l'image ici

position


Localisez d'abord où se trouve le code, recherchez d'abord les packages/apps/PackageInstaller/res/values-zh-rCN/strings.xml:108 anglais correspondants : "Ne demandez plus" via le texte "Ne demandez plus "

Recherchez ./packages/apps/PackageInstaller/res/layout/grant_permissions.xml par ce "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>

Localisez le code source dans le fichier packages/apps/PackageInstaller.
GrantPermissionsActivity est une fenêtre contextuelle pour l'attribution des autorisations. GrantPermissionsDefaultViewHandler est utilisé pour contrôler la vue de l'interface utilisateur de GrantPermissionsActivity. Les événements de clic de bouton sont gérés via l'interface GrantPermissionsViewHandler.ResultListener, qui est implémentée par GrantPermissionsActivity

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

Modifier BOGUE

Modifier le code sous 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;
         }
     }

Auteur : Trop beau pour sortir et refuser de réimprimer

Je suppose que tu aimes

Origine blog.csdn.net/zmlovelx/article/details/129218597
conseillé
Classement