`

【转】绝对有用,Android 获取电信网络

阅读更多

作者原文连接,转载请注明:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=74662

        谢谢合作!

                             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中。

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));
}

}

 

其中getString()传入的第二个参数是想要取得的设置值的名称,可以直接使用API中已经定义好的常数传入。除了范例中提到的蓝牙状态、无线网络状态、飞行模式、数据漫游状态之外,还有更多的手机设置值可以取得,比如说,设置的信息提示声音、设置的铃声等,表5-11所示列举几个Android.provider.Settings.System中的常数供大家参考。



 

  • 大小: 14.9 KB
分享到:
评论
1 楼 JavaJ2me 2012-03-16  
如何打开和关闭数据漫游呢,,这只做到了查询它的状态。

相关推荐

    Android 获取移动网络及SIM卡运营商信息.rar

    Android 获取移动网络及SIM卡运营商信息,可获取到SIM卡国别、SIM卡序列号、SIM卡状态、运营商代号、手机制式等信息。获取各个数据项的值:  listValues.add(tm.getDeviceId());//获取设备编号  listValues.add(tm...

    Android 获取当前网速质量调整网络请求

    在Android开发中,获取当前网速质量和调整网络请求是至关重要的任务,这直接影响到应用程序的用户体验和性能。本文将深入探讨这两个主题,并提供相应的实践方法。 首先,我们要了解如何在Android系统中检测网络速度...

    android获取文件绝对路径类

    android获取文件绝对路径类,是本人项目中直接取出的类。在protected void onActivityResult()中使用

    android通过访问网络获取网络时间,并修改系统时间

    在Android平台上,获取网络时间并...以上就是Android通过访问网络获取网络时间并修改系统时间的基本方法和相关知识点。在实际开发中,还应考虑到网络延迟、错误处理、权限管理等因素,以确保功能的稳定性和用户体验。

    android获取步数

    在Android开发中,Apache的相关库通常用于网络请求或其他辅助功能,但在这个DEMO中,由于描述中提到“不用写后台”,我们可以推断可能没有涉及到复杂的网络交互,而是直接使用了Android系统提供的API。 综上所述,...

    android获取wifi和Ethernet信息

    获取带有以太网接口的android系统中ethernet和wifi连接信息(连接状态,IP地址,dns,netmask等信息)

    android获取当前壁纸

    在Android平台上,获取当前桌面壁纸是一项常见的任务,尤其在开发个性化应用或与用户界面相关的功能时。本篇文章将深入探讨如何实现这一功能,基于提供的链接(已无法访问,但可以根据历史资料推测方法)以及Android...

    Android_获取进程的上下行流量

    ### Android 获取进程的上下行流量 #### Trafficstats 类简介 `TrafficStats` 是 Android 提供的一个用于统计设备网络流量的工具类,自 Android 2.2 版本开始引入。这个类提供了一系列静态方法,可以帮助开发者...

    Android如何获得网络资源的大小

    本文将详细介绍如何在Android应用程序中获取网络资源的实际大小。 #### 一、使用`HttpURLConnection`获取资源大小 在Android中,最常用的方法之一是通过`HttpURLConnection`来获取远程资源的信息。下面是一个具体...

    Android获取当前网络状态并检测网络的连接模式

    在Android开发中,获取当前网络状态以及检测网络连接模式是一项重要的功能,这有助于应用程序根据不同的网络环境提供相应的服务。本文将详细讲解如何在Android中实现这一功能。 首先,要获取网络状态,我们需要引入...

    Android 手机获取手机号实现方法

    在Android平台上,获取手机用户绑定的手机号码是一个常见的需求,特别是在开发需要用户验证或个性化服务的应用时。然而,由于隐私保护政策和不同运营商的限制,直接获取手机号码并不总是可行的。本文将详细介绍如何...

    android获取wifi的IP,子网掩码,网关,dns等信息

    在Android平台上,获取WiFi网络的IP地址、子网掩码、网关以及DNS信息是开发者经常需要处理的任务,这有助于实现各种网络相关的功能,比如网络诊断、设备间通信或者网络状态监控。以下将详细介绍如何在Android中获取...

    android 如何从网络获取一张图片并显示

    如何从网络中获取一张图片,并显示出来?? 首先应想到若要从网络资源中获取图片,就需要通过流操作,于是就想到如何创建流。 第一步:指定图片资源的URL 第二步:通过RUL获取一个connection 第三步:通过连接获取...

    Android通过网络URL获取图片并显示

    本篇将详细讲解如何在Android应用中实现从网络URL获取并显示图片的功能。 首先,我们需要一个网络库来处理HTTP请求。常见的有Volley、OkHttp和Retrofit等。这里以OkHttp为例,它是一个高效的网络库,支持异步请求和...

    Android从网络上获取Gif图片并显示

    利用android开源库android-gif-drawable和android-async-http不仅能显示本地的gif图片,还能从网络上获取Gif图片并显示.即使是较大的gif图片,也不会报OOM异常。

    Android获取指定应用,单独应用的流量统计

    在Android系统中,获取指定应用的流量统计是一项重要的任务,特别是在优化网络使用、监控数据消耗或者进行应用性能分析时。本文将深入探讨如何在Android环境下,针对特定的应用程序,统计其在WiFi和GPRS(2G)网络下...

    获取android设备的内网IP地址

    在Android平台上,获取设备的内网IP地址是一个常见的需求,特别是在网络通信或者设备间互动的场景下。这个“获取android设备的内网IP地址”的demo就是为此目的设计的。它首先尝试通过WiFi接口获取IP,如果WiFi未开启...

    Android获取移动网络信息工具类

    Android获取移动网络信息的工具类,可获取周围基站信息,IMEI号,IMSI号,本机号码等工具类,供大家参考使用

    android获取打印机状态

    在Android平台上,获取打印机状态是实现移动设备与打印机交互的关键环节。这主要涉及到Android的打印框架,它允许开发者不仅发送打印作业,还能监控打印机的工作状态,以便更好地控制打印过程和提供用户反馈。以下将...

    android如何获取相片的拍摄日期

    在Android系统中,获取照片的拍摄日期以及其他相关信息是通过读取图像文件的元数据来实现的。这些元数据通常存储在JPEG文件的Exchangeable Image File Format (EXIF) 标签中。以下是一些关键步骤和知识点,教你如何...

Global site tag (gtag.js) - Google Analytics