You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何获取Android设备名称?device_info_plus无效求推荐

解决Android设备名称获取问题的替代方案

方案1:升级device_info_plus并组合字段

当前使用的v4.1.2版本较旧,升级到最新版本后,可通过组合brand和model字段得到更贴近真实设备名称的结果:

DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
String deviceName = "${androidInfo.brand} ${androidInfo.model}";
print(deviceName);

真实设备中,brand会返回厂商名称(如Xiaomi、Samsung),model返回具体型号标识(如2304FPN6DC、SM-S918B),组合后就是常见的设备名称格式。

方案2:通过MethodChannel调用Android原生API获取自定义设备名称

如果需要获取用户在系统设置中自定义的设备名称(而非默认厂商型号),可自行通过MethodChannel实现原生调用:

Dart端代码

import 'package:flutter/services.dart';

class DeviceNameHelper {
  static const MethodChannel _channel = MethodChannel('device_name_channel');

  static Future<String?> getCustomDeviceName() async {
    try {
      return await _channel.invokeMethod('getDeviceName');
    } on PlatformException catch (e) {
      print("获取设备名称失败: ${e.message}");
      return null;
    }
  }
}

Android原生端代码(MainActivity.kt)

import android.provider.Settings
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel

class MainActivity : FlutterActivity() {
    private val CHANNEL = "device_name_channel"

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
            if (call.method == "getDeviceName") {
                val deviceName = Settings.Global.getString(contentResolver, Settings.Global.DEVICE_NAME)
                if (deviceName != null) {
                    result.success(deviceName)
                } else {
                    // 如果没有自定义名称,返回厂商+型号
                    val defaultName = "${android.os.Build.MANUFACTURER} ${android.os.Build.MODEL}"
                    result.success(defaultName)
                }
            } else {
                result.notImplemented()
            }
        }
    }
}

这种方式优先获取用户自定义的设备名称,若不存在则返回默认的厂商型号组合,覆盖更多场景。

方案3:使用flutter_device_name包

可尝试第三方包flutter_device_name,它专门用于获取设备的友好名称,使用方式如下:

import 'package:flutter_device_name/flutter_device_name.dart';

String? deviceName = await FlutterDeviceName.getDeviceName();
print(deviceName);

该包内部封装了原生API,简化了自定义设备名称的获取流程。


内容的提问来源于stack exchange,提问作者RuchDi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:45:36