La fonction anti-enregistrement d'Android et de la boîte de dialogue est invalide, et la fonction anti-enregistrement du jeu est invalide.

1. Interdire normalement l'enregistrement d'écran Appelez le code suivant dans la méthode onCreate() de Activity, mais sur Xiaomi, OPPO et d'autres appareils, seule la capture d'écran peut être interdite, mais l'enregistrement d'écran ne peut pas être interdit.

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    } 

2. Si la méthode ci-dessus échoue, vous pouvez utiliser la méthode suivante, également appelée dans la méthode onCreate() de l'activité.

  @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.flags = WindowManager.LayoutParams.FLAG_SECURE;
        getWindow().setAttributes(params);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    }

3. Les attributs ci-dessus définis par Android Dialog ne sont pas valides. Vous pouvez ajouter le code suivant dans la méthode onCreate() de BaseDialog ou du dialogue actuel, qui consiste à définir séparément l'attribut d'interdiction d'enregistrement d'écran pour la fenêtre de dialogue actuelle.

 WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
 params.flags = WindowManager.LayoutParams.FLAG_SECURE;
 getDialog().getWindow().setAttributes(params);

4. Pour désactiver l'enregistrement d'écran dans le jeu, activez simplement le mode de mot de passe de sécurité de SurfaceView, mais cela entraînera l'interdiction de l'enregistrement d'écran tout au long du jeu.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //一定要在父类onCreate方法之后调用
        if (getGLSurfaceView() != null) getGLSurfaceView().setSecure(true);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

    }
La méthode getGLSurfaceView() consiste à obtenir la variable privée dans la méthode Cocos2dxActivity de la classe parente ou à modifier la variable mGLSurfaceView de la classe parente de private à protected, la méthode ci-dessus peut également être utilisée

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (mGLSurfaceView != null) mGLSurfaceView.setSecure(true);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    }
5. Si vous pouvez parfois enregistrer l'écran dans le jeu, et parfois vous ne pouvez pas l'enregistrer, la quatrième méthode n'est pas suffisante, mais l'interdiction d'Android de la fonction d'enregistrement d'écran ne prend pas effet sur le SurfaceView utilisé dans le jeu, alors vous peut le suspendre sur la mise en page générale Une ImageView ou TextView, ne lui définissez aucun contenu et définissez-le pour qu'il soit transparent, afin que la définition de l'interdiction d'enregistrement d'écran sur l'Activity puisse prendre effet.

        Trouvez le CocosdxActivity du jeu, trouvez la mise en page dedans, il utilise FrameLayout ou ResizeLayout (hérité de FrameLayout), après avoir ajouté la page SurfaceView, ajoutez un ImageView.

// 修复SurfaceView处于顶层时WindowManager.LayoutParams.FLAG_SECURE失效的问题
        ImageView imageView = new ImageView(this);
        imageView.setAlpha(0.0f);
        mFrameLayout.addView(imageView);

 

Je suppose que tu aimes

Origine blog.csdn.net/zhao8856234/article/details/127784669
conseillé
Classement