java - 如何让我的 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();
}
在使用此代码时,我收到错误不兼容的类型:所需的布尔值很长。
解决方案
您可以设置计时器并在后台运行它,为此使用服务,当此服务运行时,用户尝试打开您的应用程序,然后调用完成方法。finish 方法会自动销毁您的活动,因此不允许用户打开您的应用程序。一旦计时器完成,您就可以允许用户打开它。
推荐阅读
- kotlin - 如何正确合并两个地图?
- vue.js - Set-Cookie not accessible through axios or fetch
- amazon-web-services - CDK:模板格式错误:参数计数 63 大于允许的最大值 60
- sql - 在 MSSQL QUERY 中创建表时是否可以为列添加描述
- sql - 如何将 Informatica 的 Normalizer Transformation 转换为 SQL 查询?
- performance - 各种 Power BI 数据源的(相对)性能如何?
- parsing - Haskell:如何将语义空白集成到解析器中?
- oracle - 过程中的相同查询需要不同的时间
- typescript - 反应导航类型检查
- postgresql - 如何在 pgadmin-4 中创建程序?