Flutter获取设备IMEI插件imei_plugin的使用

Flutter获取设备IMEI插件imei_plugin的使用

Imei Plugin

Build version

用于在iOS和Android设备上获取唯一ID。

Getting Started

通过运行时权限,在Android设备上获取IMEI(国际移动设备身份识别码),对于Android 10及以上版本返回UUID,并在iOS设备上获取唯一标识符(一个唯一的字母数字字符串,用于应用提供商识别设备)。

使用方法

import 'package:imei_plugin/imei_plugin.dart';

String imei = await ImeiPlugin.getImei();
List<String> multiImei = await ImeiPlugin.getImeiMulti(); // 支持双卡或多卡设备
String uuid = await ImeiPlugin.getId();

如果即使用户已经拒绝权限请求,仍然希望每次调用时都请求权限,可以通过设置shouldShowRequestPermissionRationalefalse来禁用验证。默认值为false

String platformImei = await ImeiPlugin
    .getImei(shouldShowRequestPermissionRationale: false);

新功能!

  • 新增参数shouldShowRequestPermissionRationale(仅限Android)。
  • 新增方法getId(仅限Android),生成UUID。
  • 新增方法getImeiMulti(支持双卡或多卡设备)。

平台支持

操作系统
Android
iOS

License

MIT

Author

该插件由Kevin Caicedo开发,是一款开源免费软件。


完整示例代码

以下是使用imei_plugin的完整示例代码:

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:imei_plugin/imei_plugin.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformImei = '未知'; // 存储IMEI或UUID
  String uniqueId = "未知"; // 存储唯一ID

  @override
  void initState() {
    super.initState();
    initPlatformState(); // 初始化平台状态
  }

  // 异步初始化设备信息
  Future<void> initPlatformState() async {
    String platformImei; // 存储IMEI或UUID
    String idunique; // 存储唯一ID

    try {
      // 获取设备的IMEI或UUID
      platformImei =
          await ImeiPlugin.getImei(shouldShowRequestPermissionRationale: false);

      // 获取多SIM卡设备的IMEI列表
      List<String> multiImei = await ImeiPlugin.getImeiMulti();
      print(multiImei);

      // 获取UUID
      idunique = await ImeiPlugin.getId();
    } on PlatformException {
      // 捕获异常并返回错误信息
      platformImei = '获取失败';
    }

    // 如果组件已从树中移除,则不更新UI
    if (!mounted) return;

    // 更新UI
    setState(() {
      _platformImei = platformImei;
      uniqueId = idunique;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('IMEI插件示例'), // 设置标题
        ),
        body: Center(
          child: Text(
            '设备信息:\nIMEI或UUID: $_platformImei\n唯一ID: $uniqueId', // 显示设备信息
            style: TextStyle(fontSize: 18), // 设置字体大小
          ),
        ),
      ),
    );
  }
}

运行效果

运行上述代码后,界面将显示设备的IMEI或UUID以及唯一ID。如果设备为双卡或多卡设备,还可以通过getImeiMulti方法获取多个IMEI。

如图所示,界面会显示类似以下内容:

设备信息:
IMEI或UUID: 35XXXXXXXXXXXXXX
唯一ID: 9876543210abcdef

更多关于Flutter获取设备IMEI插件imei_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter获取设备IMEI插件imei_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,要获取设备的IMEI(国际移动设备识别码),你可以使用 imei_plugin 插件。以下是如何使用该插件的步骤:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 imei_plugin 依赖:

dependencies:
  flutter:
    sdk: flutter
  imei_plugin: ^1.3.0

然后运行 flutter pub get 来获取依赖。

2. 获取IMEI

在你的Flutter代码中,你可以使用 imei_plugin 来获取设备的IMEI。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:imei_plugin/imei_plugin.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: IMEIPage(),
    );
  }
}

class IMEIPage extends StatefulWidget {
  @override
  _IMEIPageState createState() => _IMEIPageState();
}

class _IMEIPageState extends State<IMEIPage> {
  String _imei = 'Unknown';

  @override
  void initState() {
    super.initState();
    _getIMEI();
  }

  Future<void> _getIMEI() async {
    String imei;
    try {
      imei = await ImeiPlugin.getImei();
    } catch (e) {
      imei = 'Failed to get IMEI: $e';
    }

    if (!mounted) return;

    setState(() {
      _imei = imei;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('IMEI Example'),
      ),
      body: Center(
        child: Text('IMEI: $_imei'),
      ),
    );
  }
}

3. 处理权限

在Android设备上,获取IMEI需要 READ_PHONE_STATE 权限。你需要在 AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
回到顶部