Android应用程序的试用版?

Android应用程序的试用版?,android,Android,我在Android上做了一个小应用,我想把它设置为试用版2天,2天后它应该会要求一个密钥。如果用户在过期日期后卸载应用程序,则在没有密钥的情况下,他将无法使用该应用程序…您需要设置一个数据库,该数据库将联机为每个设备分配一个特定的id。如果要将安装日期保存在SharedReference或任何本地内存中,用户只需清除所有应用程序数据即可将其从手机中删除。他甚至不必卸载它 因此,每次新用户安装您的应用程序时,您都需要在联机数据库中存储每个设备对应的安装日期。每次启动应用程序时,您都需要向服务器询问

我在Android上做了一个小应用,我想把它设置为试用版2天,2天后它应该会要求一个密钥。如果用户在过期日期后卸载应用程序,则在没有密钥的情况下,他将无法使用该应用程序…

您需要设置一个数据库,该数据库将联机为每个设备分配一个特定的id。如果要将安装日期保存在SharedReference或任何本地内存中,用户只需清除所有应用程序数据即可将其从手机中删除。他甚至不必卸载它


因此,每次新用户安装您的应用程序时,您都需要在联机数据库中存储每个设备对应的安装日期。每次启动应用程序时,您都需要向服务器询问与该设备相对应的安装日期,并让用户在试用期内继续,否则请他在试用期内提供密钥。

可以发布两个版本的应用程序。一个有一些限制或广告的免费版本和另一个付费版本的应用程序。

我不知道它有多安全,但你可以使用SharedReferences来存储这些数据。只是一个很小的例子:

启动时:

SharedPreferences prefs = getSharedPreferences("AppName", Context.MODE_PRIVATE);
boolean firstRun = prefs.getBoolean("first_run", true);
long currentTime = System.currentTimeMillis();
if(firstRun)
{
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("first_run", false);
    editor.putLong("first_run_time", currentTime);
    editor.commit();
}
else
{
    long firstRunTime = prefs.getLong("first_run_time", 0);
    long twoDays = 2 * 24 * 60 * 60 * 60 * 1000;
    if(currentTime - firstRunTime > twoDays)
    {
        //Expired
    }
    else
    {
        //Not yet expired
    }
}
请注意,如果用户卸载应用程序,然后重新安装,或者只是删除应用程序存储的数据,“计时器”将重置


一种更安全的方法是将这些数据存储在在线数据库中,但解决起来更复杂,而且需要一直连接互联网才能检查应用程序是否过期。

只需使用Android许可即可。这是非常直接和可怕的

任何比这更安全的东西都会带来很多麻烦。我认为大多数应用程序都不值得这么做


要获得Android设备ID,这可能会有所帮助:对于小应用程序as,在第二个活动视频视图中从一个活动切换到另一个活动查看我朋友的“示例代码”?如何建立在线数据库?或者如何定义web服务?或者,如何在应用程序每次启动时调用web服务?您没有意识到这并不是堆栈溢出的工作方式。