• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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.cts.verifier.voicemail;
18 
19 import android.app.Activity;
20 import android.app.role.RoleManager;
21 import android.content.BroadcastReceiver;
22 import android.content.Context;
23 import android.content.Intent;
24 import android.content.IntentFilter;
25 import android.provider.Settings;
26 import android.telecom.TelecomManager;
27 import android.view.View;
28 import android.view.View.OnClickListener;
29 import android.widget.Button;
30 import android.widget.ImageView;
31 import android.widget.TextView;
32 import android.widget.Toast;
33 
34 import com.android.cts.verifier.R;
35 
36 /**
37  * Provides common UI for tests that needs to be set as the default dialer.
38  */
39 public class DefaultDialerChanger {
40 
41     private final Activity mActivity;
42 
43     private final ImageView mSetDefaultDialerImage;
44     private final Button mSetDefaultDialerButton;
45 
46     private final ImageView mRestoreDefaultDialerImage;
47     private final Button mRestoreDefaultDialerButton;
48 
49     private boolean mRestorePending;
50 
DefaultDialerChanger(Activity activity)51     public DefaultDialerChanger(Activity activity) {
52         mActivity = activity;
53 
54         mSetDefaultDialerImage = (ImageView) mActivity.findViewById(R.id.set_default_dialer_image);
55         mRestoreDefaultDialerImage = (ImageView) mActivity
56                 .findViewById(R.id.restore_default_dialer_image);
57 
58         mSetDefaultDialerButton = (Button) mActivity.findViewById(R.id.set_default_dialer);
59         mRestoreDefaultDialerButton = (Button) mActivity.findViewById(R.id.restore_default_dialer);
60 
61         final TelecomManager telecomManager = mActivity.getSystemService(TelecomManager.class);
62         updateSetDefaultDialerState(telecomManager.getDefaultDialerPackage());
63 
64         mSetDefaultDialerButton.setOnClickListener(new OnClickListener() {
65             @Override
66             public void onClick(View v) {
67                 if (telecomManager.getDefaultDialerPackage().equals(mActivity.getPackageName())) {
68                     Toast.makeText(mActivity,
69                             R.string.voicemail_default_dialer_already_set, Toast.LENGTH_SHORT)
70                             .show();
71                     return;
72                 }
73 
74                 final RoleManager roleManager = mActivity.getSystemService(RoleManager.class);
75                 final Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_DIALER);
76                 mActivity.startActivityForResult(intent, 0);
77             }
78         });
79 
80         mRestoreDefaultDialerButton.setOnClickListener(new OnClickListener() {
81             @Override
82             public void onClick(View v) {
83                 if (!telecomManager.getDefaultDialerPackage().equals(mActivity.getPackageName())) {
84                     Toast.makeText(mActivity,
85                             R.string.voicemail_default_dialer_already_restored, Toast.LENGTH_SHORT)
86                             .show();
87                     return;
88                 }
89 
90                 final Intent intent = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);
91                 mActivity.startActivityForResult(intent, 0);
92             }
93         });
94 
95         mActivity.registerReceiver(mDefaultDialerChangedReceiver,
96                 new IntentFilter(TelecomManager.ACTION_DEFAULT_DIALER_CHANGED));
97     }
98 
setRestorePending(boolean value)99     public void setRestorePending(boolean value) {
100         mRestorePending = value;
101     }
102 
103     private BroadcastReceiver mDefaultDialerChangedReceiver = new BroadcastReceiver() {
104         @Override
105         public void onReceive(Context context, Intent intent) {
106             String packageName =
107                     intent.getStringExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME);
108             if (!mRestorePending) {
109                 updateSetDefaultDialerState(packageName);
110             } else {
111                 if (packageName.equals(mActivity.getPackageName())) {
112                     mRestoreDefaultDialerImage
113                             .setImageDrawable(mActivity.getDrawable(R.drawable.fs_indeterminate));
114                 } else {
115                     mRestoreDefaultDialerImage
116                             .setImageDrawable(mActivity.getDrawable(R.drawable.fs_good));
117                 }
118             }
119         }
120     };
121 
updateSetDefaultDialerState(String packageName)122     private void updateSetDefaultDialerState(String packageName) {
123         if (packageName.equals(mActivity.getPackageName())) {
124             mSetDefaultDialerImage.setImageDrawable(mActivity.getDrawable(R.drawable.fs_good));
125         } else {
126             mSetDefaultDialerImage
127                     .setImageDrawable(mActivity.getDrawable(R.drawable.fs_indeterminate));
128         }
129     }
130 
destroy()131     public void destroy() {
132         mActivity.unregisterReceiver(mDefaultDialerChangedReceiver);
133     }
134 }
135