| /* |
| * Copyright (C) 2013 The Android Open Source 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.android.phone; |
| |
| import android.app.Activity; |
| import android.app.AlertDialog; |
| import android.app.PendingIntent; |
| import android.content.DialogInterface; |
| import android.os.Bundle; |
| import android.util.Log; |
| |
| /** |
| * Starts and displays status for Hands Free Activation (HFA). |
| * |
| * This class operates with Hands Free Activation apps. It comes up during activation |
| * requests that occur outside of setup wizard and so provides its own UI. |
| * It uses {@link HfaLogic} to perform the actual activation and during the process |
| * displays a "performing activation..." dialog. This will remain up until the user |
| * chooses to skip the activation (still happens in the background) or the activation |
| * is successful. Upon failure, the dialog also goes away but a subsequent dialog will |
| * ask the user if they would like to try again or cancel. |
| */ |
| public class HfaActivity extends Activity { |
| private static final String TAG = HfaActivity.class.getSimpleName(); |
| |
| private AlertDialog mDialog; |
| private HfaLogic mHfaLogic; |
| |
| @Override |
| protected void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| Log.i(TAG, "onCreate"); |
| |
| final PendingIntent otaResponseIntent = getIntent().getParcelableExtra( |
| OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT); |
| |
| mHfaLogic = new HfaLogic(this.getApplicationContext(), new HfaLogic.HfaLogicCallback() { |
| @Override |
| public void onSuccess() { |
| onHfaSuccess(); |
| } |
| |
| @Override |
| public void onError(String error) { |
| onHfaError(error); |
| } |
| }, otaResponseIntent); |
| |
| startProvisioning(); |
| } |
| |
| @Override |
| protected void onDestroy() { |
| super.onDestroy(); |
| |
| Log.i(TAG, "onDestroy"); |
| |
| if (mDialog != null && mDialog.isShowing()) { |
| mDialog.dismiss(); |
| mDialog = null; |
| } |
| } |
| |
| private void startProvisioning() { |
| buildAndShowDialog(); |
| mHfaLogic.start(); |
| } |
| |
| private void buildAndShowDialog() { |
| mDialog = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT) |
| .setTitle(R.string.ota_hfa_activation_title) |
| .setMessage(R.string.ota_hfa_activation_dialog_message) |
| .setPositiveButton(R.string.ota_skip_activation_dialog_skip_label, |
| new DialogInterface.OnClickListener() { |
| @Override |
| public void onClick(DialogInterface di, int which) { |
| onUserSkip(); |
| }}) |
| /*.setOnCancelListener(new DialogInterface.OnCancelListener() { |
| @Override |
| public void onCancel(DialogInterface di) { |
| sendFinalResponse(OTASP_USER_SKIPPED); |
| }})*/ |
| .create(); |
| |
| // Do not allow user to dismiss dialog unless they are clicking "skip" |
| mDialog.setCanceledOnTouchOutside(false); |
| mDialog.setCancelable(false); |
| |
| Log.i(TAG, "showing dialog"); |
| mDialog.show(); |
| } |
| |
| private void onHfaError(String errorMsg) { |
| mDialog.dismiss(); |
| |
| AlertDialog errorDialog = new AlertDialog.Builder(this, |
| AlertDialog.THEME_DEVICE_DEFAULT_LIGHT) |
| .setMessage(errorMsg) |
| .setPositiveButton(R.string.ota_skip_activation_dialog_skip_label, |
| new DialogInterface.OnClickListener() { |
| @Override |
| public void onClick(DialogInterface di, int which) { |
| di.dismiss(); |
| onUserSkip(); |
| } |
| }) |
| .setNegativeButton(R.string.ota_try_again, |
| new DialogInterface.OnClickListener() { |
| @Override |
| public void onClick(DialogInterface di, int which) { |
| di.dismiss(); |
| startProvisioning(); |
| } |
| }) |
| .create(); |
| |
| errorDialog.show(); |
| } |
| |
| private void onHfaSuccess() { |
| finish(); |
| } |
| |
| private void onUserSkip() { |
| finish(); |
| } |
| |
| } |