Flutter获取SIM信息插件sim_info的使用

Flutter获取SIM信息插件sim_info的使用

flutter_sim_info

一个用于读取SIM信息的Flutter插件。
你可以获取MCC(移动国家码)、MNC(移动网络码)、国家名称等SIM数据。

注意:在Android和iOS上可用的数据有相似之处也有差异,请仔细阅读使用说明。


使用方法

导入插件包

在你的Flutter项目中添加依赖:

dependencies:
  ...
  sim_info: ^0.1.2

查看详细的安装指南:安装页面

引用插件并使用

在Dart代码中添加以下导入:

import 'package:sim_info/sim_info.dart';

通过以下代码获取SIM卡信息:

String _allowsVOIP;
String _carrierName;
String _isoCountryCode;
String _mobileCountryCode;
String _mobileNetworkCode;

[@override](/user/override)
void initState() {
  super.initState();
  getSimInfo();
}

void getSimInfo() async {
  // 获取是否支持VoIP
  String allowsVOIP = await SimInfo.getAllowsVOIP;
  // 获取运营商名称
  String carrierName = await SimInfo.getCarrierName;
  // 获取ISO国家代码
  String isoCountryCode = await SimInfo.getIsoCountryCode;
  // 获取移动国家码
  String mobileCountryCode = await SimInfo.getMobileCountryCode;
  // 获取移动网络码
  String mobileNetworkCode = await SimInfo.getMobileNetworkCode;

  // 将结果存储到状态变量中
  setState(() {
    _allowsVOIP = allowsVOIP;
    _carrierName = carrierName;
    _isoCountryCode = isoCountryCode;
    _mobileCountryCode = mobileCountryCode;
    _mobileNetworkCode = mobileNetworkCode;
  });
}

完整的SIM信息列表详见:API详情


Android集成

从Android 6.0(API级别23)开始,使用READ_PHONE_STATE权限之前必须动态请求权限。

危险权限:READ_PHONE_STATE


错误信息

可能的错误信息包括:

"PERMISSION_DENIED" // 在Android中,未获得权限时调用方法。
"SIM_STATE_NOT_READY" // 在设备中无法找到SIM卡。

截图

截图


完整示例代码

以下是完整的示例代码,展示如何使用sim_info插件获取SIM信息并在UI中显示:

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

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _allowsVOIP;
  String _carrierName;
  String _isoCountryCode;
  String _mobileCountryCode;
  String _mobileNetworkCode;

  [@override](/user/override)
  void initState() {
    super.initState();
    getSimInfo();
  }

  Future<void> getSimInfo() async {
    // 获取SIM卡信息
    String allowsVOIP = await SimInfo.getAllowsVOIP;
    String carrierName = await SimInfo.getCarrierName;
    String isoCountryCode = await SimInfo.getIsoCountryCode;
    String mobileCountryCode = await SimInfo.getMobileCountryCode;
    String mobileNetworkCode = await SimInfo.getMobileNetworkCode;

    // 更新UI状态
    setState(() {
      _allowsVOIP = allowsVOIP;
      _carrierName = carrierName;
      _isoCountryCode = isoCountryCode;
      _mobileCountryCode = mobileCountryCode;
      _mobileNetworkCode = mobileNetworkCode;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('SIM信息插件示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('是否支持VoIP: $_allowsVOIP'),
              Text('运营商名称: $_carrierName'),
              Text('ISO国家代码: $_isoCountryCode'),
              Text('移动国家码: $_mobileCountryCode'),
              Text('移动网络码: $_mobileNetworkCode'),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter中,如果你想获取设备的SIM卡信息,可以使用 sim_info 插件。这个插件可以帮助你获取SIM卡的相关信息,如运营商名称、SIM卡状态、电话号码等。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 sim_info 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  sim_info: ^0.1.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的Dart文件中导入 sim_info 插件:

import 'package:sim_info/sim_info.dart';

3. 获取SIM卡信息

你可以使用 SimInfo 类来获取SIM卡信息。以下是一些常用的方法:

获取SIM卡数量

int simCount = await SimInfo.getSimCount();
print('SIM卡数量: $simCount');

获取SIM卡运营商名称

String carrierName = await SimInfo.getCarrierName();
print('运营商名称: $carrierName');

获取SIM卡电话号码

String phoneNumber = await SimInfo.getPhoneNumber();
print('电话号码: $phoneNumber');

获取SIM卡状态

String simState = await SimInfo.getSimState();
print('SIM卡状态: $simState');

4. 处理权限

在Android上,获取SIM卡信息可能需要一些权限。你需要在 AndroidManifest.xml 文件中添加以下权限:

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

在iOS上,获取SIM卡信息可能需要用户授权。你需要在 Info.plist 文件中添加以下权限:

<key>NSContactsUsageDescription</key>
<string>我们需要访问您的联系人以提供更好的服务</string>

5. 完整示例

以下是一个完整的示例,展示如何获取并显示SIM卡信息:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SimInfoScreen(),
    );
  }
}

class SimInfoScreen extends StatefulWidget {
  [@override](/user/override)
  _SimInfoScreenState createState() => _SimInfoScreenState();
}

class _SimInfoScreenState extends State<SimInfoScreen> {
  String simCount = 'Loading...';
  String carrierName = 'Loading...';
  String phoneNumber = 'Loading...';
  String simState = 'Loading...';

  [@override](/user/override)
  void initState() {
    super.initState();
    loadSimInfo();
  }

  Future<void> loadSimInfo() async {
    int count = await SimInfo.getSimCount();
    String carrier = await SimInfo.getCarrierName();
    String number = await SimInfo.getPhoneNumber();
    String state = await SimInfo.getSimState();

    setState(() {
      simCount = count.toString();
      carrierName = carrier;
      phoneNumber = number;
      simState = state;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SIM卡信息'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('SIM卡数量: $simCount'),
            Text('运营商名称: $carrierName'),
            Text('电话号码: $phoneNumber'),
            Text('SIM卡状态: $simState'),
          ],
        ),
      ),
    );
  }
}
回到顶部