android中getSystemService详解

转载 2015年11月20日 16:53:58
  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();

怎么在类中使用getSystemService?

有效的解决方法: 楼主指的应该是在第三方类中使用android的服务。 我的解决方案如下: 新建一个MyApplication类 public class MyApplication exten...
  • qing101hua
  • qing101hua
  • 2015年07月05日 18:07
  • 1437

QtAndroid详解(4):JNI调用Android系统功能(1)

在Qt中,通过 Qt JNI 类库调用 Android 系统功能,判断网络状态,获取SDK版本,获取各种资源目录(外部存储、数据、图片、音乐、视频等),获取当前应用信息……...
  • foruok
  • foruok
  • 2015年03月01日 08:00
  • 8892

Android USB相关流程解析(android4.4)

前言: 对于USB的一些常量属性,比如:UsbManager. USB_FUNCTION_RNDIS等,现在也是一个比较模糊的概念,只能具体问题具体分析,我们重点说的是类结构,与USB整个框架(仅限...
  • daweibalang717
  • daweibalang717
  • 2014年12月24日 15:08
  • 2914

android中getSystemService详解

  • 2014年09月28日 10:07
  • 1.52MB
  • 下载

android中getSystemService详解

http://blog.sina.com.cn/s/blog_71d1e4fc0100o8qr.html http://blog.csdn.net/bianhaohui/article/deta...
  • Moonant
  • Moonant
  • 2013年09月08日 23:37
  • 701

[转载]android中getSystemService详解

原文地址:android中getSystemService详解作者:邹斌 http://blog.sina.com.cn/s/blog_71d1e4fc0100o8qr.html http:/...
  • lby826
  • lby826
  • 2014年06月01日 10:05
  • 320

Android的getSystemService函数学习总结

  • 2013年01月22日 16:33
  • 69KB
  • 下载

Android getSystemService获取系统相应的服务

getSystemService是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。 ...
  • qq_22118507
  • qq_22118507
  • 2016年06月14日 17:16
  • 470

Android中服务管理相关流程getSystemService

我们经常会使用context来获取服务实例,完成某些特定的功能。 辣么他的大致是什么样的流程呢?下面跟踪一下source code。 一、相关的类文件: framework/base/co...
  • xxm282828
  • xxm282828
  • 2015年10月09日 17:43
  • 835

Android中getSystemService流程

在平时的android开发中,我们经常会通过Context来获取系统服务,比如ActivityManagerService,AccountManagerService等系统服务,今天我们就来看下get...
  • mockingbirds
  • mockingbirds
  • 2016年11月05日 22:04
  • 5601
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android中getSystemService详解
举报原因:
原因补充:

(最多只允许输入30个字)