http://blog.sina.com.cn/s/blog_71d1e4fc0100o8qr.html
http://blog.csdn.net/bianhaohui/article/details/6220135
 
    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 Service GetSystemService的更多相关文章

  1. Android Service不能再详细的教程

    这篇包含了: Service后台服务.前台服务.IntentService.跨进程服务.无障碍服务.系统服务 几乎所有Android Service相关的东西. 前言 作为四大组件之一的Service ...

  2. Android Service 生命周期

    Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行 ...

  3. Android Service 不被杀死并提高优先级

    Android Service 不被杀死有两种思路,一种是将APP设置为系统应用.还有一种是增强service的生命力.即使屏幕背光关闭时也能执行. 因为设置为系统应用须要root.所以一般使用后一种 ...

  4. android service 样例(电话录音和获取系统当前时间)

    关于android service 的具体解释请參考: android四大组件--android service具体解释.以下将用两个实例具体呈现Android Service的两种实现. 一个是st ...

  5. Android Service Summary

     In the Androird, service is a none-UI background process that is doing some specific jobs.   6.1 Ex ...

  6. android service两种启动方式

    android service的启动方式有以下两种: 1.Context.startService()方式启动,生命周期如下所示,启动时,startService->onCreate()-> ...

  7. 1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco

    Android studio 集成极光推送(Jpush) (华为手机)报错, E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!] W/Sy ...

  8. Android Service完全解析,关于服务你所需知道的一切(下)

    转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要 ...

  9. Android Service完全解析,关于服务你所需知道的一切(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952435 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的A ...

随机推荐

  1. awbeci网站之技术篇

    之前写的一篇关于awbeci网站的使用和介绍,大家可以看看,地址在:http://www.cnblogs.com/zhangwei595806165/p/5245640.html 1.前台 BootS ...

  2. 收到新信息,弹出popup窗口提示

     

  3. android中执行(定时任务)的方法及6位随机码的产生

    在网上看了很多类似的文章,比较乱,自己总结了一下,在开发中,常见的执行定时任务的方法有以下几种, 很简单的描述,有什么不懂可以留言,下面来介绍一下这几种常见的方法: 1.直接在线程中睡觉的方法,这个比 ...

  4. 关于easyui的问答(来自百度问答)

    求教大神,jquery easyui中$('#table').datagrid('options').queryParams是什么意思 https://zhidao.baidu.com/questio ...

  5. Struts2常见配置(草稿)

    Struts2框架配置文件加载的顺序(了解加载配置文件的顺序,重点掌握struts.xml配置文件) 1.Struts2框架的核心是StrutsPrepareAndExecuteFilter过滤器,该 ...

  6. java struts2入门学习--基于xml文件的声明式验证

    一.知识点总结 后台验证有两种实现方式: 1 手工验证顺序:validateXxx(针对Action中某个业务方法验证)--> validate(针对Action中所有的业务方法验证) 2 声明 ...

  7. IOCP笔记

    IOCP是win32下的异步IO,利用线程池来异步处理IO请求. 这里要分析一下异步调用,跟同步调用不同,异步调用 调用了就马上返回,但是还留下个话:有事情了马上通知我,我会处理滴.恩恩,这很符合我的 ...

  8. nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)

    俗话说:每个人一生下来什么都会的,都是通过自己努力和探索出来的,NRF系列芯片,刚开始都好奇心加兴趣才来捣鼓它的,刚开始做硬件和软件,没有收发数据弄得整个人头都快炸开了,所以在此和大家分享一下前辈的经 ...

  9. Postgresql 正则表达式

    在postgresql中使用正则表达式时需要使用关键字“~”,以表示该关键字之前的内容需匹配之后的正则表达式,若匹配规则不需要区分大小写,可以使用组合关键字“~*”: 相反,若需要查询不匹配这则表达式 ...

  10. windows10安装tensorflow的gpu版本(pip3安装方式)

    前言: TensorFlow 有cpu和 gpu两个版本:gpu版本需要英伟达CUDA 和 cuDNN 的支持,cpu版本不需要:本文主要安装gpu版本. 1.环境 gpu:确认你的显卡支持 CUDA ...