如何使Android应用程序仅在某个试用期内工作

时间:2012-02-02 14:21:20

标签: android trialware

我的应用程序应该只能工作30天或几天。

这只是一个简单的应用程序,其中播放了一些音频文件,对应于显示一些文本的图像。

2 个答案:

答案 0 :(得分:3)

只有一种方法可以真正实现这一目标:

  

你必须设置一个   服务器,然后每当您的应用程序启动时您的应用程序发送   电话服务器的唯一标识符。如果服务器没有   有一个该手机ID的条目,然后它创建一个新的并注意到   时间。如果服务器确实有一个电话ID的条目,那么它会   简单检查一下试用期是否已经过期。然后呢   将试用期限检查的结果传回给您   应用。这种方法不应该是可以绕过的,但确实如此   需要建立一个网络服务器等。

还有其他方法(例如在某处存储安装日期),但如果用户卸载您的应用程序,该信息将会消失,当他重新安装时,无法知道他之前是否安装过。

编辑: 好的,既然你想用SharedPreferences方式,这是一个例子:

private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
private final long ONE_DAY = 24 * 60 * 60 * 1000;

@Override
protected void onCreate(Bundle state){
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    String installDate = preferences.getString("InstallDate", null);
    if(installDate == null) {
        // First run, so save the current date
        SharedPreferences.Editor editor = preferences.edit();
        Date now = new Date();
        String dateString = formatter.format(now);
        editor.putString("InstallDate", dateString);
        // Commit the edits!
        editor.commit();
    }
    else {
        // This is not the 1st run, check install date
        Date before = (Date)formatter.parse(installDate);
        Date now = new Date();
        long diff = now.getTimeInMillis() - before.getTimeInMillis();
        long days = diff / ONE_DAY;
        if(days > 30) { // More than 30 days?
             // Expired !!!
        }
    }

    ...
}

我没有编译这个,但应该给你一个想法。

答案 1 :(得分:1)

Here是一个非常好的答案

引用原作者 - snctnl

  

目前大多数开发人员使用以下3之一完成此任务   技术。

     

第一种方法很容易被绕开,第一次运行时   应用程序将日期/时间保存到文件,数据库或共享首选项和   每次运行应用程序后,检查是否试用期   结束了。这很容易规避,因为卸载和   重新安装将允许用户有另一个试用期。

     

第二种方法难以规避,但仍然可以绕过。   使用硬编码定时炸弹。基本上你会采用这种方法   硬编码试用的结束日期,以及下载和的所有用户   使用该应用程序将停止能够同时使用该应用程序。一世   使用这种方法,因为它易于实现和   大多数情况下,我只是不想经历的麻烦   第三种技术。用户可以通过手动更改来避免这种情况   在他们的手机上约会,但大多数用户不会经历麻烦   这样的事情。

     

第三种技术是我真正听说过的唯一方法   能够完成你想做的事。你将不得不设置一个   服务器,然后每当您的应用程序启动时您的应用程序发送   电话服务器的唯一标识符。如果服务器没有   有一个该手机ID的条目,然后它创建一个新的并注意到   时间。如果服务器确实有一个电话ID的条目,那么它会   简单检查一下试用期是否已经过期。然后呢   将试用期限检查的结果传回给您   应用。这种方法不应该是可以绕过的,但确实如此   需要建立一个网络服务器等。

     

在onCreate中执行这些检查始终是一种好习惯。如果   到期已经结束弹出一个AlertDialog与市场链接   完整版的应用程序。只包括一个“确定”按钮,并且一次   用户点击“确定”调用“结束()”以结束活动。