1d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn/* 2d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * Copyright (C) 2014 The Android Open Source Project 3d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * 4d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * Licensed under the Apache License, Version 2.0 (the "License"); 5d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * you may not use this file except in compliance with the License. 6d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * You may obtain a copy of the License at 7d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * 8d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * http://www.apache.org/licenses/LICENSE-2.0 9d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * 10d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * Unless required by applicable law or agreed to in writing, software 11d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * distributed under the License is distributed on an "AS IS" BASIS, 12d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * See the License for the specific language governing permissions and 14d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * limitations under the License 15d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn */ 16d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn 177cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnpackage com.android.server.telecom; 18d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn 19d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunnimport android.content.BroadcastReceiver; 20d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunnimport android.content.Context; 21d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunnimport android.content.Intent; 22d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunnimport android.net.Uri; 23d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn 24d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunnimport java.lang.String; 25d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn 26d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn/** 278e0fef4e1fd09116e4df4ba2ecc18f06cebe71c2Tyler Gunn * Captures {@code android.intent.action.ACTION_PACKAGE_FULLY_REMOVED} intents and triggers the 287cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunn * removal of associated {@link android.telecom.PhoneAccount}s via the 297cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunn * {@link com.android.telecom.PhoneAccountRegistrar}. 308e0fef4e1fd09116e4df4ba2ecc18f06cebe71c2Tyler Gunn * Note: This class listens for the {@code PACKAGE_FULLY_REMOVED} intent rather than 318e0fef4e1fd09116e4df4ba2ecc18f06cebe71c2Tyler Gunn * {@code PACKAGE_REMOVED} as {@code PACKAGE_REMOVED} is triggered on re-installation of the same 328e0fef4e1fd09116e4df4ba2ecc18f06cebe71c2Tyler Gunn * package, where {@code PACKAGE_FULLY_REMOVED} is triggered only when an application is completely 338e0fef4e1fd09116e4df4ba2ecc18f06cebe71c2Tyler Gunn * uninstalled. This is desirable as we do not wish to un-register all 347cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunn * {@link android.telecom.PhoneAccount}s associated with a package being re-installed to ensure 358e0fef4e1fd09116e4df4ba2ecc18f06cebe71c2Tyler Gunn * the enabled state of the accounts is retained. 36d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn */ 37d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunnpublic class PhoneAccountBroadcastReceiver extends BroadcastReceiver { 38d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn /** 39d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * Receives the intents the class is configured to received. 40d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * 41d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * @param context The Context in which the receiver is running. 42d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * @param intent The Intent being received. 43d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn */ 44d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn @Override 45d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn public void onReceive(Context context, Intent intent) { 468e0fef4e1fd09116e4df4ba2ecc18f06cebe71c2Tyler Gunn if (Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(intent.getAction())) { 47d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn Uri uri = intent.getData(); 48d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn if (uri == null) { 49d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn return; 50d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn } 51d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn 52d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn String packageName = uri.getSchemeSpecificPart(); 53d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn handlePackageRemoved(context, packageName); 54d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn } 55d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn } 56d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn 57d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn /** 58d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * Handles the removal of a package by calling upon the {@link PhoneAccountRegistrar} to 597cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunn * un-register any {@link android.telecom.PhoneAccount}s associated with the package. 60d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * 61d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn * @param packageName The name of the removed package. 62d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn */ 63d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn private void handlePackageRemoved(Context context, String packageName) { 6465ff88c1251189543284abe02a90ef04203c1ae5Jay Shrauner final CallsManager callsManager = CallsManager.getInstance(); 6565ff88c1251189543284abe02a90ef04203c1ae5Jay Shrauner if (callsManager != null) { 6665ff88c1251189543284abe02a90ef04203c1ae5Jay Shrauner callsManager.getPhoneAccountRegistrar().clearAccounts(packageName); 6765ff88c1251189543284abe02a90ef04203c1ae5Jay Shrauner } 68d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn } 69d900ce6021fe457c97f1e8d82374bf30b08f2ee5Tyler Gunn} 70