Android 获取设备ID,手机厂商,运营商,联网方式,获取系统语言,获取时区,IP地址

权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

安卓6.0需动态获取权限:Android 6.0及以上版本动态申请权限_meixi_android的博客-优快云博客

获取设备ID

方法1

private String getAndroidId(){
    String m_szAndroidID = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    return m_szAndroidID;
}
deviceId = Settings.System.getString(sInstance.getContentResolver(), Settings.Secure.ANDROID_ID);

方法2

String serialNum = android.os.Build.SERIAL;

方法3

String model = "";
TelephonyManager tm = (TelephonyManager) getSystemService(Activity.TELEPHONY_SERVICE);


if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.
    return;
}
model = tm.getDeviceId();
Log.i("lgq","ssssssssssss===== "+model);

 方法4:

private String getImei(){
    TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
    String szImei = TelephonyMgr.getDeviceId();
    return szImei;
}

Android 系统 5.0 以下的。方法3/4无效

结果是:

11-05 16:38:46.860 17570-17570/com.tianxin.jifei I/lgq: ssssssssssss===== 862266036040933

获取联网方式:

String access = "";
ConnectivityManager connectionManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo netWorkInfo = connectionManager.getActiveNetworkInfo();
access = netWorkInfo.getTypeName();

Log.i("lgq","ssssssssssss===== "+access);

结果是:

11-05 16:52:49.300 18844-18844/com.tianxin.jifei I/lgq: ssssssssssss===== WIFI

11-05 16:53:02.106 19425-19425/com.tianxin.jifei I/lgq: ssssssssssss===== MOBILE

  获取操作系统版本:

/获取操作系统版本
        String osVersion = "";
        osVersion = android.os.Build.VERSION.RELEASE;

获取运营商:

String providersName = "";
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.
    return;
}
String IMSI = telephonyManager.getSubscriberId();
if (IMSI != null) {
    if (IMSI.startsWith("46000") || IMSI.startsWith("46002") || IMSI.startsWith("46007")) {
        providersName = "中国移动";
    } else if (IMSI.startsWith("46001") || IMSI.startsWith("46006")) {
        providersName = "中国联通";
    } else if (IMSI.startsWith("46003")) {
        providersName = "中国电信";
    } else {
        providersName = "其他";
    }
} else {
    providersName = "无法获取运营商信息";
}

手机厂商:

String ss= android.os.Build.MANUFACTURER;

 附:

android.os.Build.BOARD:获取设备基板名称
android.os.Build.BOOTLOADER:获取设备引导程序版本号
android.os.Build.BRAND:获取设备品牌
android.os.Build.CPU_ABI:获取设备指令集名称(CPU的类型)
android.os.Build.CPU_ABI2:获取第二个指令集名称
android.os.Build.DEVICE:获取设备驱动名称
android.os.Build.DISPLAY:获取设备显示的版本包(在系统设置中显示为版本号)和ID一样
android.os.Build.FINGERPRINT:设备的唯一标识。由设备的多个信息拼接合成。
android.os.Build.HARDWARE:设备硬件名称,一般和基板名称一样(BOARD)
android.os.Build.HOST:设备主机地址
android.os.Build.ID:设备版本号。
android.os.Build.MODEL :获取手机的型号 设备名称。
android.os.Build.MANUFACTURER:获取设备制造商
android:os.Build.PRODUCT:整个产品的名称
android:os.Build.RADIO:无线电固件版本号,通常是不可用的 显示unknown
android.os.Build.TAGS:设备标签。如release-keys 或测试的 test-keys 
android.os.Build.TIME:时间
android.os.Build.TYPE:设备版本类型  主要为"user" 或"eng".
android.os.Build.USER:设备用户名 基本上都为android-build
android.os.Build.VERSION.RELEASE:获取系统版本字符串。如4.1.2 或2.2 或2.3等
android.os.Build.VERSION.CODENAME:设备当前的系统开发代号,一般使用REL代替
android.os.Build.VERSION.INCREMENTAL:系统源代码控制值,一个数字或者git hash值
android.os.Build.VERSION.SDK:系统的API级别 一般使用下面大的SDK_INT 来查看
android.os.Build.VERSION.SDK_INT:系统的API级别 数字表示
 

获取系统语言

Locale locale = Locale.getDefault();
Log.e("lgq","..... "+locale.getCountry().toLowerCase());
Log.e("lgq","..... "+locale.getLanguage());
Log.e("lgq","..... "+locale);

获取时区

//获取当前时区
public static int getTzSec() {
    Date date = new Date();
    //取得本地时间
    Calendar cal = Calendar.getInstance();
    //取得时间偏移量
    int offset = cal.get(Calendar.ZONE_OFFSET) / (1000 * 60 * 60);
    //取得夏令时差
    int dstOffset = cal.get(Calendar.DST_OFFSET) / (1000 * 60 * 60);
    //从本地时间里扣除这些变量,即可以取得UTC时间
    cal.add(Calendar.MILLISECOND, -(offset + dstOffset));
    cal.add(Calendar.HOUR, -(offset + dstOffset));
    Long timeStampUTC = cal.getTimeInMillis();
    Long timeStamp = date.getTime();
    Long timeZone = (timeStamp - timeStampUTC) / (1000 * 3600);
    return timeZone.intValue();
}
String cc= Locale.getDefault().getCountry();

获取IP地址

    public static String getWifiIpAddress(Context context) {
        WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);

        if (!wifiManager.isWifiEnabled()) {
            // Wi-Fi is not enabled, return null or handle the case accordingly
            return null;
        }

        int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
        byte[] bytes = new byte[4];
        for (int i = 0; i < 4; ++i) {
            bytes[i] = (byte)(ipAddress >> ((3 - i) * 8));
        }
        StringBuilder sb = new StringBuilder();
//        for (byte b : bytes) {
//            sb.append((b & 0xFF)).append(".");
//
//        }
        for (int j =0;j<bytes.length;j++){
            sb.append((bytes[bytes.length-j-1] & 0xFF)).append(".");
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }

 公网

try {
    List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
    for (NetworkInterface intf : interfaces) {
        List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
        for (InetAddress addr : addrs) {
            if (!addr.isLoopbackAddress()) {
                String sAddr = addr.getHostAddress();
                LgqLogPlus.e("打开电子秤333串口失败ssss ee   "+sAddr);

                // 这里可以根据需要处理或返回IP地址
            }
        }
    }
} catch (SocketException ex) {
    // 处理异常
}

    //获取有线网的ip地址
    public static String getEthernetIpAddress(Context context) {
//        LogUtil.debugInform("");
        final Network network = getFirstEthernet(context);
        if (network == null) {
            return "";
        }
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final LinkProperties linkProperties = connectivityManager.getLinkProperties(network);
        if (linkProperties != null) {
            for (LinkAddress linkAddress : linkProperties.getLinkAddresses()) {
                InetAddress inetAddress = linkAddress.getAddress();
                if (inetAddress instanceof Inet4Address) {
                    return inetAddress.getHostAddress();
                }
            }
        }
        return "";
    }

   private static Network getFirstEthernet(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final Network[] networks = connectivityManager.getAllNetworks();
        for (final Network network : networks) {
            NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
            //关键:判断网络类型 有线网
            if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
                return network;
            }
        }
        return null;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值