3 votes

Désactiver les captures d'écran en React Native

Je sais que vous ne pouvez pas empêcher à 100 % l'utilisateur de prendre une capture d'écran s'il insiste. Mais j'ai lu que vous pouvez toujours empêcher les captures d'écran manuelles en définissant LayoutParams.FLAG_SECURE en Java.

J'ai essayé de l'ajouter à mon fichier MainApplication mais getWindow() continuait à renvoyer des erreurs quoi que je fasse. J'ai donc déplacé cette ligne de code vers le fichier MainActivity et cela a fonctionné sans erreurs.

Le problème est que je peux toujours prendre des captures d'écran normalement.

MainApplication:

package com.testapp;
import android.app.Activity;

import com.reactnativenavigation.NavigationApplication;
import com.facebook.react.modules.i18nmanager.I18nUtil;

import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import android.support.annotation.Nullable;

/* modules personnalisés */
import com.oblador.vectoricons.VectorIconsPackage;
import org.pgsqlite.SQLitePluginPackage;
import com.learnium.RNDeviceInfo.RNDeviceInfo;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends NavigationApplication {
  @Override
  public boolean isDebug() {
    return BuildConfig.DEBUG;
  }

  @Nullable
  @Override
  public List createAdditionalReactPackages() {
    return Arrays.asList(
        new SQLitePluginPackage(),
        new VectorIconsPackage(),
        new RNDeviceInfo()
    );
  }

  @Override
  public void onCreate() {
    super.onCreate();
    I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
    sharedI18nUtilInstance.allowRTL(getApplicationContext(), false);
  }
}

MainActivity:

package com.testapp;
import android.widget.ImageView;
import com.reactnativenavigation.controllers.SplashActivity;
import android.os.Bundle;
import android.view.WindowManager.LayoutParams;

public class MainActivity extends SplashActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
  }
}

0voto

Aman Kaushik Points 184

J'ai simplement fait ce qui suit et cela fonctionne correctement :

public class MainActivity extends AppCompatActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
            WindowManager.LayoutParams.FLAG_SECURE);

        setContentView(R.layout.activity_main);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X