android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如MountService监 听是否有SD卡安装及移除,ClipboardService提供剪切板功能,PackageManagerService提供软件包的安装移除及查看等 等,应用程序可以通过系统提供的Manager接口来访问这些Service提供的数据。
 
    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  
         
         
       电话服务
 
 
Currently available names are:
  • WINDOW_SERVICE ("window") 
    The top-level window manager in which you can place custom windows.
    The returned object is a WindowManager.
  • LAYOUT_INFLATER_SERVICE ("layout_inflater")
    A LayoutInflater for inflating layout resources in this
    context.
  • ACTIVITY_SERVICE ("activity")
    A ActivityManager for interacting with the global activity state of
    the system.
  • POWER_SERVICE ("power")
    A PowerManager for controlling power
    management.
  • ALARM_SERVICE ("alarm")
    A AlarmManager for receiving intents at the time of your
    choosing.
  • NOTIFICATION_SERVICE ("notification")
    A NotificationManager for informing the user of background
    events.
  • KEYGUARD_SERVICE ("keyguard")
    A KeyguardManager for controlling keyguard.
  • LOCATION_SERVICE ("location")
    A LocationManager for controlling location (e.g., GPS)
    updates.
  • SEARCH_SERVICE ("search")
    A SearchManager for handling search.
  • VIBRATOR_SERVICE ("vibrator")
    A Vibrator for interacting with the vibrator
    hardware.
  • CONNECTIVITY_SERVICE ("connection")
    A ConnectivityManager for handling management of network
    connections.
  • WIFI_SERVICE ("wifi")
    A WifiManager for management of Wi-Fi
    connectivity.
  • INPUT_METHOD_SERVICE ("input_method")
    An InputMethodManager for management of input
    methods.
  • UI_MODE_SERVICE ("uimode")
    An UiModeManager for controlling UI modes.
  • DOWNLOAD_SERVICE ("download")
    A DownloadManager for requesting HTTP downloads
 
Note: System services obtained via this API may be closely
associated with the Context in which they are obtained from. In
general, do not share the service objects between various different
contexts (Activities, Applications, Services, Providers,
etc.)
 
一个例子:

在android 获取手机信息的时候用到这样一段代码:

public class BasicInfo {

public String
getPhoneNumber()

{

//
获取手机号 MSISDN,很可能为空

TelephonyManager tm =
(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

StringBuffer
inf = new StringBuffer();

switch(tm.getSimState()){
//getSimState()取得sim的状态  有下面6中状态

case
TelephonyManager.SIM_STATE_ABSENT :inf.append("无卡");return
inf.toString();

case
TelephonyManager.SIM_STATE_UNKNOWN :inf.append("未知状态");return
inf.toString();

case
TelephonyManager.SIM_STATE_NETWORK_LOCKED
:inf.append("需要NetworkPIN解锁");return inf.toString();

case
TelephonyManager.SIM_STATE_PIN_REQUIRED
:inf.append("需要PIN解锁");return inf.toString();

case
TelephonyManager.SIM_STATE_PUK_REQUIRED
:inf.append("需要PUK解锁");return inf.toString();

case
TelephonyManager.SIM_STATE_READY :break;

}

String phoneNumber =
tm.getLine1Number();

return
phoneNumber;

}

在另外一个activity类里面调用的时候 总是出现进程关闭 无法获取手机信息。后来发现

getSystemService这个方法基于context,只有存在TextView控件的窗体中这个方法才会被激活~

于是:

1. 给BasicInfo
添加一个带参数Context的构造函数:

public BasicInfo (Context context)

{

this.context =
context;

}

2. getPhoneNumber()函数里面改成:

context.getSystemService(Context.TELEPHONY_SERVIC);

3. 在调用类里面 BasicInfo bi = new
BasicInfo(this);

bi.getPhoneNumber();

   

android中getSystemService详解的更多相关文章

  1. Android中Context详解 ---- 你所不知道的Context(转)

    Android中Context详解 ---- 你所不知道的Context(转)                                               本文出处 :http://b ...

  2. Android中Context详解 ---- 你所不知道的Context

    转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好,  ...

  3. Android中 ListView 详解(二)

    本文版权归 csdn noTice501 所有,转载请详细标明原作者及出处,以示尊重! 作者:noTice501 原文:http://blog.csdn.net/notice520/article/d ...

  4. Android中Handle详解

    上图为本人总结的Handler,网上发现一片总结很好的博客就copy过来:作为参考 Handler有何作用?如何使用? 一 .Handler作用和概念 包含线程队列和消息队列,实现异步的消息处理机制, ...

  5. Android中Context详解

    大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中时刻的在与它打交道,例如:Service.BroadcastReceiver.A ...

  6. 转:Android中Context详解 ---- 你所不知道的Context

    转:http://blog.csdn.net/qinjuning/article/details/7310620 转:http://blog.csdn.net/lmj623565791/article ...

  7. android中LayoutInflater详解与使用

    android的LayoutInflater用来得到一个布局文件,也就是xxx.xml,而我们常用的findviewbyid是用来取得布局文件里的控件或都布局.inflater即为填充的意思,也就是说 ...

  8. android中Actionbar详解

    1.什么是Action BarAction Bar被认为是新版Android系统中最重要的交互元素,在程序运行中一直置于顶部,主要起到的作用在于:1)突出显示一些重要操作(如“最新”.“搜索”等)2) ...

  9. Android中IntentService详解

    简单说,IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统Service ...

随机推荐

  1. 音频播放、录音、视频播放、拍照、视频录制-b

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  2. bnuoj 4208 Bubble sort

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4208 [题意]:如题,求冒泡排序遍历趟数 [题解]:这题开始2B了,先模拟TLE,然后想了一下,能不 ...

  3. C# book

    <编写高质量代码:改善C#程序的157个建议>源码下载 http://www.cnblogs.com/luminji/archive/2011/09/20/2182265.html < ...

  4. silverlight 控件自定义样式 实现方法

    1:在app.xaml中加入需实现的样式,如: <Application.Resources> <Style x:Key="NodeStyle" TargetTy ...

  5. 2432: [Noi2011]兔农 - BZOJ

    Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这对兔子从第三个月 ...

  6. 剑指offer--面试题14--收获

    按照作者的说法,作为应届毕业生的我来说,如果能写出初级程序员的参考代码来解决面试题14就可认为过关了... 参考代码如下: void ReorderOddEven_1(int *pData, unsi ...

  7. [转载]C#如何在webBrowser1控件通过TagName,Name查找元素(没有ID时)遍历窗体元素

    //防止页面多次刷新页面执行 ) { string GetUserName = System.Configuration.ConfigurationSettings.AppSettings[" ...

  8. [设计模式] 4 原型模式 prototype

    设计模式:可复用面向对象软件的基础>(DP)本文介绍原型模式和模板方法模式的实现.首先介绍原型模式,然后引出模板方法模式. DP书上的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创 ...

  9. [设计模式] 13 责任链模式 Chain of Responsibility

    转    http://blog.csdn.net/wuzhekai1985   http://www.jellythink.com/archives/878 向项目经理提交了休假申请,我的项目经理向 ...

  10. MariaDB Galera Cluster 部署(如何快速部署MariaDB集群)

    MariaDB Galera Cluster 部署(如何快速部署MariaDB集群) [日期:--] 来源:Linux社区 作者:Linux [字体:大 中 小] MariaDB作为Mysql的一个分 ...