diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 35086ea2..3f704ba7 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -49,6 +49,9 @@
android:name="lineageos.permission.FINISH_SETUP"
android:protectionLevel="signatureOrSystem" />
+
+
diff --git a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
index 6fb36e46..da9f9b46 100644
--- a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
+++ b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
@@ -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);
}
}
diff --git a/src/org/lineageos/setupwizard/FinishActivity.java b/src/org/lineageos/setupwizard/FinishActivity.java
index 6aadea2b..74e09a41 100644
--- a/src/org/lineageos/setupwizard/FinishActivity.java
+++ b/src/org/lineageos/setupwizard/FinishActivity.java
@@ -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();
diff --git a/src/org/lineageos/setupwizard/SetupWizardApp.java b/src/org/lineageos/setupwizard/SetupWizardApp.java
index afab72d1..57c992ba 100644
--- a/src/org/lineageos/setupwizard/SetupWizardApp.java
+++ b/src/org/lineageos/setupwizard/SetupWizardApp.java
@@ -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";