Validação TRIAL para APP

Boa tarde pessoal, estou trabalhando em um app Android para uma empresa, me pediram para colocar um validador de data, teria que funcionar até a data especificada na codificação, após isso tera que apresentar uma mensagem com instruções de compra, estou tentando utilizando a função GregorianCalendar, mas independente da data que coloco o APP esta iniciando normalmente e não esta apresentando a mensagem de aviso. A chamada do método esta no splash, segue o método abaixo. Desde já muito obrigado.

private void validador(){
	
	//Validação simples para TRIAL
	try {
	      if (new Date(0).after(new GregorianCalendar(2015,11,1).getTime())) { //Define a data de expiração
	         AlertDialog.Builder ad = new AlertDialog.Builder(this);
	         ad.setTitle("App Teste");
	         ad.setMessage("O tempo de avaliação está expirado. entre em contato para adiquirir a versão final.");
	         ad.setPositiveButton("Contratar", new DialogInterface.OnClickListener() {
	            public void onClick(DialogInterface dialog, int whichButton) {
	               Intent i = new Intent(Intent.ACTION_VIEW, 
	                                             Uri.parse("http://www.teste.com.br"));
	               startActivity(i);
	               finish();
	            }
	          }).show();
	        }
	     } catch (Exception e) { /* handle any exceptions */ 
	    	 return; 
	     }
	
}

RESOLVIDO -

Coloquei a linha e o problema foi solucionado, estava comparando com date que já foi descontinuado:
if (new GregorianCalendar().after(new GregorianCalendar(2015,11,24)))

Só um detalhe, Nesse tipo de validação é verificado a data no SO. Sendo assim se o usuário alterar a data (para uma data anterior) ele conseguirá utilizar o app sem problemas.

Para uma validação mais efetiva é interessante que seja verificada a data de um servidor em comparação a um parâmetro de dataLimite definido durante a instalação do app.

fica a dica :wink:

Bem colocado Diego_Melo, nunca trabalhei com esse tipo de validação, recomenda algum servidor para fazer a verificação? e como implementar? o servidor é chamado no lugar do GregorianCalendar?
Desde já obrigado

o seu app não se comunica com nenhum server?

Se sim você simplesmente obtém a data desse server.

O App não tem necessidade de se comunicar com um server, mas se for possível a comunicação só para validar a data/hora seria bem interessante.

eu tava pesquisando uma para sobre datas aqui e acabei descobrindo esse site

Ali você consegue informações de data e hora de qualquer lugar do mundo.
É perfeito pro seu caso, pois você não precisa esquentar a cabeça de ter que levantar um server só para isso :sunglasses:

Bom dia Diego, voltei a mexer com o projeto em questão, na verdade pensando sobre a situação que você me indicou creio que não seja viável no meu caso pois o app terá que trabalhar mesmo na ausência de internet, assim a conexão com um servidor externo não vai resolver.
Pensando nisso estou tentando fazer uma validação gravando a data do primeiro acesso em um arquivo texto e assim fazer o controle partindo desse arquivo, só que não estou tendo muito sucesso, ele cria o arquivo em branco.
segue o código abaixo:

public void validadorTeste() throws Exception{
String arquivo = “mobile.dat”;
File f = new File(Environment.getExternalStorageDirectory()+ “/” + arquivo);
FileOutputStream arquivoGravar = new FileOutputStream(f);
BufferedReader br = new BufferedReader(new FileReader(f));
String linha = br.readLine();

	if  (linha.isEmpty()){
		Date dataArquivo = formataData(linha);
		Date data = new GregorianCalendar().getTime();
		int result = dataArquivo.compareTo(data);
		if (result > 1){
			AlertDialog.Builder ad = new AlertDialog.Builder(this);
	         ad.setTitle("Teste");
	         ad.setMessage("O tempo de avaliação está expirado..");
	         ad.setPositiveButton("Fechar", new DialogInterface.OnClickListener() {
	            public void onClick(DialogInterface dialog, int whichButton) {
	            finish();      
	            }
	          }).show();	
		}
		return;
		
	}else{
		Date data = new GregorianCalendar().getTime();
		SimpleDateFormat formataData = new SimpleDateFormat("dd/MM/yyyy");
		String conteudoArquivo = formataData.format(data);
		arquivoGravar.write(conteudoArquivo.getBytes());
		arquivoGravar.flush();
		arquivoGravar.close();
	}
	br.close();
	
}

Teria que criar o arquivo caso não exista, caso exista verificar se está vazio, caso esteja terá que gravar a data do dia no arquivo. No segundo if que acho que estou meio perdido com o compareTo, pois ali eu faço a leitura do conteúdo do arquivo, converto para date e faço a comparação. Gostaria de ter a quantidade de dias entre as determinadas datas, assim conseguiria limitar o uso da demo ex: para 15 dias.