Как спросить пользователя, что мое приложение будет собирать данные о его использовании? - PullRequest
0 голосов
/ 17 октября 2019

Я хочу, чтобы, когда пользователь запускает приложение в первый раз, появляется диалоговое окно, информирующее пользователя о том, что приложение будет собирать некоторые данные о его / ее использовании, и если он / она нажмет "Принять", начнется основное действие, иникогда больше не спрашивайте пользователя.

1 Ответ

0 голосов
/ 17 октября 2019

давайте разберем вашу проблему на более мелкие. Вам понадобятся действия: MainActivity и PermissionsActivity (добавьте кнопку с идентификатором «да» и кнопку с идентификатором «нет».

A) Запустите действие только один раз. Мы будем делать это, используя SharedPreferences и сохраняя логическое значение, которое, если оно истинно, означает, что диалог был показан ранее, и, в противном случае, он не был показан.

// In MainActivity.class

String MY_PREFS_NAME = "my_prefs"; // can be changed, but it must be done so everywhere
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
Boolean bool = prefs.getBoolean("hasbeenshown", false); 
if (!bool){
    // Go to the request dialogue activity
    Intent myIntent = new Intent(MainActivity.this, PermissionsActivity.class);
    startActivity(myIntent);
}
// otherwise, if bool = true, activity has been shown and there is no need to redirect

B) Если пользователь отвечает,перенаправьте на MainActivity и сохраните ответ.

// In PermissionsActivity.class

String MY_PREFS_NAME = "my_prefs"; // can be changed, but it must be done so everywhere
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
Button yes = (Button) findViewById(R.id.button1);
yes.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // Do stuff when they accept
        // ...

        // Store the answer
        store(true); // true means that user said yes
    }
 });

Button no = (Button) findViewById(R.id.button1);
no.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // Do stuff when they !accept
        // ...

        // Store the answer
        store(false); // false means that user said no
    }
});

void store(Boolean answer){
    // Store the answer
    editor.putBoolean("answer", answer);

    // Don't show the message again
    editor.putBoolean("hasbeenshown", true);

    // Store the previous edits
    editor.commit();

    // Redirect to MainActivity
    Intent myIntent = new Intent(PermissionsActivity.this, MainActivity.class);
    startActivity(myIntent);
}

C) ПРИЛОЖЕНИЕ: Вы всегда можете получить ответ от любого действия с помощью следующего кода.

String MY_PREFS_NAME = "my_prefs"; // can be changed, but it must be done so everywhere
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
Boolean yesorno = prefs.getBoolean("answer", false);  // false will be returned if user didn't answer or answered no; true will be returned if user answered yes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...