Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
habitica;
import com.amplitude.api.Amplitude;
import com.facebook.FacebookSdk;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.habitrpg.android.habitica.components.AppComponent;
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
import com.habitrpg.android.habitica.ui.activities.IntroActivity;
import com.habitrpg.android.habitica.ui.activities.LoginActivity;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import org.solovyev.android.checkout.Billing;
import org.solovyev.android.checkout.Cache;
import org.solovyev.android.checkout.Checkout;
import org.solovyev.android.checkout.PurchaseVerifier;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.multidex.MultiDexApplication;
import android.util.Log;
import java.io.File;
import java.lang.reflect.Field;
import javax.inject.Inject;
import dagger.Lazy;
getInstance(context).lazyApiHelper.get().updateAuthenticationCredentials(null,
null);
startActivity(LoginActivity.class, context);
}
return false;
}
return true;
}
@Override
public void onCreate() {
super.onCreate();
if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
setupDagger();
crashlyticsProxy.init(this);
setupLeakCanary();
setupFlowManager();
setupFacebookSdk();
createBillingAndCheckout();
registerActivityLifecycleCallbacks();
if (!BuildConfig.DEBUG) {
try {
Amplitude.getInstance().initialize(this,
getString(R.string.amplitude_app_id)).enableForegroundTracking(this);
} catch (Resources.NotFoundException e) {
//pass
}
}
Fresco.initialize(this);
checkIfNewVersion();
}
if (info == null) {
return;
}
apiHelper.apiService.getContent(apiHelper.languageCode)
.compose(this.lazyApiHelper.get().configureApiCallObserver())
.subscribe(contentResult -> {
}, throwable -> {
});
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
HabiticaBaseApplication.currentActivity = activity;
}
@Override
public void onActivityPaused(Activity activity) {
@Override
public void onActivityStopped(Activity activity) {
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle
outState) {
@Override
public void onActivityDestroyed(Activity activity) {
if (currentActivity == activity)
currentActivity = null;
}
});
}
@Override
public SQLiteDatabase openOrCreateDatabase(String name,
int mode,
SQLiteDatabase.CursorFactory factory) {
return super.openOrCreateDatabase(getDatabasePath(name).getAbsolutePath(),
mode, factory);
}
@Override
public SQLiteDatabase openOrCreateDatabase(String name,
int mode,
SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) {
return super.openOrCreateDatabase(getDatabasePath(name).getAbsolutePath(),
mode, factory, errorHandler);
}
// endregion
@Override
public boolean deleteDatabase(String name) {
if (!name.endsWith(".db")) {
name += ".db";
}
FlowManager.destroy();
reflectionHack(getApplicationContext());
boolean deleted =
super.deleteDatabase(getDatabasePath(name).getAbsolutePath());
if (deleted) {
Log.i("hack", "Database deleted");
} else {
Log.e("hack", "Database not deleted");
}
if (exists(getApplicationContext())) {
Log.i("hack", "Database exists before FlowManager.init");
} else {
Log.i("hack", "Database does not exist before FlowManager.init");
}
return deleted;
}
try {
Field field = FlowManager.class.getDeclaredField("mDatabaseHolder");
setFinalStatic(field, null);
} catch (NoSuchFieldException noSuchField) {
Log.e("nosuchfield", "No such field exists in FlowManager",
noSuchField);
} catch (IllegalAccessException illegalAccess) {
Log.e("illegalaccess", "Illegal access of FlowManager", illegalAccess);
}
FlowManager.init(context);
if (exists(context)) {
Log.i("Database", "Database exists after FlowManager.init with
reflection hack");
} else {
Log.i("Database", "Database does not exist after FlowManager.init with
reflection hack");
}
}
@Override
public File getDatabasePath(String name) {
File dbFile = new File(getExternalFilesDir(null), "HabiticaDatabase/" +
name);
//Crashlytics.setString("Database File", dbFile.getAbsolutePath());
return dbFile;
}
@Nullable
@Override
public Cache getCache() {
return Billing.newCache();
}
@Override
public PurchaseVerifier getPurchaseVerifier() {
return new HabiticaPurchaseVerifier(HabiticaBaseApplication.this,
lazyApiHelper.get());
}
});
checkout = Checkout.forApplication(billing);
}
@NonNull
public Checkout getCheckout() {
return checkout;
}
// endregion