TelephonyManager与android.provider.Settings.System的应用
我们在前面的范例当中,已经示范过如何通过TelephonyManager(android.telephony. TelephonyManager)对象来取得SIM卡状态及相关信息,除了SIM卡信息外,TelephonyManager还可以用来取得电信网络的相关信息。例如,电信网络国别、电信公司代码、电信公司名称、网络类型等,甚至还可以取得每部手机唯一的IMEI码与IMSI码。
除此之外,如果要取得手机内的设置值,如蓝牙、无线网络的设置状态,还可以通过Android API提供的android.provider.Settings.System对象来取得。
本范例将示范如何运用TelephonyManager取得目前的电信网络相关信息,以及如何运用android.provider.Settings.System来取得手机的相关信息与设置。
效果图
程序中以getSystemService(TELEPHONY_SERVICE)来取得TelephonyManager对象,再通过TelephonyManager提供的方法来取得电信网络相关信息。
另外,程序以android.provider.Settings.System.getString()来取得手机相关设置信息,并将取得的信息存入自定义的MyAdapter中,最后以setListAdapter()将MyAdapter内的信息显示在ListView中。
Java代码:
我们在前面的范例当中,已经示范过如何通过TelephonyManager(android.telephony. TelephonyManager)对象来取得SIM卡状态及相关信息,除了SIM卡信息外,TelephonyManager还可以用来取得电信网络的相关信息。例如,电信网络国别、电信公司代码、电信公司名称、网络类型等,甚至还可以取得每部手机唯一的IMEI码与IMSI码。
除此之外,如果要取得手机内的设置值,如蓝牙、无线网络的设置状态,还可以通过Android API提供的android.provider.Settings.System对象来取得。
本范例将示范如何运用TelephonyManager取得目前的电信网络相关信息,以及如何运用android.provider.Settings.System来取得手机的相关信息与设置。
效果图
程序中以getSystemService(TELEPHONY_SERVICE)来取得TelephonyManager对象,再通过TelephonyManager提供的方法来取得电信网络相关信息。
另外,程序以android.provider.Settings.System.getString()来取得手机相关设置信息,并将取得的信息存入自定义的MyAdapter中,最后以setListAdapter()将MyAdapter内的信息显示在ListView中。
Java代码:
- import android.content.ContentResolver;
- import android.telephony.TelephonyManager;
- public class EX05_24 extends ListActivity {
- private TelephonyManager telMgr;
- private List<String> item=new ArrayList<String>();
- private List<String> value=new ArrayList<String>();
- @SuppressWarnings("static-access")
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- /* 加载main.xml Layout */
- setContentView(R.layout.main);
- telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
- /* 将取得的信息写入List中 */
- /* 取得手机电话号码 */
- item.add(getResources().getText(R.string.str_list0).toString());
- if(telMgr.getLine1Number()!=null) {
- value.add(telMgr.getLine1Number());
- } else {
- value.add("无法取得");
- }
- /* 取得电信网络国别 */
- item.add(getResources().getText(R.string.str_list1).toString());
- if(telMgr.getNetworkCountryIso().equals("")) {
- value.add("无法取得");
- } else {
- value.add(""+telMgr.getNetworkCountryIso());
- }
- /* 取得电信公司代码 */
- item.add(getResources().getText(R.string.str_list2).toString());
- if(telMgr.getNetworkOperator().equals("")) {
- value.add("无法取得");
- } else {
- value.add(telMgr.getNetworkOperator());
- }
- /* 取得电信公司名称 */
- item.add(getResources().getText(R.string.str_list3).toString());
- if(telMgr.getNetworkOperatorName().equals("")) {
- value.add("无法取得");
- } else {
- value.add(telMgr.getNetworkOperatorName());
- }
- /* 取得移动通信类型 */
- item.add(getResources().getText(R.string.str_list4).toString());
- if(telMgr.getPhoneType()==telMgr.PHONE_TYPE_GSM) {
- value.add("GSM");
- } else {
- value.add("未知");
- }
- /* 取得网络类型 */
- item.add(getResources().getText(R.string.str_list5).toString());
- if(telMgr.getNetworkType()==telMgr.NETWORK_TYPE_EDGE) {
- value.add("EDGE");
- } else if(telMgr.getNetworkType()==telMgr.NETWORK_TYPE_GPRS) {
- value.add("GPRS");
- } else if(telMgr.getNetworkType()==telMgr.NETWORK_TYPE_UMTS) {
- value.add("UMTS");
- } else if(telMgr.getNetworkType()==4) {
- value.add("HSDPA");
- } else { value.add("未知");
- }
- /* 取得漫游状态 */
- item.add(getResources().getText(R.string.str_list6).toString());
- if(telMgr.isNetworkRoaming()) {
- value.add("漫游中");
- } else{
- value.add("无漫游");
- }
- /* 取得手机IMEI */
- item.add(getResources().getText(R.string.str_list7).toString());
- value.add(telMgr.getDeviceId());
- /* 取得IMEI SV */
- item.add(getResources().getText(R.string.str_list8).toString());
- if(telMgr.getDeviceSoftwareVersion()!=null) {
- value.add(telMgr.getDeviceSoftwareVersion());
- } else {
- value.add("无法取得");
- }
- /* 取得手机IMSI */
- item.add(getResources().getText(R.string.str_list9).toString());
- if(telMgr.getSubscriberId()!=null) {
- value.add(telMgr.getSubscriberId());
- } else {
- value.add("无法取得");
- }
- /* 取得ContentResolver */
- ContentResolver cv = EX05_24.this.getContentResolver();
- String tmpS="";
- /* 取得蓝牙状态 */
- item.add(getResources().getText(R.string.str_list10) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.BLUETOOTH_ON);
- if(tmpS.equals("1")) {
- value.add("已打开");
- } else{
- value.add("未打开");
- }
- /* 取得WIFI状态 */
- item.add(getResources().getText(R.string.str_list11) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.WIFI_ON); if(tmpS.equals("1")) {
- value.add("已打开");
- } else{
- value.add("未打开");
- }
- /* 取得飞行模式是否打开 */
- item.add(getResources().getText(R.string.str_list12) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.AIRPLANE_MODE_ON);
- if(tmpS.equals("1")) {
- value.add("打开中");
- } else{
- value.add("未打开");
- }
- /* 取得数据漫游是否打开 */
- item.add(getResources().getText(R.string.str_list13) .toString()); tmpS=android.provider.Settings.System.getString(cv, android.provider.Settings.System.DATA_ROAMING);
- if(tmpS.equals("1")) {
- value.add("打开中");
- } else{
- value.add("未打开");
- }
- /* 使用自定义的MyAdapter来将数据传入ListActivity */
- setListAdapter(new MyAdapter(this,item,value));
- }
- }