| /* |
| * Copyright (C) 2013 The CyanogenMod 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.tests; |
| |
| |
| import android.app.Activity; |
| import android.app.ActivityManager; |
| import android.content.ComponentName; |
| import android.content.Context; |
| import android.content.Intent; |
| import android.content.pm.ComponentInfo; |
| import android.content.pm.PackageInfo; |
| import android.content.pm.PackageManager; |
| import android.os.Bundle; |
| import android.provider.Settings; |
| import android.view.View; |
| import android.widget.Toast; |
| |
| import cyanogenmod.providers.CMSettings; |
| |
| public class ManualTestActivity extends Activity { |
| |
| public void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| setContentView(R.layout.cmaccount_test); |
| |
| findViewById(R.id.enable_setup).setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View view) { |
| enableSetup(); |
| } |
| }); |
| findViewById(R.id.enable_google_setup).setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View view) { |
| enableGoogleSetup(); |
| } |
| }); |
| findViewById(R.id.setup_complete_flag).setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View view) { |
| setSetupComplete(); |
| } |
| }); |
| } |
| |
| private void enableSetup() { |
| Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0); |
| Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 0); |
| CMSettings.Secure.putInt(getContentResolver(), |
| CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED, 0); |
| Intent intent = new Intent("android.intent.action.MAIN"); |
| intent.addCategory("android.intent.category.HOME"); |
| final PackageManager pm = getPackageManager(); |
| ComponentName componentName = new ComponentName("com.cyanogenmod.setupwizard", |
| "com.cyanogenmod.setupwizard.ui.SetupWizardActivity"); |
| pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, |
| PackageManager.DONT_KILL_APP); |
| componentName = new ComponentName("com.cyanogenmod.setupwizard", |
| "com.cyanogenmod.setupwizard.setup.FinishSetupReceiver"); |
| pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, |
| PackageManager.DONT_KILL_APP); |
| pm.clearApplicationUserData("com.cyanogenmod.setupwizard", null); |
| ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE); |
| am.killBackgroundProcesses("com.cyanogenmod.setupwizard"); |
| try { |
| PackageInfo packageInfo = getPackageManager() |
| .getPackageInfo("com.google.android.setupwizard", |
| PackageManager.GET_ACTIVITIES | |
| PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES); |
| enableComponentArray(packageInfo.activities); |
| enableComponentArray(packageInfo.services); |
| enableComponentArray(packageInfo.receivers); |
| pm.clearApplicationUserData("com.google.android.setupwizard", null); |
| } catch (Exception e) { |
| Toast.makeText(this, "GMS not installed", Toast.LENGTH_SHORT).show(); |
| e.printStackTrace(); |
| } |
| intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | intent.getFlags()); |
| startActivity(intent); |
| finish(); |
| } |
| |
| private void enableGoogleSetup() { |
| try { |
| Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0); |
| Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 0); |
| Intent intent = new Intent("android.intent.action.MAIN"); |
| intent.addCategory("android.intent.category.HOME"); |
| final PackageManager pm = getPackageManager(); |
| PackageInfo packageInfo = this.getPackageManager() |
| .getPackageInfo("com.google.android.setupwizard", |
| PackageManager.GET_ACTIVITIES | |
| PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES); |
| enableComponentArray(packageInfo.activities); |
| enableComponentArray(packageInfo.services); |
| enableComponentArray(packageInfo.receivers); |
| pm.clearApplicationUserData("com.google.android.setupwizard", null); |
| intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | intent.getFlags()); |
| startActivity(intent); |
| finish(); |
| } catch (Exception e) { |
| Toast.makeText(this, "GMS not installed", Toast.LENGTH_SHORT).show(); |
| e.printStackTrace(); |
| } |
| } |
| |
| private void setSetupComplete() { |
| Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1); |
| CMSettings.Secure.putInt(getContentResolver(), |
| CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED, 1); |
| Intent intent = new Intent("android.intent.action.MAIN"); |
| intent.addCategory("android.intent.category.HOME"); |
| final PackageManager pm = getPackageManager(); |
| ComponentName componentName = new ComponentName("com.cyanogenmod.setupwizard", |
| "com.cyanogenmod.setupwizard.ui.SetupWizardActivity"); |
| pm.setComponentEnabledSetting(componentName, |
| PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); |
| ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE); |
| am.killBackgroundProcesses("com.cyanogenmod.setupwizard"); |
| try { |
| PackageInfo packageInfo = this.getPackageManager() |
| .getPackageInfo("com.google.android.setupwizard", |
| PackageManager.GET_ACTIVITIES | |
| PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES); |
| enableComponentArray(packageInfo.activities); |
| enableComponentArray(packageInfo.services); |
| enableComponentArray(packageInfo.receivers); |
| pm.clearApplicationUserData("com.google.android.setupwizard", null); |
| } catch (Exception e) { |
| Toast.makeText(this, "GMS not installed", Toast.LENGTH_SHORT).show(); |
| e.printStackTrace(); |
| } |
| intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | intent.getFlags()); |
| startActivity(intent); |
| finish(); |
| } |
| |
| private void enableComponentArray(ComponentInfo[] components) { |
| if(components != null) { |
| ComponentInfo[] componentInfos = components; |
| for(int i = 0; i < componentInfos.length; i++) { |
| enableComponent(componentInfos[i].packageName, componentInfos[i].name); |
| } |
| } |
| } |
| |
| private void enableComponent(String packageName, String name) { |
| enableComponent(new ComponentName(packageName, name)); |
| } |
| |
| private void enableComponent(ComponentName component) { |
| getPackageManager().setComponentEnabledSetting(component, |
| PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 1); |
| } |
| |
| } |