Hide activities when setup finishes, so they don't pop up at the end

Change-Id: Ica6b5babf7df7a7d8033ecd7694e3f45144b363a
This commit is contained in:
Torsten Grote
2019-04-02 11:32:55 -03:00
committed by Alessandro Astone
parent 8ab720a45d
commit 799d3cb3b3
4 changed files with 33 additions and 2 deletions

View File

@@ -49,6 +49,9 @@
android:name="lineageos.permission.FINISH_SETUP"
android:protectionLevel="signatureOrSystem" />
<protected-broadcast android:name="org.lineageos.setupwizard.LINEAGE_SETUP_COMPLETE"
android:permission="lineageos.permission.FINISH_SETUP"/>
<protected-broadcast android:name="org.lineageos.setupwizard.SETUP_FINISHED"
android:permission="lineageos.permission.FINISH_SETUP"/>

View File

@@ -17,12 +17,14 @@
package org.lineageos.setupwizard;
import static android.view.View.INVISIBLE;
import static com.google.android.setupcompat.util.ResultCodes.RESULT_ACTIVITY_NOT_FOUND;
import static com.google.android.setupcompat.util.ResultCodes.RESULT_RETRY;
import static com.google.android.setupcompat.util.ResultCodes.RESULT_SKIP;
import static org.lineageos.setupwizard.SetupWizardApp.ACTION_EMERGENCY_DIAL;
import static org.lineageos.setupwizard.SetupWizardApp.ACTION_NEXT;
import static org.lineageos.setupwizard.SetupWizardApp.ACTION_SETUP_COMPLETE;
import static org.lineageos.setupwizard.SetupWizardApp.EXTRA_ACTION_ID;
import static org.lineageos.setupwizard.SetupWizardApp.EXTRA_FIRST_RUN;
import static org.lineageos.setupwizard.SetupWizardApp.EXTRA_HAS_MULTIPLE_USERS;
@@ -36,7 +38,10 @@ import android.annotation.Nullable;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.net.wifi.WifiManager;
@@ -91,6 +96,18 @@ public abstract class BaseSetupWizardActivity extends Activity implements Naviga
private boolean mIsPrimaryUser;
protected int mResultCode = 0;
private Intent mResultData;
private final BroadcastReceiver finishReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (ACTION_SETUP_COMPLETE.equals(intent.getAction())) {
if (BaseSetupWizardActivity.this instanceof FinishActivity) return;
if (mNavigationBar != null) {
// hide the activity's view, so it does not pop up again
mNavigationBar.getRootView().setVisibility(INVISIBLE);
}
}
}
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -98,6 +115,7 @@ public abstract class BaseSetupWizardActivity extends Activity implements Naviga
logActivityState("onCreate savedInstanceState=" + savedInstanceState);
}
super.onCreate(savedInstanceState);
registerReceiver(finishReceiver, new IntentFilter(ACTION_SETUP_COMPLETE));
mIsPrimaryUser = UserHandle.myUserId() == 0;
initLayout();
mNavigationBar = getNavigationBar();
@@ -169,6 +187,7 @@ public abstract class BaseSetupWizardActivity extends Activity implements Naviga
if (LOGV) {
logActivityState("onDestroy");
}
unregisterReceiver(finishReceiver);
super.onDestroy();
}
@@ -307,7 +326,7 @@ public abstract class BaseSetupWizardActivity extends Activity implements Naviga
Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
final Button next = mNavigationBar.getNextButton();
next.startAnimation(fadeOut);
next.setVisibility(View.INVISIBLE);
next.setVisibility(INVISIBLE);
}
}
@@ -515,7 +534,7 @@ public abstract class BaseSetupWizardActivity extends Activity implements Naviga
Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
final Button back = mNavigationBar.getBackButton();
back.startAnimation(fadeOut);
back.setVisibility(View.INVISIBLE);
back.setVisibility(INVISIBLE);
}
}

View File

@@ -17,6 +17,7 @@
package org.lineageos.setupwizard;
import static org.lineageos.setupwizard.SetupWizardApp.ACTION_SETUP_COMPLETE;
import static org.lineageos.setupwizard.SetupWizardApp.DISABLE_NAV_KEYS;
import static org.lineageos.setupwizard.SetupWizardApp.KEY_BUTTON_BACKLIGHT;
import static org.lineageos.setupwizard.SetupWizardApp.KEY_SEND_METRICS;
@@ -45,6 +46,9 @@ import org.lineageos.setupwizard.util.EnableAccessibilityController;
import lineageos.providers.LineageSettings;
import static android.os.Binder.getCallingUserHandle;
import static org.lineageos.setupwizard.Manifest.permission.FINISH_SETUP;
public class FinishActivity extends BaseSetupWizardActivity {
public static final String TAG = FinishActivity.class.getSimpleName();
@@ -100,6 +104,10 @@ public class FinishActivity extends BaseSetupWizardActivity {
}
private void startFinishSequence() {
Intent i = new Intent(ACTION_SETUP_COMPLETE);
i.setPackage(getPackageName());
sendBroadcastAsUser(i, getCallingUserHandle(), FINISH_SETUP);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
hideBackButton();
hideNextButton();

View File

@@ -35,6 +35,7 @@ public class SetupWizardApp extends Application {
/* Verbose Logging */
public static final boolean LOGV = Log.isLoggable(TAG, Log.VERBOSE);
public static final String ACTION_SETUP_COMPLETE = "org.lineageos.setupwizard.LINEAGE_SETUP_COMPLETE";
public static final String ACTION_FINISHED = "org.lineageos.setupwizard.SETUP_FINISHED";
public static final String ACTION_SETUP_WIFI = "android.net.wifi.PICK_WIFI_NETWORK";
public static final String ACTION_SETUP_FINGERPRINT = "android.settings.FINGERPRINT_SETUP";