mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2025-01-30 09:03:37 -05:00
389 lines
17 KiB
Diff
389 lines
17 KiB
Diff
From 488e469493fc3a748ef2e517732382b82d129b09 Mon Sep 17 00:00:00 2001
|
|
From: Tad <tad@spotco.us>
|
|
Date: Wed, 25 Jan 2017 10:33:07 -0500
|
|
Subject: [PATCH] Nuke GMS
|
|
|
|
Change-Id: I898d6456f30be064a92bf59db4c0a5b8a2c02026
|
|
---
|
|
.../setupwizard/setup/CMSetupWizardData.java | 7 +-
|
|
.../setupwizard/setup/GmsAccountPage.java | 321 ---------------------
|
|
.../setupwizard/ui/SetupWizardActivity.java | 9 -
|
|
3 files changed, 1 insertion(+), 336 deletions(-)
|
|
delete mode 100644 src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
|
|
|
|
diff --git a/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java b/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java
|
|
index 5c90b4e..a97e217 100644
|
|
--- a/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java
|
|
+++ b/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java
|
|
@@ -70,12 +70,7 @@ public class CMSetupWizardData extends AbstractSetupData {
|
|
pages.add(new MobileDataPage(mContext, this)
|
|
.setHidden(!isSimInserted() || mMobileDataEnabled));
|
|
}
|
|
- final boolean hasGMS = PackageManagerUtils
|
|
- .isAppInstalled(mContext, "com.google.android.gms");
|
|
- if (hasGMS) {
|
|
- pages.add(new GmsAccountPage(mContext, this));
|
|
- }
|
|
- pages.add(new OtherSettingsPage(mContext, this).setHidden(!hasGMS));
|
|
+ pages.add(new OtherSettingsPage(mContext, this));
|
|
if (SetupWizardUtils.hasFingerprint(mContext) && SetupWizardUtils.isOwner()) {
|
|
pages.add(new FingerprintSetupPage(mContext, this));
|
|
}
|
|
diff --git a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
|
|
deleted file mode 100644
|
|
index aec3da2..0000000
|
|
--- a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
|
|
+++ /dev/null
|
|
@@ -1,321 +0,0 @@
|
|
-/*
|
|
- * Copyright (C) 2013 The CyanogenMod Project
|
|
- * Copyright (C) 2017 The LineageOS Project
|
|
- *
|
|
- * Licensed under the Apache License, Version 2.0 (the "License");
|
|
- * you may not use this file except in compliance with the License.
|
|
- * You may obtain a copy of the License at
|
|
- *
|
|
- * http://www.apache.org/licenses/LICENSE-2.0
|
|
- *
|
|
- * Unless required by applicable law or agreed to in writing, software
|
|
- * distributed under the License is distributed on an "AS IS" BASIS,
|
|
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
- * See the License for the specific language governing permissions and
|
|
- * limitations under the License.
|
|
- */
|
|
-
|
|
-package com.cyanogenmod.setupwizard.setup;
|
|
-
|
|
-import android.accounts.AccountManager;
|
|
-import android.accounts.AccountManagerCallback;
|
|
-import android.accounts.AccountManagerFuture;
|
|
-import android.accounts.AuthenticatorException;
|
|
-import android.accounts.OperationCanceledException;
|
|
-import android.app.Activity;
|
|
-import android.app.ActivityOptions;
|
|
-import android.app.Fragment;
|
|
-import android.app.FragmentManager;
|
|
-import android.content.Context;
|
|
-import android.content.Intent;
|
|
-import android.content.pm.PackageManager;
|
|
-import android.os.Bundle;
|
|
-import android.service.persistentdata.PersistentDataBlockManager;
|
|
-import android.util.Log;
|
|
-
|
|
-import com.android.setupwizardlib.util.ResultCodes;
|
|
-import com.cyanogenmod.setupwizard.R;
|
|
-import com.cyanogenmod.setupwizard.SetupWizardApp;
|
|
-import com.cyanogenmod.setupwizard.ui.LoadingFragment;
|
|
-import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
|
|
-
|
|
-import java.io.IOException;
|
|
-
|
|
-public class GmsAccountPage extends SetupPage {
|
|
-
|
|
- public static final String TAG = "GmsAccountPage";
|
|
-
|
|
- public static final String ACTION_RESTORE = "com.google.android.setupwizard.RESTORE";
|
|
- public static final String ACTION_PROGRESS = "com.google.android.setupwizard.PROGRESS";
|
|
- public static final String ACTION_VENDOR_SETUP = "com.google.android.setupwizard.VENDOR_SETUP";
|
|
- public static final String RESTORE_ACTION_ID = "mfm_restore_start";
|
|
- public static final String RESTORE_CHECK_ID = "restore_check";
|
|
- public static final String FRAGMENT_START_RESTORE =
|
|
- "com.google.android.setupwizard.account.StartRestoreFragment";
|
|
- public static final String FRAGMENT_CHECK_RESTORE =
|
|
- "com.google.android.setupwizard.account.CheckRestoreTokenFragment";
|
|
-
|
|
- public static final String EXTRA_AUTH_ACCOUNT = "authAccount";
|
|
- public static final String EXTRA_RESTORE_ACCOUNT = "restoreAccount";
|
|
- public static final String EXTRA_RESTORE_TOKEN = "restoreToken";
|
|
-
|
|
- private static final String RESTORE_WIZARD_SCRIPT =
|
|
- "android.resource://com.google.android.setupwizard/xml/wizard_script";
|
|
-
|
|
- private Fragment mFragment;
|
|
-
|
|
- public GmsAccountPage(final Context context, SetupDataCallbacks callbacks) {
|
|
- super(context, callbacks);
|
|
- }
|
|
-
|
|
- @Override
|
|
- public Fragment getFragment(FragmentManager fragmentManager, int action) {
|
|
- mFragment = fragmentManager.findFragmentByTag(getKey());
|
|
- if (mFragment == null) {
|
|
- Bundle args = new Bundle();
|
|
- args.putString(Page.KEY_PAGE_ARGUMENT, getKey());
|
|
- args.putInt(Page.KEY_PAGE_ACTION, action);
|
|
- mFragment = new LoadingFragment();
|
|
- mFragment.setArguments(args);
|
|
- }
|
|
- return mFragment;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public String getKey() {
|
|
- return TAG;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public int getTitleResId() {
|
|
- return R.string.loading;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public int getIconResId() {
|
|
- return -1;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public int getNextButtonTitleResId() {
|
|
- return R.string.skip;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void doLoadAction(FragmentManager fragmentManager, int action) {
|
|
- if (action == Page.ACTION_PREVIOUS) {
|
|
- getCallbacks().onPreviousPage();
|
|
- } else {
|
|
- super.doLoadAction(fragmentManager, action);
|
|
- if (!SetupWizardUtils.isNetworkConnected(mContext) && !SetupWizardUtils.frpEnabled(mContext)) {
|
|
- if (SetupWizardApp.DEBUG) {
|
|
- Log.d(TAG, "No network, no FRP enforcement, skip GMS account");
|
|
- }
|
|
- getCallbacks().onNextPage();
|
|
- } else if (!SetupWizardUtils.accountExists(mContext, SetupWizardApp.ACCOUNT_TYPE_GMS)) {
|
|
- launchGmsAccountSetup();
|
|
- } else {
|
|
- // This can happen if the user goes from setup -> restore, but chooses to set
|
|
- // their device up as "new". Thus we need to not re-prompt this entire flow,
|
|
- // skip ahead. CYNGNOS-2459
|
|
- if (SetupWizardApp.DEBUG) {
|
|
- Log.d(TAG, "Google account already setup, skip gms setup");
|
|
- }
|
|
- setHidden(true);
|
|
- getCallbacks().onNextPage();
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- @Override
|
|
- public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
- if (SetupWizardApp.DEBUG) {
|
|
- Log.d(TAG, "Received activity result from requestCode " + requestCode
|
|
- + " with a resultCode of " + resultCode);
|
|
- if (data != null) {
|
|
- Bundle extras = data.getExtras();
|
|
- Log.d(TAG, "Within the activity result there were extras:");
|
|
- for (String extra : extras.keySet()) {
|
|
- Log.d(TAG, "The key " + extra + " has a value of " + extras.get(extra));
|
|
- }
|
|
- }
|
|
- }
|
|
- if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS &&
|
|
- resultCode == ResultCodes.RESULT_SKIP) {
|
|
- launchGmsVendorSetup();
|
|
- } else if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS && data != null) {
|
|
- if (SetupWizardUtils.isOwner() && resultCode == Activity.RESULT_OK) {
|
|
-
|
|
- // If we don't have a restore token and a restore account, then we need to
|
|
- // prompt with the restore picker from googles setup wizard so the user
|
|
- // can select what device they would like to restore from. Otherwise,
|
|
- // we're coming from a Tap&Go scenario and we should just restore.
|
|
- boolean restorePicker = !data.hasExtra(EXTRA_RESTORE_TOKEN)
|
|
- && !data.hasExtra(EXTRA_RESTORE_ACCOUNT) &&
|
|
- data.hasExtra(EXTRA_AUTH_ACCOUNT);
|
|
-
|
|
- launchGmsRestorePage(restorePicker);
|
|
- } else {
|
|
- handleResult(requestCode, resultCode);
|
|
- }
|
|
- } else {
|
|
- if (requestCode == SetupWizardApp.REQUEST_CODE_RESTORE_GMS) {
|
|
- setHidden(true);
|
|
- }
|
|
- handleResult(requestCode, resultCode);
|
|
- }
|
|
- return true;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public boolean doNextAction() {
|
|
- final boolean canSkip = canSkip();
|
|
- // return true to force this page to handle the next action.
|
|
- return !canSkip;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onFinishSetup() {
|
|
-
|
|
- }
|
|
-
|
|
- private void handleResult(int requestCode, int resultCode) {
|
|
- if (resultCode == Activity.RESULT_CANCELED) {
|
|
- getCallbacks().onPreviousPage();
|
|
- } else {
|
|
- if (resultCode == Activity.RESULT_OK) {
|
|
- getCallbacks().onNextPage();
|
|
- } else {
|
|
- if (canSkip()) {
|
|
- getCallbacks().onNextPage();
|
|
- } else {
|
|
- getCallbacks().onPreviousPage();
|
|
- }
|
|
- }
|
|
- if (SetupWizardUtils.accountExists(mContext, SetupWizardApp.ACCOUNT_TYPE_GMS)) {
|
|
- setHidden(true);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- private void launchGmsRestorePage(boolean restorePicker) {
|
|
- if (SetupWizardApp.DEBUG) {
|
|
- Log.d(TAG, "Launching gms restore page with restorePicker " + restorePicker);
|
|
- }
|
|
- try {
|
|
- // GMS can disable this after logging in sometimes
|
|
- if (SetupWizardUtils.enableGMSSetupWizard(mContext)) {
|
|
- Intent intent = new Intent(ACTION_PROGRESS);
|
|
- if (!restorePicker) {
|
|
- intent.setAction(ACTION_PROGRESS);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_FRAGMENT, FRAGMENT_START_RESTORE);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_ACTION_ID, RESTORE_ACTION_ID);
|
|
- } else {
|
|
- intent.setAction(ACTION_PROGRESS);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_ACTION_ID, RESTORE_CHECK_ID);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_FRAGMENT, FRAGMENT_CHECK_RESTORE);
|
|
- }
|
|
- intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
|
|
- // XXX: Fool G's setup wizard into thinking it is their setup wizard.
|
|
- // This is necessary to get the material theme on the restore page.
|
|
- intent.putExtra("scriptUri", RESTORE_WIZARD_SCRIPT);
|
|
- ActivityOptions options =
|
|
- ActivityOptions.makeCustomAnimation(mContext,
|
|
- android.R.anim.fade_in,
|
|
- android.R.anim.fade_out);
|
|
- mFragment.startActivityForResult(
|
|
- intent,
|
|
- SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
|
|
- return;
|
|
- }
|
|
- } catch (Exception e) {
|
|
- e.printStackTrace();
|
|
- // XXX: In open source, we don't know what gms version a user has.
|
|
- // Bail if the restore activity is not found.
|
|
- getCallbacks().onNextPage();
|
|
- }
|
|
- }
|
|
-
|
|
- private void launchGmsVendorSetup() {
|
|
- if (SetupWizardApp.DEBUG) {
|
|
- Log.d(TAG, "Launching gms vendor setup page");
|
|
- }
|
|
- try {
|
|
- Intent intent = new Intent(ACTION_VENDOR_SETUP);
|
|
- intent.setPackage(SetupWizardUtils.GOOGLE_SETUPWIZARD_PACKAGE);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
|
- intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
|
|
- ActivityOptions options =
|
|
- ActivityOptions.makeCustomAnimation(mContext,
|
|
- android.R.anim.fade_in,
|
|
- android.R.anim.fade_out);
|
|
- mFragment.startActivityForResult(
|
|
- intent,
|
|
- SetupWizardApp.REQUEST_CODE_VENDOR_SETUP_GMS, options.toBundle());
|
|
- return;
|
|
- } catch (Exception e) {
|
|
- // Move on if the vendor setup activity is not found.
|
|
- getCallbacks().onNextPage();
|
|
- }
|
|
- }
|
|
-
|
|
- public boolean canSkip() {
|
|
- final PersistentDataBlockManager pdbManager = (PersistentDataBlockManager)
|
|
- mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
|
|
- return pdbManager == null
|
|
- || pdbManager.getDataBlockSize() == 0
|
|
- || pdbManager.getOemUnlockEnabled();
|
|
- }
|
|
-
|
|
- private void launchGmsAccountSetup() {
|
|
- if (SetupWizardApp.DEBUG) {
|
|
- Log.d(TAG, "Launching gms account page");
|
|
- }
|
|
- Bundle bundle = new Bundle();
|
|
- bundle.putBoolean(SetupWizardApp.EXTRA_FIRST_RUN, true);
|
|
- bundle.putBoolean(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
|
|
- bundle.putBoolean(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
|
|
- bundle.putBoolean(SetupWizardApp.EXTRA_SUPRESS_D2D_SETUP, true);
|
|
-
|
|
- AccountManager
|
|
- .get(mContext).addAccount(SetupWizardApp.ACCOUNT_TYPE_GMS, null, null,
|
|
- bundle, null, new AccountManagerCallback<Bundle>() {
|
|
- @Override
|
|
- public void run(AccountManagerFuture<Bundle> future) {
|
|
- boolean error = false;
|
|
- try {
|
|
- Bundle result = future.getResult();
|
|
- Intent intent = result
|
|
- .getParcelable(AccountManager.KEY_INTENT);
|
|
- ActivityOptions options =
|
|
- ActivityOptions.makeCustomAnimation(mContext,
|
|
- android.R.anim.fade_in,
|
|
- android.R.anim.fade_out);
|
|
- mFragment.startActivityForResult(intent,
|
|
- SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
|
|
- } catch (OperationCanceledException e) {
|
|
- error = true;
|
|
- } catch (IOException e) {
|
|
- error = true;
|
|
- } catch (AuthenticatorException e) {
|
|
- Log.e(TAG, "Error launching gms account", e);
|
|
- error = true;
|
|
- } finally {
|
|
- if (error && getCallbacks().
|
|
- isCurrentPage(GmsAccountPage.this)) {
|
|
- if (canSkip()) {
|
|
- getCallbacks().onNextPage();
|
|
- } else {
|
|
- getCallbacks().onPreviousPage();
|
|
- }
|
|
- }
|
|
- }
|
|
- }
|
|
- }, null);
|
|
- }
|
|
-}
|
|
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
|
|
index 6cc651a..c027c06 100644
|
|
--- a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
|
|
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
|
|
@@ -46,7 +46,6 @@ import com.android.setupwizardlib.util.SystemBarHelper;
|
|
import com.cyanogenmod.setupwizard.R;
|
|
import com.cyanogenmod.setupwizard.SetupWizardApp;
|
|
import com.cyanogenmod.setupwizard.setup.CMSetupWizardData;
|
|
-import com.cyanogenmod.setupwizard.setup.GmsAccountPage;
|
|
import com.cyanogenmod.setupwizard.setup.Page;
|
|
import com.cyanogenmod.setupwizard.setup.SetupDataCallbacks;
|
|
import com.cyanogenmod.setupwizard.util.EnableAccessibilityController;
|
|
@@ -143,14 +142,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
|
|
Settings.Secure.BACKUP_AUTO_RESTORE, 0) == 1) ||
|
|
(Settings.Secure.getInt(getContentResolver(),
|
|
Settings.Secure.BACKUP_ENABLED, 0) == 1);
|
|
- if (TextUtils.equals(lastPage, GmsAccountPage.TAG) && backupEnabled) {
|
|
- // We probably already restored, skip ahead!
|
|
- mSetupData.setCurrentPage(mSetupData.getNextPage(lastPage).getKey());
|
|
- } else {
|
|
- // else just restore
|
|
- mSetupData.setCurrentPage(sharedPreferences.getString(KEY_LAST_PAGE_TAG,
|
|
- mSetupData.getCurrentPage().getKey()));
|
|
- }
|
|
Page page = mSetupData.getCurrentPage();
|
|
page.doLoadAction(getFragmentManager(), Page.ACTION_NEXT);
|
|
}
|
|
--
|
|
2.9.3
|
|
|