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