取得电信网络和手机的相关信息之TelephonyManager与android.provider.settings.System

本文介绍了如何使用Android系统API获取设备的蓝牙、Wi-Fi及飞行模式等状态,并通过ContentResolver与Settings.System交互来读取这些系统设置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      除了SIM卡的相关信息之外,我们可以使用TelephonyManager来获取电信网络的相关信息。例如电信网络国别、电信网络国别、代码、名称、网络类型等。

初次之外,我们要想获得蓝牙、无限网络等手机内置值,我们可以通过android.provider.settings.System来获取。

至于TelephonyManager这个类,我们前边已经介绍过了。现在,我们来看看android.provider.settings.System.

我们可以看出,如果我们想取得System中的值,那么我们必须首先获取一个ContentResolver,然后传递进去,这是为什么呢?其实system本质上是一张表的映射,这么说,你就明白了吧。我们甚至可以通过其提供的各种put方法,将我们的一些值存储到该表中。

源码中有这么一段代码:

 /**
         * The content:// style URL for this table
         */
        public static final Uri CONTENT_URI =
            Uri.parse("content://" + AUTHORITY + "/system");

现在,明白了吧。其中authority是settings

---------------------------------------------------------------

其他可访问的设置信息:

 

### Android 平台上的 UUID 生成及使用方法 #### 基于设备信息生成唯一 UUID 为了在 Android 设备上基于特定硬件属性创建唯一的 `UUID`,可以利用设备 ID 其他识别码组合来构建。具体实现如下所示: ```java import android.telephony.TelephonyManager; import android.provider.Settings.Secure; public class DeviceUuidFactory { private static final String TAG = "DeviceUuidFactory"; public static UUID getDeviceUuid(TelephonyManager telephonyManager, Context context) { String androidId = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); String tmDevice = "" + telephonyManager.getDeviceId(); String tmSerial = "" + telephonyManager.getSimSerialNumber(); // 构建 UUID 对象 UUID deviceUuid = new UUID( androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode() ); return deviceUuid; } } ``` 此代码片段展示了如何通过拼接多个标识符并转换成哈希值的方式构造一个相对稳定的 `UUID`[^1]。 #### 随机生成 V4 版本的 UUID 如果应用程序不需要依赖具体的物理地址或其他持久化特征,则可以选择采用随机算法产生的 v4 类型 `UUID` 来满足需求。下面给出了一种简单的方法用于获取此类形式的身份编码: ```javascript // JavaScript 示例 (Node.js 或浏览器环境) const { v4: uuidv4 } = require('uuid'); let randomUUID = uuidv4(); console.log(randomUUID); // 打印形如 '1b2c3d4e-f5g6-h7i8-j9k0-lmnoprstuvwx' ``` 对于 Java/Android 开发者来说,在不借助第三方库的情况下也可以很容易地做到这一点: ```java String randomUUID = java.util.UUID.randomUUID().toString(); System.out.println(randomUUID); // 同样会打印出类似的字符串表示形式 ``` 这里展示的是标准库函数调用来获得一个新的随机版本四 `UUID` 实例,并将其转化为易于阅读的形式输出[^2]。 #### 创建固定长度的自定义 UUID 字符串 有时可能希望得到具有一定模式或限定大小的结果集作为应用内的唯一键值对。此时可以通过手动控制字符选取范围以及数量达到目的。例如只取前五位字母数字混合组成的新编号: ```java StringBuilder stringBuilder = new StringBuilder(5); for(int i=0;i<5;i++){ int number = val.nextInt(36); char ch = allChar.charAt(number); stringBuilder.append(ch); } String customUUIDPart = stringBuilder.toString(); Log.d("Custom Part",customUUIDPart); ``` 上述例子中,程序将会生成一段由五个随机挑选出来的英文字母加阿拉伯数字构成的小段落,适用于某些特殊场景下的简易标记用途[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值