原文地址:android中getSystemService详解作者:邹斌
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中getSystemService详解相关推荐

  1. Android中menu详解(转)

    Android中菜单的使用时非常频繁的,能够达到很好的使用效果,其实他的实现方法非常简单,下面为大家讲解,首先看图: JAVA代码: package com.smart; import android ...

  2. Android中Context详解

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

  3. android广播intent原理,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  4. android 静态注册wifi广播,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  5. Android中LaunchMode详解

    越是做的时间越长,基础知识就忘的越干净,最近做一个项目中,发现启动的几个Activity居然重叠了,我ri--,再不回忆一下就要退出Android界了. 概念解释 Task Task叫做任务,这个简单 ...

  6. android asynctask 参数,Android中AsyncTask详解

    定义 AsyncTask是一个抽象类,在使用时需要继承该类,实现其抽象方法protected abstract Result doInBackground(Params... params).其主要作 ...

  7. [content-description] find_element_by_accessibility_id 在 android 中的详解

    出处:http://testerhome.com/topics/1034 最近 Appium 引入了一个新的 find element 方法:python client 为例 def find_ele ...

  8. android中界面滑动延伸,android中ViewPager详解--视图滑动、界面卡等效果 (三)

    GuideActivity.java引导界面: import java.util.ArrayList; import java.util.List; import android.app.Activi ...

  9. android中ViewPager详解--视图滑动、界面卡等效果 (三)

    2019独角兽企业重金招聘Python工程师标准>>> GuideActivity.java引导界面: import java.util.ArrayList; import java ...

最新文章

  1. [Lua]50行代码的解释器,用来演示lambda calculus
  2. OpenCV图像增强(一)——多尺度视网膜增强
  3. 使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试
  4. 集群故障处理之处理思路以及健康状态检查(三十三)
  5. DistBelief 框架下的并行随机梯度下降法 - Downpour SGD
  6. 干货分享丨玩转物联网IoTDA服务系列四-智能网关
  7. Ext.data.Store 获取Json数据只有一行,而且是最后一行
  8. 图像风格转换 - keras简化版实现
  9. 【水果识别】基于matlab GUI灰度+二值化+腐蚀+膨胀算法水果识别【含Matlab源码 671期】
  10. win系统服务器怎么清理内存,windows服务器内存清理
  11. 使用.net做微信公众号后台
  12. Flash动画短片制作流程注意点
  13. 一个bug看一天,写代码像cxk
  14. ubuntu 安装 mujoco-py
  15. 关于a标签的hover问题
  16. Hadoop生态系统完整组件及其在架构中的作用
  17. Kotlin笔记27--使用Intent传递数据
  18. sd卡照片清除用什么软件可以找回
  19. C++病毒——感染C/C++源文件
  20. 【愚公系列】2022年09月 微信小程序-WebGL画渐变色正方形

热门文章

  1. Q102:光线追踪场景(3)——Two Horses
  2. 计算机专业三年级的学生英语,计算机专业英语 计算机专业英语对照表.doc
  3. cad怎么表示出一个孔_怎么训练出一个NB的Prophet模型
  4. Java学习笔记基础(中)
  5. vue组件制作专题 - (mpvue专用)在mpvue中纯自己写css实现简单左右轮播
  6. Java回调网址_极光短信- 回调接口 - 极光文档
  7. pythonjs语法_javascript基础语法(上)
  8. shell逻辑运算符优先级_逻辑运算符有那些?
  9. arduino analogread_Arduino编程语言教程,Arduino和单片机的区别
  10. html2canvas在手机不行,html2canvas - 在iOS设备上崩溃