这里面也写了获取本机手机号码的代码,但是测试之后发现只有华为nove3 才可以获取到,不过其他一些重要的信息都可以拿到,MAC,IMEI,IMSI,ICCID。

想测试的话,这个是Apk包地址   百度云链接:https://pan.baidu.com/s/1_L2oc0PDORzdy72j5o-K1w  密码:ldq8

上代码吧

这是一些权限

这里Main2Activity是程序入口

------------------------ Main2Activity--------------------------

package com.example.earl.smalldemo;

import android.Manifest;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.os.Build;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

public class Main2Activity extends AppCompatActivity {

private static final String TAG = "Main2Activity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

Button button = findViewById(R.id.btn);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(Main2Activity.this, MainActivity.class);

startActivity(intent);

finish();

}

});

//8.0动态权限

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

int checkPermission = checkSelfPermission(Manifest.permission.READ_PHONE_STATE);

if (checkPermission != PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1); //后面的1为请求码

Log.d(TAG, "未授权,去授权");

return;

} else {

Log.d(TAG, "已授权...");

}

} else {

Log.d(TAG, "版本<=8.0");

}

}

}

------------------------ MainActivity--------------------------

package com.example.earl.smalldemo;

import android.Manifest;

import android.content.Context;

import android.content.pm.PackageManager;

import android.os.Build;

import android.support.v4.app.ActivityCompat;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.telephony.TelephonyManager;

import android.util.Log;

import android.widget.TextView;

import java.net.NetworkInterface;

import java.util.Collections;

import java.util.List;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

private static final String TODO = null;

private TextView tv1;

private TextView tv2;

private TextView tv3;

private TextView tv4;

private TextView tv5;

Context mcontext;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mcontext = getApplicationContext();

tv1 = findViewById(R.id.tv1);

tv2 = findViewById(R.id.tv2);

tv3 = findViewById(R.id.tv3);

tv4 = findViewById(R.id.tv4);

tv5 = findViewById(R.id.tv5);

showInformation();

}

/**

* 获取到信息并展示

*/

public void showInformation() {

//获取Mac地址

String newMac = getNewMac();

tv1.setText("MAC: " + newMac);

//获取IMEI地址

String imei = getIMEI(mcontext);

tv2.setText("IMEI: " + imei);

//获取MSISDN

String msisdn = getMSISDN(mcontext);

if (msisdn != null) {

tv3.setText("手机号: " + msisdn);

Log.d(TAG, "showInformation: 非空");

} else {

Log.d(TAG, "showInformation: 空");

tv3.setText("手机号: " + "无法获取手机号码");

}

//获取IMSI

String imsi = getIMSI(mcontext);

tv4.setText("IMSI: " + imsi);

//获取ICCID

String iccid = getICCID(mcontext);

tv5.setText("ICCID: " + iccid);

}

/**

* 通过网络接口取

* 获取wifiMac地址

*

* @return

*/

private static String getNewMac() {

try {

Listall = Collections.list(NetworkInterface.getNetworkInterfaces());

for (NetworkInterface nif : all) {

if (!nif.getName().equalsIgnoreCase("wlan0")) continue;

byte[] macBytes = nif.getHardwareAddress();

if (macBytes == null) {

return null;

}

StringBuilder res1 = new StringBuilder();

for (byte b : macBytes) {

res1.append(String.format("%02X:", b));

}

if (res1.length() > 0) {

res1.deleteCharAt(res1.length() - 1);

}

return res1.toString();

}

} catch (Exception ex) {

ex.printStackTrace();

}

return null;

}

/**

* 获取手机IMEI号

*/

public static String getIMEI(Context context) {

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

return TODO;

}

String imei = telephonyManager.getDeviceId();

return imei;

}

/**

* 获取手机号

*/

public static String getMSISDN(Context context) {

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

return TODO;

}

String msisdn = telephonyManager.getLine1Number();

return msisdn;

}

/**

* 获取手机MSISDN号

*/

public static String getIMSI(Context context) {

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

return TODO;

}

String imsi = telephonyManager.getSubscriberId();

return imsi;

}

/**

* 获取手机ICCID号

*/

public static String getICCID(Context context) {

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

return TODO;

}

String iccid = telephonyManager.getSimSerialNumber();

return iccid;

}

@Override

protected void onPause() {

super.onPause();

//8.0动态权限

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

int checkPermission = checkSelfPermission(Manifest.permission.READ_PHONE_STATE);

if (checkPermission != PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1); //后面的1为请求码

Log.d(TAG, "onpause(),未授权,去授权");

//展示信息

showInformation();

return;

}

//展示信息

showInformation();

Log.d(TAG, "onpause()已授权...");

} else {

//展示信息

showInformation();

Log.d(TAG, "onpause()版本<=6.0");

}

}

@Override

protected void onDestroy() {

super.onDestroy();

//8.0动态权限

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

int checkPermission = checkSelfPermission(Manifest.permission.READ_PHONE_STATE);

if (checkPermission != PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1); //后面的1为请求码

Log.d(TAG, "ondestroy(),未授权,去授权");

//展示信息

showInformation();

return;

}

