Android作業系統服務(Context.getSystemService() )

來源:互聯網
上載者:User

標籤:

getSystemService是Android很重要的一個API,它是Activity的一個方法,根據傳入的NAME來取得對應的Object,然後轉換成相應的服務物件。下面介紹系統相應的服務:

傳入的Name 返回的對象 說明
WINDOW_SERVICE  WindowManager 管理開啟的視窗程序
LAYOUT_INFLATER_SERVICE LayoutInflater  取得xml裡定義的view
ACTIVITY_SERVICE ActivityManager  管理應用程式的系統狀態

POWER_SERVICE

PowerManger 電源的服務
ALARM_SERVICE AlarmManager 鬧鐘的服務

NOTIFICATION_SERVICE 

NotificationManager 狀態列的服務
KEYGUARD_SERVICE  KeyguardManager  鍵盤鎖的服務
LOCATION_SERVICE  LocationManager  位置的服務,如GPS
SEARCH_SERVICE SearchManager  搜尋的服務
VEBRATOR_SERVICE  Vebrator 手機震動的服務
CONNECTIVITY_SERVICE Connectivity 網路連接的服務
WIFI_SERVICE WifiManager Wi-Fi服務
 TELEPHONY_SERVICE TeleponyManager 電話語音

程式碼範例,使用判斷網路連接是否可用,並判斷是否是wifi:

    protected int checkNetworkInfo() {        ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo networkinfo = con.getActiveNetworkInfo();        if (networkinfo == null || !networkinfo.isAvailable()) {            // 當前網路不可用            return 1;        }        boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI)                .isConnectedOrConnecting();        if (wifi) {            // 使用wifi上網            return 2;        }        return 3;    }
轉載:擷取Android正在啟動並執行任務和服務

檢測某ActivityUpdate是否在當前Task的棧頂

public static boolean isTopActivy(String cmdName, Context context)    {        ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);        List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(Integer.MAX_VALUE);        String cmpNameTemp = null;        if (null != runningTaskInfos)        {            cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString();        }        if (null == cmpNameTemp)        {            return false;        }                return cmpNameTemp.equals(cmdName);    }

 

判斷Android應用是否在前台

public static boolean isAppOnForeground(Context context)    {        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);        String packageName = context.getPackageName();        List<RecentTaskInfo> appTask = activityManager.getRecentTasks(Integer.MAX_VALUE, 1);                if (appTask == null)        {            return false;        }                if (appTask.get(0).baseIntent.toString().contains(packageName))        {            return true;        }        return false;    }

 

擷取Android手機內安裝的所有案頭

private static List<String> getAllTheLauncher(Context context)    {        List<String> names = null;        PackageManager pkgMgt = context.getPackageManager();        Intent it = new Intent(Intent.ACTION_MAIN);        it.addCategory(Intent.CATEGORY_HOME);        List<ResolveInfo> ra = pkgMgt.queryIntentActivities(it, 0);        if (ra.size() != 0)        {            names = new ArrayList<String>();        }        for (int i = 0; i < ra.size(); i++)        {            String packageName = ra.get(i).activityInfo.packageName;            names.add(packageName);        }        return names;    }

 

Android 判斷程式前後台狀態

public static boolean isLauncherRunnig(Context context)    {        boolean result = false;        List<String> names = getAllTheLauncher(context);        ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);        List<ActivityManager.RunningAppProcessInfo> appList = mActivityManager.getRunningAppProcesses();        for (RunningAppProcessInfo running : appList)        {            if (running.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND)            {                for (int i = 0; i < names.size(); i++)                {                    if (names.get(i).equals(running.processName))                    {                        result = true;                        break;                    }                }            }        }        return result;    }

 

Android作業系統服務(Context.getSystemService() )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.