1.使用android.os.SystemProperties的方法


Android系统主要通过SystemProperties这个类,直接本地调用来实现创建、获取及修改系统属性.

Systemproperties类在android.os下,路径为:

/frameworks/base/core/java/android/os/SystemProperties.java

Systemproperties类在android.os下,但这个类是隐藏的,上层程序开发无法直接使用。


android.os.SystemProperties在SDK的库中是没有的,需要把

AndroidSDK\platforms\android-xx\data\layoutlib.jar

文件加到当前工程的附加库路径中,然后在源程序中就可以Import了


但是,Java Build Path->Libraries里添加External JARs方法不能直接添加

先将layoutlib.jar文件拷贝到项目根目录下,然后点右键 Build Path——>add to Build Path就OK了


获取系统属性:

android.os.SystemProperties.get("ro.build.version.sdk")

其中key值在android源码目录

android\platform\out\target\product\mt8658sdk\system\build.prop

文件中

#beginbuildproperties#autogeneratedbybuildinfo.shro.build.id=IMM76Lro.build.version.incremental=eng.****.20140829.161823ro.build.version.sdk=15ro.build.version.codename=RELro.build.version.release=4.0.4ro.build.date=2014年08月29日星期五16:18:59CSTro.build.date.utc=1409300339ro.build.type=engro.build.user=*****ro.build.host=iptv-intro.build.tags=dev-keysro.wifi.channels=#ro.build.productisobsolete;usero.product.device#Donottrytoparsero.build.descriptionor.fingerprintro.build.characteristics=defaultpersist.sys.country=USpersist.sys.language=esro.product.HWVersion=YMB.A202.Aro.product.SWVersion=001.006.711ro.product.SWVersion.Num=001006711#endbuildproperties##ADDITIONAL_BUILD_PROPERTIES#ro.com.android.dateformat=MM-dd-yyyyro.config.ringtone=Ring_Synth_04.oggro.config.notification_sound=pixiedust.oggro.config.alarm_alert=Alarm_Classic.oggwifi.interface=wlan0



特别属性 :


  如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。


  如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。


  如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。


设置属性时需注意:

android.os.SystemProperties.set(key,val)

其中key值的命名前缀必须用

android\platform\system\core\init

中定义的前缀,进行系统属性设置的程序也必须有system或root权限

如何将android程序的权限提升到system权限?方法是这样的:

1、在AndroidManifest.xml中,在manifest加入

android:sharedUserId="android.uid.system"

2、在Android.mk中,將

LOCAL_CERTIFICATE:=XXX

修改成

LOCAL_CERTIFICATE:=platform



2.TelephonyManager获取手机信息


TelephonyManagertm=(TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);/**电话状态:1.tm.CALL_STATE_IDLE=0无活动2.tm.CALL_STATE_RINGING=1响铃*3.tm.CALL_STATE_OFFHOOK=2摘机*/tm.getCallState();//int/**电话方位:*/tm.getCellLocation();//CellLocation/**唯一的设备ID:GSM手机的IMEI和CDMA手机的MEID.ReturnnullifdeviceIDisnot*available.*/tm.getDeviceId();//String/**设备的软件版本号:例如:theIMEI/SV(softwareversion)forGSMphones.Return*nullifthesoftwareversionisnotavailable.*/tm.getDeviceSoftwareVersion();//String/**手机号:GSM手机的MSISDN.Returnnullifitisunavailable.*/tm.getLine1Number();//String/**附近的电话的信息:类型:List<NeighboringCellInfo>*需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES*/tm.getNeighboringCellInfo();//List<NeighboringCellInfo>/**获取ISO标准的国家码,即国际长途区号。注意:仅当用户已在网络注册后有效。在CDMA网络中结果也许不可靠。*/tm.getNetworkCountryIso();//String/**MCC+MNC(mobilecountrycode+mobilenetworkcode)注意:仅当用户已在网络注册时有效。*在CDMA网络中结果也许不可靠。*/tm.getNetworkOperator();//String/**按照字母次序的currentregisteredoperator(当前已注册的用户)的名字注意:仅当用户已在网络注册时有效。*在CDMA网络中结果也许不可靠。*/tm.getNetworkOperatorName();//String/**当前使用的网络类型:例如:NETWORK_TYPE_UNKNOWN网络类型未知0NETWORK_TYPE_GPRSGPRS网络*1NETWORK_TYPE_EDGEEDGE网络2NETWORK_TYPE_UMTSUMTS网络3*NETWORK_TYPE_HSDPAHSDPA网络8NETWORK_TYPE_HSUPAHSUPA网络9*NETWORK_TYPE_HSPAHSPA网络10NETWORK_TYPE_CDMACDMA网络,IS95A或IS95B.4*NETWORK_TYPE_EVDO_0EVDO网络,revision0.5NETWORK_TYPE_EVDO_AEVDO网络,*revisionA.6NETWORK_TYPE_1xRTT1xRTT网络7*/tm.getNetworkType();//int/**手机类型:例如:PHONE_TYPE_NONE无信号PHONE_TYPE_GSMGSM信号PHONE_TYPE_CDMA*CDMA信号*/tm.getPhoneType();//int/**ReturnstheISOcountrycodeequivalentfortheSIMprovider's*countrycode.获取ISO国家码,相当于提供SIM卡的国家码。*/tm.getSimCountryIso();//String/**ReturnstheMCC+MNC(mobilecountrycode+mobilenetworkcode)of*theprovideroftheSIM.5or6decimaldigits.*获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.SIM卡的状态必须是*SIM_STATE_READY(使用getSimState()判断).*/tm.getSimOperator();//String/**服务商名称:例如:中国移动、联通SIM卡的状态必须是SIM_STATE_READY(使用getSimState()判断).*/tm.getSimOperatorName();//String/**SIM卡的序列号:需要权限:READ_PHONE_STATE*/tm.getSimSerialNumber();//String/**SIM的状态信息:SIM_STATE_UNKNOWN未知状态0SIM_STATE_ABSENT没插卡1*SIM_STATE_PIN_REQUIRED锁定状态,需要用户的PIN码解锁2SIM_STATE_PUK_REQUIRED*锁定状态,需要用户的PUK码解锁3SIM_STATE_NETWORK_LOCKED锁定状态,需要网络的PIN码解锁4*SIM_STATE_READY就绪状态5*/tm.getSimState();//int/**唯一的用户ID:例如:IMSI(国际移动用户识别码)foraGSMphone.需要权限:READ_PHONE_STATE*/tm.getSubscriberId();//String/**取得和语音邮件相关的标签,即为识别符需要权限:READ_PHONE_STATE*/tm.getVoiceMailAlphaTag();//String/**获取语音邮件号码:需要权限:READ_PHONE_STATE*/tm.getVoiceMailNumber();//String/**ICC卡是否存在*/tm.hasIccCard();//boolean/**是否漫游:(在GSM用途下)*/tm.isNetworkRoaming();