//展示信息

showInformation();

Log.d(TAG, "ondestroy(),已授权...");

} else {

//展示信息

showInformation();

Log.d(TAG, "ondestroy(),版本<=6.0");

}

}

}

布局文件

---------------------activity_main2.xml--------------------

----------------------------  activity_main  ---------------------------

android+imei+为null,适合Android7.0以上(到9.0)系统,获取 关于手机--状态信息 (如:MAC,IMEI,IMSI,ICCID)...相关推荐

  1. android编程设备信息,Android获取当前手机设备信息工具类详解

    工作中用到的图片处理工具类,简单写下来,以便备用! public class BitmapUtils { /** * 图像背景圆角处理 * bitmap要处理的图片 roundPx 图片弯角的圆度一般 ...

  2. Android实例-获取安卓手机WIFI信息(XE8+小米2)

    结果: 1.必须打开Access wifi state权限,不打开权限会出图二的错误. 相关资料: http://blog.csdn.net/lyf_lyf/article/category/1735 ...

  3. Android 获取双卡手机IMEI,IMSI,ICCID

    一.首先要添加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 二.获 ...

  4. 安卓iccid_Android 获取双卡手机IMEI,IMSI,ICCID

    一.首先要添加权限 二.获取主卡的IMEI,IMSI,ICCID /** * Author: liuqiang * Time: 2017-08-14 15:28 * Description: * * ...

  5. Android 手机设备信息获取使用详解

    Android 手机是我们常用的工具之一,买手机之前,手机厂商会提供一些手机参数给我们,那么问题来了,我们该如何获取手机上的参数信息呢? 通过本文你讲了解到获取手机常用信息的基本方法. 获取手机基本信 ...

  6. Android获取当前手机的联网方式的总结

    在Android平台下提供了很全面的网络接口,获取手机设置的网络接入方式更是不在话下了,所以开发以来很方便. Activity提供了获取网络管理类的接口ConnectivityManager,用Con ...

  7. Android踩坑日记:android7.0动态相机权限

    前提: 项目中使用的动态权限开源库github:https://github.com/yanzhenjie/AndPermission. 转载必须注明本文转自严振杰的博客:http://blog.cs ...

  8. 0.6闪光灯二进制编码通信android源码手电筒手机密码器频率控制 as4.0版 密码123456 支持所有android2.2到10及以上系统 Android7.0以前和7.0以后开启闪光灯

    演示:0.6闪光灯二进制编码通信android源码手电筒手机密码器频率控制 as4.0版 密码123456.apk http://6.wjsou.com/uploads/1594994912599.a ...

  9. flyme最新7基于android,魅族flyme6基于安卓android7.0吗?魅族flyme6.0有什么功能?[图]...

    魅族flyme6你更新了吗?很多朋友已经在使用了!不少朋友还在观望!还有疑问,魅族flyme6基于安卓android7.0吗?魅族flyme6.0有什么功能?先来了解清楚吧! 魅族flyme6基于安卓 ...

最新文章

  1. 正则表达式贪婪与懒惰
  2. Gnuplot使用x11终端自动注销问题
  3. 【POJ1321棋盘问题】【poj2251Dungeon Master】【poj3278Catch That Cow】【poj1426Find The Multi】
  4. Hadoop MapReduce容错性分析
  5. 基本数据类型之间的运算
  6. spring框架学习笔记3:使用注解代替配置文件
  7. SAP Spartacus 因为 refresh token 刷新令牌过期后显示用户重新登录页面的逻辑
  8. 手把手教学,平衡小车详细教程,平衡车
  9. 【C++编程题1】数组指针之字符串排序
  10. 求最大素数和最小素数
  11. Python bytearray/bytes/string区别 - Python零基础入门教程
  12. 10万人参加过的公开课(大数据、AI、云计算、5G、物联网),你都学了吗?
  13. python整数缓存问题
  14. mysql忘记命令后半部分_MySQL常用命令
  15. 闲置域名解析到自己的博客
  16. 计算机版本过低怎么办,浏览器版本过低嗡嗡叫怎么办_电脑显示浏览器版本过低嗡嗡叫如何处理-win7之家...
  17. MongoDB可视化客户端管理工具之NoSQLbooster4mongo
  18. 第三方支付简要原理解释说明
  19. 公安大数据应用之情报分析与关联挖掘
  20. Mac-记录一些超好用的快捷键

热门文章

  1. 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 7月11日
  2. NFC模组,开发NFC功能 只要几条指令的事情
  3. NFC(Near Field Communication,近场通信)相关
  4. symbian s60 删除模拟器上的程序
  5. 什么是批标准化 (Batch Normalization)
  6. css 设置元素背景为透明
  7. 俄罗斯方块解析全过程
  8. 什么是公考、联考、国考、省考、选调生?
  9. 【office2010】利用尾注添加参考文献
  10. [iOS开发]@autoreleasepool原理探究