57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
package com.example.onetap_ssh;
|
|
|
|
import android.content.res.Configuration;
|
|
import android.os.Bundle;
|
|
import android.view.WindowManager;
|
|
|
|
import androidx.activity.result.ActivityResultLauncher;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
|
import com.example.onetap_ssh.unlock.UnlockContract;
|
|
import com.example.onetap_ssh.util.AppLocale;
|
|
import com.example.onetap_ssh.util.SettingsUtil;
|
|
import com.example.onetap_ssh.util.ThemeUtil;
|
|
|
|
import java.util.Locale;
|
|
|
|
public class BaseActivity extends AppCompatActivity {
|
|
|
|
private ActivityResultLauncher<Void> startUnlockActivity;
|
|
|
|
private Runnable unlockSuccess, unlockFailure;
|
|
|
|
@Override
|
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
registerCallbacks();
|
|
|
|
if(SettingsUtil.isScreenSecurity(this)) {
|
|
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
|
|
}
|
|
|
|
ThemeUtil.loadTheme(this);
|
|
setLocale(SettingsUtil.getLocale(this));
|
|
}
|
|
|
|
private void registerCallbacks() {
|
|
startUnlockActivity = registerForActivityResult(new UnlockContract(), success -> {
|
|
if(success && unlockSuccess != null) unlockSuccess.run();
|
|
if(!success && unlockFailure != null) unlockFailure.run();
|
|
});
|
|
}
|
|
|
|
public void promptUnlock(Runnable success, Runnable failure) {
|
|
unlockSuccess = success;
|
|
unlockFailure = failure;
|
|
startUnlockActivity.launch(null);
|
|
}
|
|
|
|
public void setLocale(AppLocale locale) {
|
|
Configuration config = new Configuration();
|
|
config.setLocale(locale == AppLocale.SYSTEM_DEFAULT ? Locale.getDefault() : locale.getLocale());
|
|
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
|
|
}
|
|
|
|
}
|