一、常用系统服务
后台Service在系统启动时被SystemService开启
1、MountService:监听是否有SD卡安装和移除。
2、ClipboardService:提供剪切板功能。
3、PackageManagerService:提供软件包的安装移除和查看。
4、电量、网络连接状态等等。
二、调用系统Service:
getSystemService()方法:Activity的一个方法,用来获取系统服务对象,传入一个字符串,返回一个系统服务对象。
三、常用的系统服务:
传入的Name | 返回的对象 | 说明 |
WINDOW_SERVICE | WindowManager | 管理打开的窗口程序 |
LAYOUT_INFLATER_SERVICE | Layoutlnflater | 取得XML里定义的View |
ACTIVITY_SERVICE | ActivityManager | 管理应用程序的系统状态 |
POWER_SERVICE | PowerManager | 电源服务 |
ALARM_SERVICE | AlarmManager | 闹钟服务 |
NOTIFICATION_SERVICE | NotificationManager | 状态栏服务 |
KEYGUARD_SERVICE | KeyguardManager | 键盘锁服务 |
示例:获取网络连接状态和开启关闭WIFI
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:onClick="doClick" android:id="@+id/btn_network" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="网络是否连接" /> <Button android:onClick="doClick" android:id="@+id/btn_wifi" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="WIFI开关" /> </LinearLayout>
AndroidManifest.xml 系统权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.systemservicedemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.systemservicedemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
main.java:后台代码
package com.example.systemservicedemo; import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void doClick(View v){ switch(v.getId()){ case R.id.btn_network: if(isNetWorkConnected(MainActivity.this)){ Toast.makeText(MainActivity.this, "网络连接正常", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "网络连接失败", Toast.LENGTH_SHORT).show(); } break; case R.id.btn_wifi: WifiManager(); break; } } /** * 检测网络是否连接 * @param context * @return */ private boolean isNetWorkConnected(Context context){ if(context != null){ ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if(info != null){ return info.isAvailable(); } } return false; } private void WifiManager(){ WifiManager wifi = (android.net.wifi.WifiManager) MainActivity.this.getSystemService(WIFI_SERVICE); if(wifi.isWifiEnabled()){ wifi.setWifiEnabled(false); Toast.makeText(MainActivity.this, "WIFI已经关闭", Toast.LENGTH_SHORT).show(); }else{ wifi.setWifiEnabled(true); Toast.makeText(MainActivity.this, "WIFI已经打开", Toast.LENGTH_SHORT).show(); } } }
系统服务的种类非常多,其他需要使用时再去研究,主要是通过getSystemService方法来获取不同的系统服务对象。