如何在flutter中从其他android型号中检测华为设备型号?

     2023-04-13     113

关键词:

【中文标题】如何在flutter中从其他android型号中检测华为设备型号?【英文标题】:How to detect huawei device models from other android models in flutter? 【发布时间】:2021-11-09 11:44:04 【问题描述】:

由于我的应用是跨平台的,所以没有遇到什么问题,但是到了android,出现了一些问题,比如华为移动设备无法访问google play,并且有自己的应用商店(App Gallery),问题出在我的应用程序的规格之一是强制用户下载最新版本,我不知道如何检测华为设备让用户下载我的应用程序库中的应用程序。

【问题讨论】:

【参考方案1】:

您可以获取设备制造商来检测华为设备

DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
print('Running on $androidInfo.manufacturer');

使用的插件 - https://pub.dev/packages/device_info

或者 您可以在设备中查看GooglePlayServices的可用性

GooglePlayServicesAvailability availability = await GoogleApiAvailability.instance.checkGooglePlayServicesAvailability();

需要插件 - https://pub.dev/packages/google_api_availability

注意:如果使用GooglePlayServices检查,还需要添加平台检查,因为它在iOS设备的情况下返回false。

【讨论】:

【参考方案2】:

您可以按照Docs通过检查设备是否安装了HMS Core APK来检测华为设备。

// Create an HmsApiAvailability instance
HmsApiAvailability client = new HmsApiAvailability();

// 0: HMS Core (APK) is available.
// 1: No HMS Core (APK) is found on device.
// 2: HMS Core (APK) installed is out of date.
// 3: HMS Core (APK) installed on the device is unavailable.
// 9: HMS Core (APK) installed on the device is not the official version.
// 21: The device is too old to support HMS Core (APK).
int status = await client.isHMSAvailable();

【讨论】:

【参考方案3】:

判断设备是否有HMS的方法如下:

HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(context)

​实施检查HMS是否可用。

public class HmsGmsUtil 
    private static final String TAG = "HmsGmsUtil";

    /**
     * Whether the HMS service on the device is available.
     *
     * @param context android context
     * @return true:HMS service is available; false:HMS service is not available;
     */
    public static boolean isHmsAvailable(Context context) 
        boolean isAvailable = false;
        if (null != context) 
            int result = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(context);
            isAvailable = (com.huawei.hms.api.ConnectionResult.SUCCESS == result);
        
        Log.i(TAG, "isHmsAvailable: " + isAvailable);
        return isAvailable;
    
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mHmsSignBtn = findViewById(R.id.hms_sign_btn);
    mHmsSignBtn.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            signInByHms();
           

    mGmsSignBtn = findViewById(R.id.gms_sign_btn);
    mGmsSignBtn.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            signInByGms();
        
    );

    boolean isHmsAvailable = HmsGmsUtil.isHmsAvailable(this);

    Log.i(TAG, "isHmsAvailable: " + isHmsAvailable + ", isGmsAvailable: " + isGmsAvailable);

    if (isHmsAvailable && !isGmsAvailable) 
        // Only hms, Sign In by huawei account.
        mHmsSignBtn.setVisibility(View.VISIBLE);
     else if (!isHmsAvailable && isGmsAvailable) 
        // Only gms, Sign In by google account.
        mGmsSignBtn.setVisibility(View.VISIBLE);
     else if (isHmsAvailable && isGmsAvailable) 
        // both hsm and hms, decide by developer.
        mGmsSignBtn.setVisibility(View.VISIBLE);
        mHmsSignBtn.setVisibility(View.VISIBLE);
     else if (!isHmsAvailable && !isGmsAvailable) 
        // neither hms and gms, decide by developer.
        mHmsSignBtn.setVisibility(View.VISIBLE);
    

【讨论】:

如何在 Flutter 中从 firebase 存储读取和写入文本文件?

】如何在Flutter中从firebase存储读取和写入文本文件?【英文标题】:HowdoIreadandwriteatextfilefromfirebasestorageinFlutter?【发布时间】:2020-08-2104:13:27【问题描述】:我需要在Firebase存储中存储我保存的图像。有没有办法可以在颤振中读... 查看详情

如何在 Flutter 中从 Web 加载和呈现 PDF 文件

】如何在Flutter中从Web加载和呈现PDF文件【英文标题】:HowtoloadandpresentaPDFfilefromthewebinFlutter【发布时间】:2020-10-1001:15:59【问题描述】:我正在尝试从URL获取PDF文件,并将其呈现在我的Flutter应用程序中(适用于Android和iOS)。我... 查看详情

如何在 Flutter 中从 Firestore 订购数据,orderBy 订购不正确

】如何在Flutter中从Firestore订购数据,orderBy订购不正确【英文标题】:HowtoorderdatafromFirestoreinFlutter,orderBynotorderingcorrect【发布时间】:2020-01-2822:31:45【问题描述】:我正在构建一个应用程序,用户可以在其中写入我的数据库并向... 查看详情

如何在 Flutter 中从内部和外部存储中获取所有 PDF 文件?

】如何在Flutter中从内部和外部存储中获取所有PDF文件?【英文标题】:HowtogetallPDFfilesfrominternalaswellasexternalstorageinFlutter?【发布时间】:2018-08-3004:43:14【问题描述】:我想显示所有存在于内部和外部存储中的pdf文件,所以在点击... 查看详情

