101e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn/*
201e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * Copyright (C) 2010 The Android Open Source Project
301e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn *
401e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
501e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * you may not use this file except in compliance with the License.
601e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * You may obtain a copy of the License at
701e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn *
801e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
901e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn *
1001e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * Unless required by applicable law or agreed to in writing, software
1101e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
1201e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1301e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * See the License for the specific language governing permissions and
1401e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * limitations under the License.
1501e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn */
1601e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn
1701e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackbornpackage android.app;
1801e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn
1901e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackbornimport android.content.pm.IPackageManager;
2001e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn
2101e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn/**
2201e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * Special private access for certain globals related to a process.
2301e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn * @hide
2401e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn */
2501e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackbornpublic class AppGlobals {
2601e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    /**
2701e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     * Return the first Application object made in the process.
2801e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     * NOTE: Only works on the main thread.
2901e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     */
3001e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    public static Application getInitialApplication() {
3101e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn        return ActivityThread.currentApplication();
3201e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    }
3301e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn
3401e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    /**
3501e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     * Return the package name of the first .apk loaded into the process.
3601e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     * NOTE: Only works on the main thread.
3701e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     */
3801e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    public static String getInitialPackage() {
3901e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn        return ActivityThread.currentPackageName();
4001e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    }
4154d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov
4201e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    /**
4301e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     * Return the raw interface to the package manager.
4454d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov     * @return The package manager.
4501e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn     */
4601e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    public static IPackageManager getPackageManager() {
4701e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn        return ActivityThread.getPackageManager();
4801e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn    }
4954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov
5054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov    /**
5154d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov     * Gets the value of an integer core setting.
5254d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov     *
5354d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov     * @param key The setting key.
5454d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov     * @param defaultValue The setting default value.
5554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov     * @return The core settings.
5654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov     */
5754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov    public static int getIntCoreSetting(String key, int defaultValue) {
5811e515cbefb2d0f38e26cb41c8cd3790f881220cSvetoslav Ganov        ActivityThread currentActivityThread = ActivityThread.currentActivityThread();
5911e515cbefb2d0f38e26cb41c8cd3790f881220cSvetoslav Ganov        if (currentActivityThread != null) {
6011e515cbefb2d0f38e26cb41c8cd3790f881220cSvetoslav Ganov            return currentActivityThread.getIntCoreSetting(key, defaultValue);
6111e515cbefb2d0f38e26cb41c8cd3790f881220cSvetoslav Ganov        } else {
6211e515cbefb2d0f38e26cb41c8cd3790f881220cSvetoslav Ganov            return defaultValue;
6311e515cbefb2d0f38e26cb41c8cd3790f881220cSvetoslav Ganov        }
6454d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov    }
6501e4cfc47d0a2c7e7ab383d2fb23224ec52c0301Dianne Hackborn}
66