android中getSystemService详解
2015-06-25 10:10
363 查看
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类里面调用的时候 总是出现进程关闭 无法获取手机信息。后来发现
于是:
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,它们在系统启动时被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();
相关文章推荐
- 浅谈MVP In Android
- android 电视端应用不同分辨率的适配
- 菜鸟学Android笔记(四十一):JSP指令元素——page指令
- android适配器的简单使用
- Android使用j4lChartAndroid插件绘制3D饼图
- Android五天乐(第三天)ListFragment与ViewPager
- Android开发中完全退出程序的三种方法
- android 5.0以上使用AlertDialog出现未充满屏幕的灰色背景
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- Android 中自定义控件和属性(attr.xml,declare-styleable,TypedArray)的方法和使用
- Android 使用notepad++ 格式化本地Json数据需要的对比安装插件
- Android Blur效果之FastBlur
- android加载大图片
- Android应用程序设置系统时间的方法
- [android] apk 版本升级
- Android Context 上下文 你必须知道的一切
- android 自定义控件 使用declare-styleable进行配置属性(源码角度)
- Android SQLite数据库使用
- 安卓(Android)x86 4.4虚拟机怎么安装?想知道的朋友就和小编一起来看看安卓(Android)x86 4.4虚拟机安装配置详细图文教程吧
- android 使用git打补丁