RetroMusicPlayer/app/src/main/java/code/name/monkey/retromusic/RetroApplication.java

125 lines
3.7 KiB
Java
Raw Normal View History

2018-07-27 18:37:33 +05:30
package code.name.monkey.retromusic;
2018-11-05 19:23:07 +05:30
import android.content.Context;
2018-07-27 18:37:33 +05:30
import android.os.Build;
2018-08-11 01:18:18 +05:30
2018-07-27 18:37:33 +05:30
import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
2018-08-22 23:24:07 +05:30
import com.bumptech.glide.Glide;
2018-08-11 01:18:18 +05:30
2018-09-23 15:34:43 +05:30
import androidx.annotation.NonNull;
import androidx.multidex.MultiDexApplication;
2018-08-11 01:18:18 +05:30
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager;
2018-07-27 18:37:33 +05:30
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
public class RetroApplication extends MultiDexApplication {
2018-08-11 01:18:18 +05:30
public static final String PRO_VERSION_PRODUCT_ID = "pro_version";
private static RetroApplication app;
2018-07-27 18:37:33 +05:30
2018-08-11 01:18:18 +05:30
private BillingProcessor billingProcessor;
2018-07-27 18:37:33 +05:30
2018-08-11 01:18:18 +05:30
public static RetroApplication getInstance() {
return app;
}
2018-07-27 18:37:33 +05:30
2018-11-05 19:23:07 +05:30
public static Context getContext() {
return app.getApplicationContext();
}
2018-08-11 01:18:18 +05:30
public static boolean isProVersion() {
return BuildConfig.DEBUG || app.billingProcessor.isPurchased(PRO_VERSION_PRODUCT_ID);
}
2018-07-27 18:37:33 +05:30
2018-08-11 01:18:18 +05:30
public static void deleteAppData() {
try {
// clearing app data
String packageName = app.getPackageName();
Runtime runtime = Runtime.getRuntime();
runtime.exec("pm clear " + packageName);
2018-07-27 18:37:33 +05:30
2018-08-11 01:18:18 +05:30
System.exit(0);
2018-07-27 18:37:33 +05:30
2018-08-11 01:18:18 +05:30
} catch (Exception e) {
e.printStackTrace();
}
2018-07-27 18:37:33 +05:30
}
2018-08-11 01:18:18 +05:30
@Override
public void onCreate() {
super.onCreate();
app = this;
2018-09-23 15:34:43 +05:30
setupErrorHandler();
2018-08-11 01:18:18 +05:30
// default theme
if (!ThemeStore.isConfigured(this, 1)) {
ThemeStore.editTheme(this)
.accentColorRes(R.color.md_green_A200)
.commit();
}
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/circular_std_book.otf")
.setFontAttrId(R.attr.fontPath)
.build()
);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
new DynamicShortcutManager(this).initDynamicShortcuts();
}
// automatically restores purchases
billingProcessor = new BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY,
new BillingProcessor.IBillingHandler() {
@Override
public void onProductPurchased(@NonNull String productId, TransactionDetails details) {
}
@Override
public void onPurchaseHistoryRestored() {
//Toast.makeText(App.this, R.string.restored_previous_purchase_please_restart, Toast.LENGTH_LONG).show();
}
@Override
public void onBillingError(int errorCode, Throwable error) {
}
@Override
public void onBillingInitialized() {
}
});
2018-07-27 18:37:33 +05:30
}
2018-08-11 01:18:18 +05:30
private void setupErrorHandler() {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
handleUncaughtException(thread, throwable);
}
2018-07-27 18:37:33 +05:30
});
2018-08-11 01:18:18 +05:30
}
2018-07-27 18:37:33 +05:30
2018-08-11 01:18:18 +05:30
private void handleUncaughtException(Thread thread, Throwable throwable) {
throwable.printStackTrace();
2018-09-23 15:34:43 +05:30
deleteAppData();
2018-08-11 01:18:18 +05:30
//Intent intent = new Intent(this, ErrorHandlerActivity.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//startActivity(intent);
}
2018-08-22 23:24:07 +05:30
@Override
public void onLowMemory() {
super.onLowMemory();
Glide.with(this).onLowMemory();
}
2018-08-11 01:18:18 +05:30
@Override
public void onTerminate() {
super.onTerminate();
billingProcessor.release();
}
2018-07-27 18:37:33 +05:30
}