Órgãos reguladores exigem que o aplicativo não invoque APIs sensíveis antes do clique em no botão Agree na caixa de diálogo do acordo de privacidade. Para atender a essa exigência, as baselines do mPaaS Android 10.1.32.17 ou posterior e 10.1.60.5 ou posterior oferecem suporte a esse comportamento. Consulte este tópico para modifique o projeto conforme sua necessidade.
Procedimento
A Activity que exibe a caixa de diálogo de privacidade não pode herdar da BaseActivity do mPaaS. A BaseActivity coleta dados incorporados, o que faria o App coletar dados privados antes da concordância com a política de privacidade.
-
Crie uma classe de callback para a caixa de diálogo de permissão de privacidade. Implemente a interface
PrivacyListener. Consulte o código abaixo para ver a implementação:public class MyPrivacyListener implements PrivacyListener { // Make a privacy permission dialog box in this method @Override public void showPrivacy(final Activity activity, final PrivacyResultCallback privacyResultCallback) { if(null==privacyResultCallback){ return; } if(null!=activity){ new AlertDialog.Builder(activity) .setTitle("Privacy permission dialog box") .setMessage("Main content") .setPositiveButton("Agree to continue to use", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // After you click OK, cancel the dialog box dialogInterface.cancel(); // Set the dialog box result to true privacyResultCallback.onResult(true); } }) .setNegativeButton("Disagree and exit", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // After you click Disagree, cancel the dialog box dialogInterface.cancel(); // Set the dialog box result to false privacyResultCallback.onResult(false); // End the current activity, the framework will kill the process if(null!=activity){ activity.finish(); } } }) .setCancelable(false) .create() .show(); }else{ // If the activity is empty, the callback result is set to false privacyResultCallback.onResult(false); } } }Se você usar a baseline 10.1.68.42 ou superior e precisar limpar o estado de privacidade, implemente a interface
PrivacyListener2e a funçãoshouldClear.O código a seguir descreve a função
shouldClear:@Override public boolean shouldClear(Context context) { //When the user does not agree to the privacy agreement, the default is to use SharedPreferences to store false and set it to return false. If you need to pop up the window again, you need to set the true stored in the SP to return true; return false;//The value of return is the boolean value stored in SP. }Durante o callback, use uma caixa de diálogo para acionar
windowFocusChange. O framework executará as operações subsequentes após esse acionamento. Como o framework do sistema inicializa a classe de callback por reflexão e a agenda muito cedo, não adicione um construtor com nome de método nem inclua lógica específica nele. Caso precise utilizar recursos na caixa de diálogo, adote métodos diferentes dependendo da baseline.-
Na baseline 32, utilize o seguinte método:
Resources resource = QuinoxAgent.getInstance().getResourcesByBundle("bundlename of the Bundle where the resource is located");NotaVerifique o bundlename em
/build/intermediates/bundle/META-INF/BUNDLE.MFno módulo principal do projeto do Bundle.
-
Na baseline 60, crie o arquivo
res_slinksno módulo principal do projeto Portal. Escreva ogroupe oartifactdo Bundle onde seus recursos estão localizados no arquivores_slinksseguindo a regragroup-artifact.split("-")[0]. Se o conteúdo for muito extenso, valide a correção ao adicionar uma nova linha. Exemplo:group = com.mpaas.demo.materialdesign` `artifact = materialdesign-build`A configuração final gravada no arquivo res_slinks é
com.mpaas.demo.materialdesign-materialdesign.
Após concluir as etapas anteriores, use
LayoutInflator.inflate(R.layout.xxx)diretamente para chamar os recursos.
-
-
Registre a classe de callback no
AndroidManifest. Adicione o registro da classe de callback da caixa de diálogo de permissão de privacidade noAndroidManifestdoportal. Definavaluecomo o caminho completo da classe de callback implementada anteriormente. O código é mostrado a seguir. Substitua o caminho completo e o nome da classe pelos da sua própria classe de callback.<!--callback of privacy permission dialog box--> <meta-data android:name="privacy.listener" android:value="com.mpaas.demo.launcher.MyPrivacyListener" /> -
Configure a interceptação do pop-up na inicialização. No método
preInitdoMockLauncherApplicationAgent, adicione a interceptação da caixa de diálogo conforme o código abaixo://Check if you want to display a privacy permission dialog box to the user if(! PrivacyUtil.isUserAgreed(getApplicationContext())){ PermissionGate.getInstance().waitForUserConform(mContext, getMicroApplicationContext()); } -
Inicie a primeira Activity. No método
postInitdoMockLauncherActivityAgent, execute o primeiro salto para aActivity. O código é o seguinte:// Determine whether the user privacy permission has been obtained if(PrivacyUtil.isUserAgreed(activity)){ new Handler().postDelayed(new Runnable() { public void run() { Intent intent = new Intent(activity, MainActivity.class); activity.startActivity(intent); activity.finish(); } }, 200); }