1d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov/* 2d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * Copyright (C) 2009 The Android Open Source Project 3d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * 4d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 5d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * you may not use this file except in compliance with the License. 6d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * You may obtain a copy of the License at 7d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * 8d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 9d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * 10d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 11d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 12d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * See the License for the specific language governing permissions and 14d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov * limitations under the License 15d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov */ 16d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov 17d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovpackage com.android.providers.contacts; 18d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov 19d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovimport android.content.BroadcastReceiver; 20d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovimport android.content.ContentProvider; 21d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovimport android.content.Context; 22d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovimport android.content.IContentProvider; 23d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovimport android.content.Intent; 24d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovimport android.net.Uri; 25d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikovimport android.provider.ContactsContract; 26d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov 27d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov/** 2872e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov * Package intent receiver that invokes {@link ContactsProvider2#onPackageChanged} to update 2972e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov * the contact directory list. 30d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov */ 3172e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikovpublic class PackageIntentReceiver extends BroadcastReceiver { 32d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov 33d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov @Override 34d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov public void onReceive(Context context, Intent intent) { 3572e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov Uri packageUri = intent.getData(); 3672e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov String packageName = packageUri.getSchemeSpecificPart(); 3772e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov IContentProvider iprovider = 3872e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov context.getContentResolver().acquireProvider(ContactsContract.AUTHORITY); 3972e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov ContentProvider provider = ContentProvider.coerceToLocalContentProvider(iprovider); 4072e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov if (provider instanceof ContactsProvider2) { 4172e3003a810fb4793a1513d17a40f8ab83d7d0afDmitri Plotnikov ((ContactsProvider2)provider).onPackageChanged(packageName); 42d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov } 43c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee handlePackageChangedForVoicemail(context, intent); 44c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee } 45c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee 46c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee private void handlePackageChangedForVoicemail(Context context, Intent intent) { 47c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED) && 48c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee !intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { 49c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee // Forward the intent to the cleanup service for handling the event. 50c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee Intent intentToForward = new Intent(context, VoicemailCleanupService.class); 51c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee intentToForward.setData(intent.getData()); 52c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee intentToForward.setAction(intent.getAction()); 53c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee intentToForward.putExtras(intent.getExtras()); 54c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee context.startService(intentToForward); 55c6eb4fe44502116f834fadcc54214b3fa93ff564Debashish Chatterjee } 56d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov } 57d3d812af96f7d77e13dc60652626b39f25907147Dmitri Plotnikov} 58