hantering av trailversion
Så, då verkar det fungera.
Som roockie vill jag gärna ha era synpunkter. Framförallt fungerar detta som jag har tänkt? Det ska inte räcka att avinstallera appen och installera om. Skulle nån stackare göra en factoryreset så bjuder jag gladeligen på 30 dagar till 
koden är ett hopklipp av olika exempel och egen kod så den kanske inte är det vackraste men det är min andra app så jag överlever. hoppas ni gör det oxå.
Som tidigare nämnts så använder jag Android Studio och build flavors med Gradle. All kod ligger i mappen main sen har jag 2 st olika StartActivity med varsin layout. Jag väljer i "build variant" vilken app jag ska bygga.
Trail:
Kod:
package se.ollivergarden.hoppapp;
import android.app.Activity;
import android.app.backup.BackupManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Context;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Date;
/**
*
* @author Ibasto
* @version 1.0
*/
public class StartActivity extends Activity {
static final String msg = "Trail, startactivity : ";
static final Object[] sDataLock = new Object[0];
public static final String MyPREFERENCES = "file" ;
File mDataFile;
BackupManager mBackupManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(msg, " onCreate() event");
super.onCreate(savedInstanceState);
setContentView(R.layout.main_trail);
mDataFile = new File(getFilesDir(), StartActivity.MyPREFERENCES);
mBackupManager = new BackupManager(this);
launch(this);
}
public void launch(Context context){
RandomAccessFile file;
long longDate;
Date installationDate;
Date currentDate = new Date();
int diffDays = 0;
int trailPeriod = 30;
boolean notExpired = false;
synchronized (StartActivity.sDataLock) {
boolean exists = mDataFile.exists();
try {
file = new RandomAccessFile(mDataFile, "rw");
if (exists) {
Log.v(msg, "datafile exists");
longDate = file.readLong();
installationDate = new Date(longDate);
Log.v(msg, " installationDate = " + installationDate);
diffDays = ((int)((currentDate.getTime()/(24*60*60*1000))
-(int)(installationDate.getTime()/(24*60*60*1000))));
}
else {
Log.v(msg, "creating default datafile");
try {
longDate = context
.getPackageManager()
.getPackageInfo("se.ollivergarden.hoppapp", 0)
.firstInstallTime;
writeDataToFileLocked(file, longDate);
buText.setText("no Backup");
mBackupManager.dataChanged();
}
catch (PackageManager.NameNotFoundException nnf){
Log.e(msg, "NameNotFoundException: " + nnf.toString());
}
}
} catch (IOException ioe) {
Log.e(msg, "IOException: " + ioe.toString());
}
}
//Evaluation
notExpired = diffDays < trailPeriod;
Log.v(msg, "Diffdays: " + diffDays + "notExpired: " + notExpired);
//Trail period is still valid, start main activity
if ( notExpired ){
Log.d(msg, "Launch true");
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
//Trail period has ended. Show error message
else{
Log.d(msg, "Launch false");
//TODO stränghantering
Toast.makeText(StartActivity.this,
"trail period is over", Toast.LENGTH_LONG).show();
}
}
void writeDataToFileLocked(RandomAccessFile file, long instDate)throws IOException {
file.setLength(0L);
file.writeLong(instDate);
Log.v(msg, "NEW STATE: instDate=" + instDate);
}
}
Full:
Kod:
package se.ollivergarden.hoppapp;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.util.Linkify;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList;
/**
*
* @author Ibasto
* @version 1.0
*/
public class StartActivity extends Activity {
String msg = "Android, full, startActivity: ";
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(msg, "onCreate() event");
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}