文档章节

android中getSystemService详解

程序袁_绪龙
 程序袁_绪龙
发布于 2014/09/29 09:14
字数 703
阅读 135
收藏 3
my.oschina.net/yuanxulong/blog/323173
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();

© 著作权归作者所有

共有 人打赏支持
程序袁_绪龙
粉丝 101
博文 242
码字总数 66750
作品 0
普陀
程序员
私信 提问
Android开发之EditText属性详解

1、EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 (2)在代码里设置: 通过设置EditText的setTransformation...

的书法上的
2014/07/28
0
0
利用Activity实现一个简单的可输入对话框

1、需求分析 在应用中这样那样的评论总是少不了的,有的应用是在底部直接加一个EditText和一个Button,让用户输入文字或者表情之后点击按钮提交;而有的虽然也放置了EditText,但仅仅是一个“...

Lindroid
2017/10/23
0
0
Android Alarm manager定时闹钟开发详解

Android Alarm manager定时闹钟开发详解 Alarmmanager主要管理硬件时钟。 一些与时间相关的应用,如日历,闹钟等需要使用AlarmManager的服务。Alarmmanager 功能相对比较简单,相关代码位于 ...

庸人谷
2012/12/29
0
0
管与android软键盘隐藏总结

转载::Linux社区 1>软键盘的状态——隐藏或显示。 一:自动弹出软键盘 Timer timer=new Timer(); timer.schedule(new TimerTask() { public void run() { InputMethodManager inputMethod......

迷途d书童
2012/03/26
669
0
LayoutInflater详解

 分析时候遇到的,记录一个 作用: 1、对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 2、对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewByI...

骑牛找牛
2014/01/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
13分钟前
0
0
一文详解微服务架构的数据设计

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮...

java菜分享
24分钟前
2
0
Java并发编程之美读书笔记-并发编程基础1

线程 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,比如idea运行代码时的jvm是一个进程,但是CPU资源比较特殊,它是被分配到线程的,线程是进程的一个执行路...

hensemlee
36分钟前
1
0
【剑指offer纪念版】--10 进制1的个数

10. 题目 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 解题思路   把一个整数减去1,再和原整...

细节探索者
51分钟前
2
0
本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!

互联网行业遭遇寒冬,企业纷纷裁员缩招,而 BAT 和硅谷明星公司对 AI 人才的投入却并不见放缓。为争夺相关人才,给应届毕业生开出的平均年薪高达 30 万。 而 TensorFlow 作为当下最流行的深度...

AI女神
57分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部