如何读取 SOTI 管理设备上的 Android 设备 IMEI?

How to read the Android Device IMEI on a SOTI managed device?

我们正在使用 Soti Mobicontrol Managed Android devices in production and since the IMEI access has been restricted after Android 10 I was wondering if Soti agent which has access to the Android Enterprise 功能,可以为我们提供 IMEI,因此我们将其用作设备的唯一 ID。

顺便说一句,公司拥有这些设备,我认为这不是侵犯用户隐私的行为!

我在 Soti Discussion Forum 中找到了一个模糊且不完整的答案,经过多次测试,我终于成功了!!!

当您使用 MobiControl Package Studio 工具为 Android APK 文件创建安装包时,您可以包含 Post-Install Soti Scripts 安装完成后 运行:

其中一个脚本是 sendintent and, on the other hand, you also have access to some macros 以获取设备信息,即 %IMEI%,或 %DEVICENAME%(宏文档中未列出!)。

这意味着通过定义这样的脚本,您可以在 Soti 托管设备上拥有包含 IMEI 和设备名称的广播消息意图!

sendintent -b "intent:#Intent;action=com.mohsenoid.android.imei.ACTION;S.imei=%IMEI%;S.devicename=%DEVICENAME%;component=com.mohsenoid.android.imei/.ImeiReceiver;end;"

此脚本与此 ADB Shell 命令完全相同:

adb shell am broadcast -a com.mohsenoid.android.imei.ACTION --es imei "SOME\ IMEI" --es devicename "SOME\ DEVICE\ NAME" -n com.mohsenoid.android.imei/.ImeiReceiver

您应用中的 BroadcastReceiver 可能如下所示:

class ImeiReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context?, intent: Intent?) {
        context ?: return
        intent ?: return

        val imei = intent.getStringExtra(IMEI_KEY) ?: return
        val deviceName = intent.getStringExtra(DEVICE_NAME_KEY) ?: return

        AppSettings.setValue(context, IMEI_KEY, imei)
        AppSettings.setValue(context, DEVICE_NAME_KEY, deviceName)

        Toast.makeText(context, "Received: IMEI: $imei - DeviceName: $deviceName", Toast.LENGTH_LONG).show()
    }

    companion object {
        const val IMEI_KEY = "imei"
        const val DEVICE_NAME_KEY = "devicename"
    }
}

不要忘记,您还需要将广播接收器添加到您的 AndroidManifest 文件中,并使用适当的 intent 过滤器和操作。

<receiver
    android:name=".ImeiReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.mohsenoid.android.imei.ACTION" />
    </intent-filter>
</receiver>

此 GitHub 存储库包含可用于此目的的测试应用程序: https://github.com/mohsenoid/SOTI-IMEI

我希望这个回答对任何使用此服务的人有所帮助。