package net.rdrei.android.scdl2;
import android.annotation.TargetApi;
import android.app.Application;
import android.content.pm.ApplicationInfo;
import android.os.Build;
import android.os.StrictMode;
import com.crashlytics.android.Crashlytics;
import roboguice.util.Ln;
public class SCDLApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
if (isDebuggable()) {
Ln.d("Debug mode enabled.");
// This is irrelevant on older platforms, anyway.
if (Build.VERSION.SDK_INT > 11) {
this.enableStrictMode();
}
} else {
Ln.d("Setting up Crashlytics.");
Crashlytics.start(this);
}
}
public boolean isDebuggable() {
final int applicationFlags = this.getApplicationInfo().flags;
return (applicationFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void enableStrictMode() {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
// Only on 11+
.detectLeakedClosableObjects().penaltyLog().build());
}
}