Home | History | Annotate | Download | only in phone
      1 /*
      2  * Copyright (C) 2013 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.phone;
     18 
     19 import android.app.Activity;
     20 import android.app.AlertDialog;
     21 import android.app.PendingIntent;
     22 import android.content.DialogInterface;
     23 import android.os.Bundle;
     24 import android.util.Log;
     25 
     26 /**
     27  * Starts and displays status for Hands Free Activation (HFA).
     28  *
     29  * This class operates with Hands Free Activation apps. It comes up during activation
     30  * requests that occur outside of setup wizard and so provides its own UI.
     31  * It uses {@link HfaLogic} to perform the actual activation and during the process
     32  * displays a "performing activation..." dialog.  This will remain up until the user
     33  * chooses to skip the activation (still happens in the background) or the activation
     34  * is successful.  Upon failure, the dialog also goes away but a subsequent dialog will
     35  * ask the user if they would like to try again or cancel.
     36  */
     37 public class HfaActivity extends Activity {
     38     private static final String TAG = HfaActivity.class.getSimpleName();
     39 
     40     private AlertDialog mDialog;
     41     private HfaLogic mHfaLogic;
     42 
     43     @Override
     44     protected void onCreate(Bundle savedInstanceState) {
     45         super.onCreate(savedInstanceState);
     46         Log.i(TAG, "onCreate");
     47 
     48         final PendingIntent otaResponseIntent = getIntent().getParcelableExtra(
     49                 OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT);
     50 
     51         mHfaLogic = new HfaLogic(this.getApplicationContext(), new HfaLogic.HfaLogicCallback() {
     52             @Override
     53             public void onSuccess() {
     54                 onHfaSuccess();
     55             }
     56 
     57             @Override
     58             public void onError(String error) {
     59                 onHfaError(error);
     60             }
     61         }, otaResponseIntent);
     62 
     63         startProvisioning();
     64     }
     65 
     66     @Override
     67     protected void onDestroy() {
     68         super.onDestroy();
     69 
     70         Log.i(TAG, "onDestroy");
     71 
     72         if (mDialog != null && mDialog.isShowing()) {
     73             mDialog.dismiss();
     74             mDialog = null;
     75         }
     76     }
     77 
     78     private void startProvisioning() {
     79         buildAndShowDialog();
     80         mHfaLogic.start();
     81     }
     82 
     83     private void buildAndShowDialog() {
     84         mDialog = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
     85                 .setTitle(R.string.ota_hfa_activation_title)
     86                 .setMessage(R.string.ota_hfa_activation_dialog_message)
     87                 .setPositiveButton(R.string.ota_skip_activation_dialog_skip_label,
     88                         new DialogInterface.OnClickListener() {
     89                             @Override
     90                             public void onClick(DialogInterface di, int which) {
     91                                 onUserSkip();
     92                             }})
     93                 /*.setOnCancelListener(new DialogInterface.OnCancelListener() {
     94                     @Override
     95                     public void onCancel(DialogInterface di) {
     96                         sendFinalResponse(OTASP_USER_SKIPPED);
     97                     }})*/
     98                 .create();
     99 
    100         // Do not allow user to dismiss dialog unless they are clicking "skip"
    101         mDialog.setCanceledOnTouchOutside(false);
    102         mDialog.setCancelable(false);
    103 
    104         Log.i(TAG, "showing dialog");
    105         mDialog.show();
    106     }
    107 
    108     private void onHfaError(String errorMsg) {
    109         mDialog.dismiss();
    110 
    111         AlertDialog errorDialog = new AlertDialog.Builder(this,
    112                 AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
    113             .setMessage(errorMsg)
    114             .setPositiveButton(R.string.ota_skip_activation_dialog_skip_label,
    115                     new DialogInterface.OnClickListener() {
    116                         @Override
    117                         public void onClick(DialogInterface di, int which) {
    118                             di.dismiss();
    119                             onUserSkip();
    120                         }
    121                     })
    122             .setNegativeButton(R.string.ota_try_again,
    123                     new DialogInterface.OnClickListener() {
    124                         @Override
    125                         public void onClick(DialogInterface di, int which) {
    126                             di.dismiss();
    127                             startProvisioning();
    128                         }
    129                     })
    130             .create();
    131 
    132         errorDialog.show();
    133     }
    134 
    135     private void onHfaSuccess() {
    136         finish();
    137     }
    138 
    139     private void onUserSkip() {
    140         finish();
    141     }
    142 
    143 }
    144