14e9f04de0a6511086f47479addb53b84c3bb9763David Braun/* 24e9f04de0a6511086f47479addb53b84c3bb9763David Braun * Copyright (C) 2013 The Android Open Source Project 34e9f04de0a6511086f47479addb53b84c3bb9763David Braun * 44e9f04de0a6511086f47479addb53b84c3bb9763David Braun * Licensed under the Apache License, Version 2.0 (the "License"); 54e9f04de0a6511086f47479addb53b84c3bb9763David Braun * you may not use this file except in compliance with the License. 64e9f04de0a6511086f47479addb53b84c3bb9763David Braun * You may obtain a copy of the License at 74e9f04de0a6511086f47479addb53b84c3bb9763David Braun * 84e9f04de0a6511086f47479addb53b84c3bb9763David Braun * http://www.apache.org/licenses/LICENSE-2.0 94e9f04de0a6511086f47479addb53b84c3bb9763David Braun * 104e9f04de0a6511086f47479addb53b84c3bb9763David Braun * Unless required by applicable law or agreed to in writing, software 114e9f04de0a6511086f47479addb53b84c3bb9763David Braun * distributed under the License is distributed on an "AS IS" BASIS, 124e9f04de0a6511086f47479addb53b84c3bb9763David Braun * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134e9f04de0a6511086f47479addb53b84c3bb9763David Braun * See the License for the specific language governing permissions and 144e9f04de0a6511086f47479addb53b84c3bb9763David Braun * limitations under the License. 154e9f04de0a6511086f47479addb53b84c3bb9763David Braun */ 164e9f04de0a6511086f47479addb53b84c3bb9763David Braun 174e9f04de0a6511086f47479addb53b84c3bb9763David Braunpackage com.android.settings; 184e9f04de0a6511086f47479addb53b84c3bb9763David Braun 194e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.content.ComponentName; 204e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.content.Context; 214e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.content.DialogInterface; 224e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.content.Intent; 234e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.content.pm.ApplicationInfo; 244e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.content.pm.PackageManager; 254e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.os.Bundle; 264e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport android.provider.Telephony.Sms.Intents; 271c17255d5edadaf1790af365d2ed5f962a7bcc65David Braunimport android.telephony.TelephonyManager; 284e9f04de0a6511086f47479addb53b84c3bb9763David Braun 294e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport com.android.internal.app.AlertActivity; 304e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport com.android.internal.app.AlertController; 314e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport com.android.internal.telephony.SmsApplication; 324e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport com.android.internal.telephony.SmsApplication.SmsApplicationData; 334e9f04de0a6511086f47479addb53b84c3bb9763David Braunimport com.android.settings.R; 344e9f04de0a6511086f47479addb53b84c3bb9763David Braun 354e9f04de0a6511086f47479addb53b84c3bb9763David Braunpublic final class SmsDefaultDialog extends AlertActivity implements 364e9f04de0a6511086f47479addb53b84c3bb9763David Braun DialogInterface.OnClickListener { 374e9f04de0a6511086f47479addb53b84c3bb9763David Braun private ComponentName mNewDefault; 384e9f04de0a6511086f47479addb53b84c3bb9763David Braun private SmsApplicationData mNewSmsApplicationData; 394e9f04de0a6511086f47479addb53b84c3bb9763David Braun 404e9f04de0a6511086f47479addb53b84c3bb9763David Braun @Override 414e9f04de0a6511086f47479addb53b84c3bb9763David Braun protected void onCreate(Bundle savedInstanceState) { 424e9f04de0a6511086f47479addb53b84c3bb9763David Braun super.onCreate(savedInstanceState); 434e9f04de0a6511086f47479addb53b84c3bb9763David Braun 444e9f04de0a6511086f47479addb53b84c3bb9763David Braun Intent intent = getIntent(); 454e9f04de0a6511086f47479addb53b84c3bb9763David Braun String packageName = intent.getStringExtra(Intents.EXTRA_PACKAGE_NAME); 464e9f04de0a6511086f47479addb53b84c3bb9763David Braun 474e9f04de0a6511086f47479addb53b84c3bb9763David Braun setResult(RESULT_CANCELED); 484e9f04de0a6511086f47479addb53b84c3bb9763David Braun if (!buildDialog(packageName)) { 494e9f04de0a6511086f47479addb53b84c3bb9763David Braun finish(); 504e9f04de0a6511086f47479addb53b84c3bb9763David Braun } 514e9f04de0a6511086f47479addb53b84c3bb9763David Braun } 524e9f04de0a6511086f47479addb53b84c3bb9763David Braun 534e9f04de0a6511086f47479addb53b84c3bb9763David Braun @Override 544e9f04de0a6511086f47479addb53b84c3bb9763David Braun public void onClick(DialogInterface dialog, int which) { 554e9f04de0a6511086f47479addb53b84c3bb9763David Braun switch (which) { 564e9f04de0a6511086f47479addb53b84c3bb9763David Braun case BUTTON_POSITIVE: 574e9f04de0a6511086f47479addb53b84c3bb9763David Braun SmsApplication.setDefaultApplication(mNewSmsApplicationData.mPackageName, this); 584e9f04de0a6511086f47479addb53b84c3bb9763David Braun setResult(RESULT_OK); 594e9f04de0a6511086f47479addb53b84c3bb9763David Braun break; 604e9f04de0a6511086f47479addb53b84c3bb9763David Braun case BUTTON_NEGATIVE: 614e9f04de0a6511086f47479addb53b84c3bb9763David Braun break; 624e9f04de0a6511086f47479addb53b84c3bb9763David Braun } 634e9f04de0a6511086f47479addb53b84c3bb9763David Braun } 644e9f04de0a6511086f47479addb53b84c3bb9763David Braun 654e9f04de0a6511086f47479addb53b84c3bb9763David Braun private boolean buildDialog(String packageName) { 661c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 67a3c0a535d15d897fc2b799811727a17eb79f773eDave Daynard if (!tm.isSmsCapable()) { 681c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun // No phone, no SMS 691c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun return false; 701c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun } 711c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun 724e9f04de0a6511086f47479addb53b84c3bb9763David Braun mNewSmsApplicationData = SmsApplication.getSmsApplicationData(packageName, this); 734e9f04de0a6511086f47479addb53b84c3bb9763David Braun if (mNewSmsApplicationData == null) { 744e9f04de0a6511086f47479addb53b84c3bb9763David Braun return false; 754e9f04de0a6511086f47479addb53b84c3bb9763David Braun } 764e9f04de0a6511086f47479addb53b84c3bb9763David Braun 771c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun SmsApplicationData oldSmsApplicationData = null; 784e9f04de0a6511086f47479addb53b84c3bb9763David Braun ComponentName oldSmsComponent = SmsApplication.getDefaultSmsApplication(this, true); 791c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun if (oldSmsComponent != null) { 801c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun oldSmsApplicationData = 811c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun SmsApplication.getSmsApplicationData(oldSmsComponent.getPackageName(), this); 821c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun if (oldSmsApplicationData.mPackageName.equals(mNewSmsApplicationData.mPackageName)) { 831c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun return false; 841c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun } 854e9f04de0a6511086f47479addb53b84c3bb9763David Braun } 864e9f04de0a6511086f47479addb53b84c3bb9763David Braun 874e9f04de0a6511086f47479addb53b84c3bb9763David Braun // Compose dialog; get 884e9f04de0a6511086f47479addb53b84c3bb9763David Braun final AlertController.AlertParams p = mAlertParams; 894e9f04de0a6511086f47479addb53b84c3bb9763David Braun p.mTitle = getString(R.string.sms_change_default_dialog_title); 901c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun if (oldSmsApplicationData != null) { 911c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun p.mMessage = getString(R.string.sms_change_default_dialog_text, 921c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun mNewSmsApplicationData.mApplicationName, 931c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun oldSmsApplicationData.mApplicationName); 941c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun } else { 951c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun p.mMessage = getString(R.string.sms_change_default_no_previous_dialog_text, 961c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun mNewSmsApplicationData.mApplicationName); 971c17255d5edadaf1790af365d2ed5f962a7bcc65David Braun } 984e9f04de0a6511086f47479addb53b84c3bb9763David Braun p.mPositiveButtonText = getString(R.string.yes); 994e9f04de0a6511086f47479addb53b84c3bb9763David Braun p.mNegativeButtonText = getString(R.string.no); 1004e9f04de0a6511086f47479addb53b84c3bb9763David Braun p.mPositiveButtonListener = this; 1014e9f04de0a6511086f47479addb53b84c3bb9763David Braun p.mNegativeButtonListener = this; 1024e9f04de0a6511086f47479addb53b84c3bb9763David Braun setupAlert(); 1034e9f04de0a6511086f47479addb53b84c3bb9763David Braun 1044e9f04de0a6511086f47479addb53b84c3bb9763David Braun return true; 1054e9f04de0a6511086f47479addb53b84c3bb9763David Braun } 1064e9f04de0a6511086f47479addb53b84c3bb9763David Braun}