如何在我的 Flutter 应用程序中从右侧导航添加幻灯片?

】如何在我的Flutter应用程序中从右侧导航添加幻灯片?【英文标题】:HowtoaddSlidefromrightnavigationinmyFlutterapplication?【发布时间】:2018-11-0618:12:15【问题描述】:我正在尝试使用Flutter应用程序,我想使用幻灯片导航导航到下一个屏... 查看详情

如何在 Flutter 中从 SQLite 获取数据?

】如何在Flutter中从SQLite获取数据?【英文标题】:HowtogetdatafromSQLiteinflutter?【发布时间】:2021-06-0203:17:39【问题描述】:我是Flutter和SQLite的新手,所以我试图从为SQLite创建DBBrowser的数据库中获取数据。我在控制台上得到这个:... 查看详情

如何在 FLutter 中从 URL 加载动画 GIF?

】如何在FLutter中从URL加载动画GIF?【英文标题】:HowtoloadanimatedGIFfromURLinFLutter?【发布时间】:2021-10-2417:57:53【问题描述】:这是我在AndroidStudio中加载一个GIF的Flutter代码:Image.network(\'https://flutter-examples.com/wp-content/uploads/2021/01/ha... 查看详情

如何在flutter中从云Firestore中获取数据?

】如何在flutter中从云Firestore中获取数据?【英文标题】:Howtofetchdatafromcloudfirestoreinflutter?【发布时间】:2021-07-1711:30:30【问题描述】:我想在Flutter中从Firestore中获取联系方式,例如电话号码、电子邮件地址、网站URL以及社交媒... 查看详情

如何在flutter中从firebase数据填充listview

】如何在flutter中从firebase数据填充listview【英文标题】:Howtopopulatelistviewfromfirebasedatainflutter【发布时间】:2020-05-0611:10:16【问题描述】:您好,我正在尝试从firebase实时数据库中获取数据并在颤振中填充列表视图,以下是图像,... 查看详情

如何在flutter中从firebase获取数据

】如何在flutter中从firebase获取数据【英文标题】:howtogetdatafromfirebaseinflutter【发布时间】:2019-02-0708:43:39【问题描述】:我正在构建一个颤振应用程序并使用cloud-firestore,这就是我的数据库的样子我想要一个函数,它可以在字符... 查看详情

如何在 Flutter 中从 Firebase 获取当前用户 ID

】如何在Flutter中从Firebase获取当前用户ID【英文标题】:HowtogetthecurrentuseridfromFirebaseinFlutter【发布时间】:2019-05-2818:36:55【问题描述】:我正在尝试这个-finalFuture<FirebaseUser>user=auth.currentUser();但问题是,不是通过“用户ID”创... 查看详情

如何在flutter中从url读取网站内容[关闭]

】如何在flutter中从url读取网站内容[关闭]【英文标题】:Howtoreadwebsitecontentfromurlinflutter[closed]【发布时间】:2019-12-1118:39:50【问题描述】:我需要一个读取网站内容的应用程序,给定它导航DOM并提取组件内容的url。【问题讨论】... 查看详情

我们如何在 Flutter 中从 JSON 对象中获取特定数据?

】我们如何在Flutter中从JSON对象中获取特定数据?【英文标题】:HowcanwegetspecificdatafromJSONobjectinflutter?【发布时间】:2021-10-1708:12:20【问题描述】:我正在尝试从以下JSON响应中获取用户ID:"status":"200","msg":"LoginSuccess!!","userdata":"id"... 查看详情

如何在flutter中从html中过滤img标签

】如何在flutter中从html中过滤img标签【英文标题】:Howtofilterimgtagfromthehtmlinflutter【发布时间】:2020-08-2306:53:03【问题描述】:我正在使用WordPressrestAPI在颤振中制作应用程序。在WordPressrestAPIpost中有一个名为content的属性,该属性... 查看详情

如何在 Flutter 中从 Firebase Auth 获取用户 ID?

】如何在Flutter中从FirebaseAuth获取用户ID?【英文标题】:HowtogetuseridfromFirebaseAuthinFlutter?【发布时间】:2018-09-2410:32:38【问题描述】:我想通过将用户ID作为字段分配给文档来将用户相关数据保存在Firestore中。如何从FirebaseAuth获取... 查看详情

如何在flutter中从API创建多个复选框

】如何在flutter中从API创建多个复选框【英文标题】:HowtocreatemultiplecheckboxfromAPIinflutter【发布时间】:2022-01-0600:55:50【问题描述】:我已经能够在Future-builder中显示来自API的JSON数据。但是,小部件具有每个列表的复选框。每当我... 查看详情

如何在 Flutter 中从 JSON 中提取图像链接 - 正则表达式

】如何在Flutter中从JSON中提取图像链接-正则表达式【英文标题】:HowtoextractimagelinkfromJSONinFlutter-Regex【发布时间】:2021-05-2608:28:11【问题描述】:我是Flutter的初学者。我正在制作一个笔记应用程序,其中包含flutter_quill。当我将... 查看详情

如何在 Flutter 中从 API 获取 JSON 数据

】如何在Flutter中从API获取JSON数据【英文标题】:HowtogetJSONdatafromanAPIinflutter【发布时间】:2019-10-1620:51:29【问题描述】:自从我昨天开始对我的项目进行编码以来,我面临着同样的问题,该项目的一部分是从给定的api获取一些jso... 查看详情