Skip to content
Snippets Groups Projects
BriarActivity.java 2.84 KiB
Newer Older
  • Learn to ignore specific revisions
  • package org.briarproject.android;
    
    
    import android.annotation.SuppressLint;
    import android.content.Intent;
    
    import android.os.Build;
    
    import org.briarproject.android.controller.BriarController;
    
    akwizgran's avatar
    akwizgran committed
    import org.briarproject.android.controller.DbController;
    
    Ernir Erlingsson's avatar
    Ernir Erlingsson committed
    import org.briarproject.android.controller.handler.UiResultHandler;
    
    import org.briarproject.android.panic.ExitActivity;
    
    import java.util.logging.Logger;
    
    import javax.inject.Inject;
    
    
    import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
    import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
    import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
    
    import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
    import static android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP;
    
    public abstract class BriarActivity extends BaseActivity {
    
    
    	public static final String KEY_LOCAL_AUTHOR_HANDLE =
    			"briar.LOCAL_AUTHOR_HANDLE";
    
    	public static final String KEY_STARTUP_FAILED = "briar.STARTUP_FAILED";
    
    	public static final String GROUP_ID = "briar.GROUP_ID";
    
    	public static final int REQUEST_PASSWORD = 1;
    
    
    	private static final Logger LOG =
    			Logger.getLogger(BriarActivity.class.getName());
    
    
    	@Inject
    	protected BriarController briarController;
    
    	// TODO remove this when the deprecated method runOnDbThread is removed
    	@Inject
    
    akwizgran's avatar
    akwizgran committed
    	protected DbController dbController;
    
    	protected void onActivityResult(int request, int result, Intent data) {
    
    		super.onActivityResult(request, result, data);
    
    		if (request == REQUEST_PASSWORD) {
    
    			if (result == RESULT_OK) briarController.startAndBindService();
    
    	@Override
    	public void onResume() {
    		super.onResume();
    
    		if (!briarController.hasEncryptionKey() && !isFinishing()) {
    
    			Intent i = new Intent(this, PasswordActivity.class);
    			i.setFlags(FLAG_ACTIVITY_NO_ANIMATION | FLAG_ACTIVITY_SINGLE_TOP);
    			startActivityForResult(i, REQUEST_PASSWORD);
    		}
    	}
    
    
    	protected void signOut(final boolean removeFromRecentApps) {
    
    Ernir Erlingsson's avatar
    Ernir Erlingsson committed
    		briarController.signOut(new UiResultHandler<Void>(this) {
    
    Ernir Erlingsson's avatar
    Ernir Erlingsson committed
    			public void onResultUi(Void result) {
    
    				if (removeFromRecentApps) startExitActivity();
    				else finishAndExit();
    
    	protected void signOut() {
    		signOut(false);
    	}
    
    
    	private void startExitActivity() {
    
    akwizgran's avatar
    akwizgran committed
    		Intent i = new Intent(this, ExitActivity.class);
    		i.addFlags(FLAG_ACTIVITY_NEW_TASK
    
    				| FLAG_ACTIVITY_NO_ANIMATION
    				| FLAG_ACTIVITY_CLEAR_TASK);
    
    akwizgran's avatar
    akwizgran committed
    		startActivity(i);
    
    	private void finishAndExit() {
    
    		if (Build.VERSION.SDK_INT >= 21) finishAndRemoveTask();
    		else finish();
    		LOG.info("Exiting");
    		System.exit(0);
    
    Ernir Erlingsson's avatar
    Ernir Erlingsson committed
    	@Deprecated
    
    	public void runOnDbThread(Runnable task) {
    
    		dbController.runOnDbThread(task);
    
    Ernir Erlingsson's avatar
    Ernir Erlingsson committed
    	@Deprecated
    
    	protected void finishOnUiThread() {
    		runOnUiThread(new Runnable() {
    
    akwizgran's avatar
    akwizgran committed
    			@Override
    
    			public void run() {
    				finish();
    			}
    		});
    	}