Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使我的android应用程序在特定时间段后无法打开?_Java_Android_Android Studio - Fatal编程技术网

Java 如何使我的android应用程序在特定时间段后无法打开?

Java 如何使我的android应用程序在特定时间段后无法打开?,java,android,android-studio,Java,Android,Android Studio,我目前正在尝试实现一个像Whatsapp这样的功能,它显示了在特定时间段内不更新Whatsapp的自定义活动 我在stackoverflow上搜索,发现了一种类似的。但提供的代码似乎不起作用。有适合这个的代码吗 这就是我迄今为止所尝试的 public class MainActivity extends AppCompatActivity { public static final long CLOSE_APP = 432000000; @Override protected void o

我目前正在尝试实现一个像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();
  }

在使用这段代码时,我遇到了一个不兼容类型的错误:required boolean find long

你可以看看。您可以将当前版本以及首次找到此版本的日期保存到共享首选项中,并将其与实际值进行比较。如果版本增加,则可以更新这些值。如果没有,您可以根据它们计算旧版本的安装时间。希望这是您想要知道的。

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

您可以尝试此方法。我写了一个小程序,启动了它,一切都很好。) 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();
    }
}
}

这行有错误->
如果(现在-publishTimeInMilli)>关闭应用程序
。如果((现在-publishTimeInMilli)>关闭应用程序)

我尝试使用共享首选项,但没有成功,那么应该是
。你能告诉我有什么问题吗。我已经编辑了我的代码。如果(现在-publishTimeInMilli)>关闭应用程序)该行缺少
。在运行时尝试调用空对象引用上的虚拟方法“android.content.pm.PackageManager android.content.Context.getPackageManager()”时,您应该告诉我们在哪一行出现了“不兼容类型”错误