標籤:
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() )