Как я могу сделать мое приложение для Android не доступным после определенного периода времени? - PullRequest
0 голосов
/ 22 января 2019

В настоящее время я пытаюсь реализовать такую ​​функцию, как Whatsapp, которая показывает настраиваемое действие по не обновлению WhatsApp в течение определенного периода времени.

Я искал в stackoverflow и нашел похожий вид question . Но представленный код, кажется, не работает. Любые возможные коды для этого?

Это то, что я пробовал до сих пор

public class MainActivity extends AppCompatActivity {
public static final long CLOSE_APP = 432000000;

 @Override
 protected void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       PackageManager pm = context.getPackageManager();
       PackageInfo pi= null;
       try {
        pi = pm.getPackageInfo(context.getPackageName(), 0);
       } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
     }
       long publishTimeInMilli = pi.firstInstallTime;

      long now = System.currentTimeMillis();
      if(now - publishTimeInMilli) > CLOSE_APP) {

         finishAffinity();
      }
 }

и этот код

  SharedPreferences prefs = 
  PreferenceManager.getDefaultSharedPreferences(this);
  SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
  if (!prefs.getBoolean("firstRun", true) {
     SharedPreferences.Editor editor = prefs.edit();
     Calendar c = Calendar.getInstance();
     c.setTime(new Date());
     c.add(Calendar.DATE, 5);  // number of days to add
     String date = sdf.format(c.getTime());  // dt is now the new date
     editor.putBoolean("firstRun", true);
     editor.putString("valid_until", date).apply();
  }
  else if(new Date().after(sdf.parse(prefs.getString("valid_until","")))) {
    finishAffinity();
  }

При использовании этого кода я получаю сообщение об ошибке несовместимые типы: обязательный логический параметр найден long.

Ответы [ 4 ]

0 голосов
/ 23 января 2019

В этой строке есть ошибка -> if(now - publishTimeInMilli) > CLOSE_APP). Это должно быть if((now - publishTimeInMilli) > CLOSE_APP)

0 голосов
/ 23 января 2019

Вы можете установить таймер и запускать его в фоновом режиме, использовать сервис для этого, и пока этот сервис работает, пользователь пытается открыть ваше приложение, а затем просто вызвать метод finish. Метод finish автоматически уничтожает вашу активность, поэтому пользователь не может открыть ваш app.once по таймеру заканчивается, вы можете позволить пользователю открыть его.

0 голосов
/ 23 января 2019

Вы можете попробовать этот метод. Я написал небольшую программу, запустил ее и все работало хорошо)) Через 30 дней ваша программа закроется после запуска

public class MainActivity extends AppCompatActivity {

public static final String MyPREFERENCES = "MyPrefs" ;
public static int demodays = 0;
public static int finishdate = 0;
SharedPreferences sharedpreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (demodays == 0){
        DateFormat df = new SimpleDateFormat("D");
        String data = df.format(Calendar.getInstance().getTime());
        demodays = Integer.parseInt(data);
        finishdate = demodays + 30;

        sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putInt("data", demodays);
        editor.putInt("finishdata", finishdate);
        editor.apply();
    }

    DateFormat df = new SimpleDateFormat("D");
    String today = df.format(Calendar.getInstance().getTime());
    int today1 = Integer.parseInt(today);

    if (today1 == finishdate) {
        Toast toast = Toast.makeText(getApplicationContext(),
                "Period of trial has finished", Toast.LENGTH_SHORT);
        toast.show();
        this.finish();
    }
}
}
0 голосов
/ 22 января 2019

Вы можете взглянуть на Общие настройки .Вы можете сохранить текущую версию, а также дату, когда эта версия была впервые найдена в ваших общих настройках, и просто сравнить их с фактическими значениями.Если ваша версия увеличивается, вы можете обновить эти значения.Если нет, то по ним можно посчитать, как долго была установлена ​​старая версия.Надеюсь, это то, что вы хотели знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...