Android学习(十五) 系统服务

一、常用系统服务

  后台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方法来获取不同的系统服务对象。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。