插件介绍

InstallPlugin 是一个 Flutter 插件,用于在鸿蒙平台上实现应用安装功能。该插件基于 install_plugin 开发,经过适配和优化,完美支持鸿蒙设备,帮助开发者实现应用的本地安装和网络安装功能。

主要功能

  • 网络安装:从网络下载应用安装包并自动安装
  • 本地安装:安装本地存储的应用安装包
  • 应用商店跳转:跳转到应用商店查看或下载应用
  • 支持多种安装包格式:支持 HAP(鸿蒙应用安装包)格式

核心特性

  • 简单易用的 API 接口
  • 支持进度监听和状态回调
  • 支持权限申请和管理
  • 适配鸿蒙平台的安装流程

安装与使用

1. 依赖配置

在Flutter项目的pubspec.yaml文件中添加以下依赖配置,使用AtomGit作为代码托管平台:

dependencies:
  flutter_install_plugin_ohos:
    git:
      url: https://atomgit.com/openharmony-sig/fluttertpc_install_plugin.git
      path: ohos

2. 安装依赖

在项目根目录执行以下命令安装依赖:

flutter pub get

3. 导入包

在需要使用InstallPlugin功能的Dart文件中导入包:

import 'package:flutter_install_plugin_ohos/install_plugin.dart';

API 使用示例

1. 网络安装应用

import 'package:dio/dio.dart';
import 'package:flutter_install_plugin_ohos/install_plugin.dart';
import 'package:path_provider/path_provider.dart';

Future<void> networkInstallApk() async {
  // 下载应用安装包
  var appDocDir = await getTemporaryDirectory();
  String savePath = appDocDir.path + '/entry-default-signed.hap';
  String fileUrl = "http://1.94.197.174/jiege/entry-default-signed.hap";
  String ohosAppId = 'yylx.danmaku.bili';

  try {
    await Dio().download(fileUrl, savePath,
        onReceiveProgress: (count, total) {
          final progress = count / total;
          print('下载进度: ${(progress * 100).toStringAsFixed(0)} %');
        });

    // 安装应用
    String installApk = 'installApk';
    final res = await InstallPlugin.install(savePath, installApk, ohosAppId: ohosAppId);

    if (res['isSuccess'] == true) {
      print('应用安装成功');
    } else {
      print('应用安装失败: ${res['errorMessage']}');
    }
  } catch (e) {
    print('下载或安装失败: $e');
  }
}

2. 本地安装应用

import 'package:file_picker_ohos/file_picker_ohos.dart';
import 'package:flutter_install_plugin_ohos/install_plugin.dart';

Future<void> localInstallApk() async {
  try {
    // 选择本地安装包文件
    FilePickerResult? result = await FilePicker.platform.pickFiles();

    if (result != null) {
      String filePath = result.files.single.path ?? '';

      // 安装应用
      String installApk = 'installApk';
      final res = await InstallPlugin.install(filePath, installApk);

      if (res['isSuccess'] == true) {
        print('应用安装成功');
      } else {
        print('应用安装失败: ${res['errorMessage']}');
      }
    } else {
      print('用户取消了文件选择');
    }
  } catch (e) {
    print('文件选择或安装失败: $e');
  }
}

3. 跳转到应用商店

import 'package:flutter_install_plugin_ohos/install_plugin.dart';

Future<void> goStore() async {
  String appUrl = 'store://appgallery.huawei.com/app/detail?id=yylx.danmaku.bili';
  String goStore = 'goStore';

  try {
    await InstallPlugin.install(appUrl, goStore);
    print('已跳转到应用商店');
  } catch (e) {
    print('跳转到应用商店失败: $e');
  }
}

4. 直接调用安装方法

import 'package:flutter_install_plugin_ohos/install_plugin.dart';

Future<void> installApkDirectly() async {
  String filePath = '/path/to/your/app.hap';
  String ohosAppId = 'com.example.app';

  try {
    final res = await InstallPlugin.installApk(filePath, ohosAppId: ohosAppId);

    if (res['isSuccess'] == true) {
      print('应用安装成功');
    } else {
      print('应用安装失败: ${res['errorMessage']}');
    }
  } catch (e) {
    print('安装失败: $e');
  }
}

权限配置

在鸿蒙平台上,使用InstallPlugin需要申请以下权限:

<!-- 读取外部存储权限 -->
<uses-permission ohos:name="ohos.permission.READ_MEDIA"/>

<!-- 写入外部存储权限 -->
<uses-permission ohos:name="ohos.permission.WRITE_MEDIA"/>

<!-- 安装应用权限 -->
<uses-permission ohos:name="ohos.permission.INSTALL_BUNDLE"/>

注意事项

  1. 权限申请:在使用InstallPlugin前,需要确保已经申请了必要的权限

  2. 安装包格式:鸿蒙平台支持 HAP 格式的应用安装包

  3. 应用 ID:安装应用时需要提供正确的鸿蒙应用 ID(ohosAppId)

  4. 网络请求:网络安装需要确保设备有网络连接

  5. 存储路径:本地安装需要确保安装包文件存在且可读

  6. 兼容性:该插件已在以下版本中测试通过:

    • Flutter: 3.7.12-ohos-1.1.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;
    • Flutter: 3.22.1-ohos-1.0.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;

总结

InstallPlugin 是一个功能强大、简单易用的Flutter插件,为鸿蒙平台提供了便捷的应用安装功能。它支持网络安装、本地安装和应用商店跳转等多种安装方式,帮助开发者快速实现应用的安装和更新功能。InstallPlugin 的设计理念注重性能和易用性,能够极大提升开发体验和应用安装效率。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