首页 > 解决方案 > 如何让我的 android 应用程序在特定时间段后无法打开?

问题描述

我目前正在尝试实现类似 Whatsapp 的功能,该功能显示在特定时间段内不更新 whatsapp 的自定义活动。

我在stackoverflow上搜索,发现了一个类似的问题。但是提供的代码似乎不起作用。任何可能的代码适合这个?

这是我迄今为止尝试过的

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();
  }

在使用此代码时,我收到错误不兼容的类型:所需的布尔值很长。

标签: javaandroidandroid-studio

解决方案


您可以设置计时器并在后台运行它,为此使用服务,当此服务运行时,用户尝试打开您的应用程序,然后调用完成方法。finish 方法会自动销毁您的活动,因此不允许用户打开您的应用程序。一旦计时器完成,您就可以允许用户打开它。


推荐阅读