1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.app; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19a56270e9d7072be946569815712dea09b2544718Hung-ying Tyanimport android.app.IntentService; 20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.BroadcastReceiver; 21f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.Context; 22f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.Intent; 23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.content.SharedPreferences; 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.preference.PreferenceManager; 25f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 262b3ee0ea07246b859a5b75d8a6102a7cce7ec838Owen Linimport com.android.gallery3d.picasasource.PicasaSource; 274f59a411667f1c75c1b3ea2ad0ec07e82defa5d1Angus Kongimport com.android.gallery3d.util.LightCycleHelper; 282b3ee0ea07246b859a5b75d8a6102a7cce7ec838Owen Lin 29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpublic class PackagesMonitor extends BroadcastReceiver { 30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static final String KEY_PACKAGES_VERSION = "packages-version"; 31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public synchronized static int getPackagesVersion(Context context) { 33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin return prefs.getInt(KEY_PACKAGES_VERSION, 1); 35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 37f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 38bb0be068e9182278d30efd42cad5cf369ff93db4Hung-ying Tyan public void onReceive(final Context context, final Intent intent) { 3959a38959ba90a0760e7850e72e03d69900d5ac63Hung-ying Tyan intent.setClass(context, AsyncService.class); 4059a38959ba90a0760e7850e72e03d69900d5ac63Hung-ying Tyan context.startService(intent); 41a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan } 42a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan 43a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan public static class AsyncService extends IntentService { 44a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan public AsyncService() { 45a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan super("GalleryPackagesMonitorAsync"); 46a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan } 47a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan 48a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan @Override 49a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan protected void onHandleIntent(Intent intent) { 50a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan onReceiveAsync(this, intent); 51a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan } 52bb0be068e9182278d30efd42cad5cf369ff93db4Hung-ying Tyan } 53bb0be068e9182278d30efd42cad5cf369ff93db4Hung-ying Tyan 54bb0be068e9182278d30efd42cad5cf369ff93db4Hung-ying Tyan // Runs in a background thread. 55a56270e9d7072be946569815712dea09b2544718Hung-ying Tyan private static void onReceiveAsync(Context context, Intent intent) { 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int version = prefs.getInt(KEY_PACKAGES_VERSION, 1); 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin prefs.edit().putInt(KEY_PACKAGES_VERSION, version + 1).commit(); 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin String action = intent.getAction(); 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin String packageName = intent.getData().getSchemeSpecificPart(); 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (Intent.ACTION_PACKAGE_ADDED.equals(action)) { 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin PicasaSource.onPackageAdded(context, packageName); 65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) { 66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin PicasaSource.onPackageRemoved(context, packageName); 67d091538f6949cca1c73213cea0b9fdf28c878046Chih-Chung Chang } else if (Intent.ACTION_PACKAGE_CHANGED.equals(action)) { 68d091538f6949cca1c73213cea0b9fdf28c878046Chih-Chung Chang PicasaSource.onPackageChanged(context, packageName); 69f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 70f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 71f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 72