文档章节

获取Android设备基本信息 TelephonyManager

dominic69
 dominic69
发布于 2015/06/24 13:15
字数 933
阅读 84
收藏 0
点赞 0
评论 0

android设备号是唯一的deviceID;

TelephonyManager

这个管理类中包含很多属性,
       TelephonyManager tm= (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
       listValues.add(tm.getDeviceId());//获取设备编号
       listValues.add(tm.getSimCountryIso());//获取SIM卡国别
       listValues.add(tm.getSimSerialNumber());//获取SIM卡序列号    
       listValues.add(simState[tm.getSimState()]);//获取SIM卡状态
       listValues.add((tm.getDeviceSoftwareVersion()!=null?tm.getDeviceSoftwareVersion():"未知"));    //获取软件版本
       listValues.add(tm.getNetworkOperator());//获取网络运营商代号
       listValues.add(tm.getNetworkOperatorName());//获取网络运营商名称
       listValues.add(phoneType[tm.getPhoneType()]);//获取手机制式
       listValues.add(tm.getCellLocation().toString());//获取设备当前位置

另外网络的判断,判断是否连接上了网络
class MyBroadcast extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  // mobile 3G Data Network
  NetworkInfo mobile = CM
    .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
  // wifi net
  NetworkInfo wifi = CM.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  try {
  // 判断网络是否连接
  // 如果3G网络和wifi网络都未连接,且不是处于正在连接状态 则进入Network Setting界面 由用户配置网络连接
  if (!mobile.isConnected() && !wifi.isConnected()) {
   signals.setVisibility(View.GONE);
         signals.setBackgroundResource(R.drawable.well);
   tv_nettype.setVisibility(0);// 设置可见
   tv_nettype.setText("未连接网络,请连接可用网络!");
   tv_signal.setVisibility(View.VISIBLE);
   tv_signal.setText("无信号");
   tv_netname.setVisibility(View.VISIBLE);
   tv_netname.setText("无名称");
   dispaly_ping.setVisibility(View.GONE);
   hint.setVisibility(View.GONE);
//    tv_setting.setText("当前未连接任何网络是否重置?");
//    tv_signal.setVisibility(View.GONE);
//    tv_setting.setOnClickListener(new OnClickListener() {
//     @Override
//     public void onClick(View v) {
//      startActivity(new Intent(
//        Settings.ACTION_WIRELESS_SETTINGS));// 进入无线网络配置界面
//     }
//    });
  } else {
   // 网络已经连接
   CM = (ConnectivityManager) ActivityAppList.this
     .getSystemService(Context.CONNECTIVITY_SERVICE);
   //获得wifi管理的服务
   wifiManager = (WifiManager) ActivityAppList.this
     .getSystemService(Context.WIFI_SERVICE);
   //获取网络服务的
   NetworkInfo networkInfo = CM.getActiveNetworkInfo();
   //获取网络类型
   int nettype = networkInfo.getType();
   //如果是wifi
   if (nettype == ConnectivityManager.TYPE_WIFI) {
    // 当前使用的是
    tv_nettype.setVisibility(0);
    tv_nettype.setText("当前网络连接类型:WIFI");
    tv_netname.setVisibility(0);
    signals.setVisibility(View.VISIBLE);
    tv_signal.setVisibility(View.VISIBLE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    int speed = wifiInfo.getLinkSpeed();// 获取连接速度
    int ipaddress = wifiInfo.getIpAddress(); // 获取ip地址
    int netid = wifiInfo.getNetworkId(); // 获取网络id
    int netrssi = wifiInfo.getRssi();// 信号的强度
    String macaddress = wifiInfo.getMacAddress();// 取得设备的mac地址
    String netname = wifiInfo.getSSID(); // 获取网络名称
    getConfiguration();
    System.out
      .println("");
     removeWifi("CMCC");
     String wifiname=wifiInfo.getSSID();
     int wifiId=0;
    if ("CMCC".equals(wifiname)) {
     wifiId=wifiInfo.getNetworkId();
     System.out
       .println(wifiId+"^^^^^^^");
     wifiManager.removeNetwork(wifiId);
    }else if("ChinaNet".equals(wifiname)){
     wifiId=wifiInfo.getNetworkId();
     System.out
       .println(wifiId+"^^^^^^^");
     wifiManager.removeNetwork(wifiId);
    }else if("ChinaUnicom".equals(wifiname)){
     wifiId=wifiInfo.getNetworkId();
     System.out
       .println(wifiId+"^^^^^^^");
     wifiManager.removeNetwork(wifiId);
    }else if("CMCC-EDU".equals(wifiname)){
     wifiId=wifiInfo.getNetworkId();
     System.out
       .println(wifiId+"^^^^^^^");
    }
    System.out.println(netid+"net=====");
     tv_netname.setText("网络名称:" + netname);
    if (netrssi < 0 && netrssi > -50) {
     signals.setBackgroundResource(R.drawable.good);
     tv_signal.setText("网络信号强度:" + "好");
    } else if (netrssi < -50 && netrssi > -70) {
     signals.setBackgroundResource(R.drawable.well);
     tv_signal.setText("网络信号强度:" + "一般");
    } else if (netrssi < -70) {
     tv_signal.setText("网络信号强度:" + "较差");
     signals.setBackgroundResource(R.drawable.bad);
    }
   } else {
    tv_signal.setVisibility(View.VISIBLE);
    signals.setVisibility(View.VISIBLE);
    CM = (ConnectivityManager) ActivityAppList.this
      .getSystemService(Context.CONNECTIVITY_SERVICE);
    //网络类型为:数据连接
    tv_nettype.setVisibility(View.VISIBLE);
    tv_nettype.setText("当前网络类型:数据连接");
    tv_netname.setVisibility(View.GONE);
    tel.listen(new PhoneStateMonitor(),
      PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
        | PhoneStateListener.LISTEN_SERVICE_STATE);
   
   }
  }
  } catch (Exception e) {
   // TODO: handle exception
  }
 
}

获取 手机型号  phoneName = Build.MANUFACTURER + "-" + Build.MODEL;
获取SN号
package com.innofidei.createsn;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import com.innofidei.read.ReadSXTBChannel;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
    private Button btn;
    private String path="mnt/sdcard/xxx.txt";
    private TelephonyManager tm;
    String sn;
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 btn=(Button) findViewById(R.id.btn1);
 tm= (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
 //sn=tm.getDeviceId();
 sn = Secure.getString(MainActivity.this.getContentResolver(), Secure.ANDROID_ID);
 btn.setOnClickListener(new OnClickListener() {
 
  @Override
  public void onClick(View v) {
   //生成在SDcard sn号
   File file=new File(path);
   if (!file.exists()) {
    try {
     file.createNewFile();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   
    BufferedReader br;
    FileWriter fw;
    FileReader fr;
    BufferedWriter bw;
    StringBuffer sb = new StringBuffer();
    try {
     fw = new FileWriter(file);// 初始化输出流
     bw = new BufferedWriter(fw);// 初始化输出字符流
     bw.write(sn);// 写文件
     bw.flush();
     bw.close();
     fw.close();
     fr = new FileReader(file);// 初始化输入流
     br = new BufferedReader(fr);// 初始化输入字符流
     sb.append(br.readLine().toString());// 按行读文件
     System.out.println("文件内容是:" + sb);
     if (sb!=null) {
      new AlertDialog.Builder(MainActivity.this)
      .setTitle(String.valueOf("获取的SN号"))
      .setMessage(String.valueOf("SN号已经获取到“,sb)
      .setPositiveButton("确  定",
        new DialogInterface.OnClickListener() {
         @Override
         public void onClick(
           DialogInterface dialog,
           int which) {
         
         }
        }).show();
      Toast.makeText(MainActivity.this, "SN号初始化完成"+sb.toString(), Toast.LENGTH_LONG).show();
     }
     br.close();
     fr.close();
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
   else {
     }
     }catch (FileNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }      
           
     
    }
  }
 });
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
}
}

© 著作权归作者所有

共有 人打赏支持
dominic69
粉丝 5
博文 25
码字总数 18061
作品 0
浦东
程序员
android如何获取设备的唯一设备码

在某些项目中,需要记录用户的某些设置,或行为,并上传到服务器,如果无需用户登录注册,就可记录独立这些内容,就需要用到设备的某些独立的序列。(以下部分android需要API8以以上,andro...

卐字旗下的余晖 ⋅ 2013/12/18 ⋅ 0

Android蓝牙库-FastBle的简易使用

发布自Kindem的博客,欢迎大家转载,但是要注意注明出处 最近在做物联网课设,过程中需要用到Android的蓝牙API,奈何原生的蓝牙API使用有点麻烦。于是上网搜索看有没有好用的Android蓝牙库,...

Kindem ⋅ 05/25 ⋅ 0

揭密针对Android设备的物理取证方法(三)

今天,我将会介绍一些其他的Android设备的物理取证方法。前两次的分析,你可以点此(1.2)详细了解。 对摩托罗拉智能手机的取证 Oxygen开发了一种基于bootloader级别的CVE漏洞的技术,该技术...

技术小能手 ⋅ 06/08 ⋅ 0

Android设备的唯一ID

关于本文档 Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID。例如,跟踪应用程序的安装,生成用于复制保护的DRM时需要使用设备的唯一ID。在本文档结尾处提供了作为参考的示例...

朱园 ⋅ 2013/11/29 ⋅ 0

Android TelephonyManager类

Android本机号码及Sim卡状态的获取 TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息。 package eoe.demo; import android.app.Activity;import android.os.Bundle;import ...

长平狐 ⋅ 2012/08/14 ⋅ 0

Android TelephonyManager类

Android本机号码及Sim卡状态的获取 TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息。 package eoe.demo; import android.app.Activity;import android.os.Bundle;import ...

长平狐 ⋅ 2012/08/09 ⋅ 0

Android TelephonyManager类

Android本机号码及Sim卡状态的获取 TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息。 package eoe.demo; import android.app.Activity;import android.os.Bundle;import ...

长平狐 ⋅ 2012/08/21 ⋅ 1

Android 解析imei

Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId(); 在manifest.xml文件中要添加 import android.app.Activity; import android.os.Bundle; import android.......

长平狐 ⋅ 2012/08/14 ⋅ 0

Android 解析imei

Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId(); 在manifest.xml文件中要添加 import android.app.Activity; import android.os.Bundle; import android.......

长平狐 ⋅ 2012/08/09 ⋅ 0

android之通过phoneStateListener监听电话状态改变

效果图 当我们外部打电话过来的时候,当前的信息会自动的进行改变。 ------------------------------------------------------------------------------- package cn.com.chenzheng_java; i...

孙泽伟 ⋅ 2013/09/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部