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

如何为Flutter应用添加本地APK蓝牙分享与Play Store链接分享按钮

Flutter实现两个分享按钮:蓝牙分享APK + 分享Play Store链接

一、分享Play Store链接

用share_plus插件就能快速实现,它会唤起系统分享选择器,用户可直接选蓝牙等渠道分享链接。

实现步骤:

  1. 添加依赖到pubspec.yaml:
dependencies:
  share_plus: ^7.2.1 # 请使用最新版本
  1. 按钮代码:
import 'package:share_plus/share_plus.dart';

ElevatedButton(
  onPressed: () async {
    // 替换成你的应用Play Store正式链接
    const playStoreLink = 'https://play.google.com/store/apps/details?id=com.your.app.package';
    await Share.share('推荐你试试这款应用:$playStoreLink');
  },
  child: const Text('分享Play Store链接'),
)

二、蓝牙分享本地APK安装包

如果APK放在项目资产里,得先复制到系统可访问的本地目录;要是已经在本地文件夹(比如下载目录),直接用路径就行。

所需依赖:

dependencies:
  share_plus: ^7.2.1
  path_provider: ^2.1.1
  permission_handler: ^11.0.1

实现步骤:

  1. 声明资产(APK在项目中时)
    在pubspec.yaml里添加资产路径:
assets:
  - assets/app-release.apk # 替换成你的APK实际路径
  1. 复制资产到本地存储
    写个工具函数把资产里的APK复制到应用外部存储目录:
import 'dart:io';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';

Future<String> _copyApkToLocal() async {
  final externalDir = await getExternalStorageDirectory();
  if (externalDir == null) throw Exception('无法获取存储目录');
  
  final apkFilePath = '${externalDir.path}/app-release.apk';
  final targetFile = File(apkFilePath);

  if (await targetFile.exists()) return apkFilePath;

  final byteData = await rootBundle.load('assets/app-release.apk');
  await targetFile.writeAsBytes(byteData.buffer.asUint8List());
  
  return apkFilePath;
}
  1. 请求存储权限
    Android需要存储权限才能读写文件,添加权限请求逻辑:
import 'package:permission_handler/permission_handler.dart';

Future<bool> _requestStoragePermission() async {
  final permissionStatus = await Permission.storage.request();
  return permissionStatus.isGranted;
}
  1. 分享按钮代码
ElevatedButton(
  onPressed: () async {
    final hasPermission = await _requestStoragePermission();
    if (!hasPermission) {
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('需要存储权限才能分享APK')),
      );
      return;
    }

    try {
      final apkPath = await _copyApkToLocal();
      await Share.shareXFiles(
        [XFile(apkPath)],
        text: '分享应用安装包',
      );
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('分享失败:${e.toString()}')),
      );
    }
  },
  child: const Text('蓝牙分享APK'),
)

注意事项:

  • Android 13+适配:如果APK放在公共目录(比如Download),可能需要申请MANAGE_EXTERNAL_STORAGE权限;用应用私有外部目录则无需额外权限。
  • iOS兼容性:iOS不允许分享IPA安装包,建议通过Platform.isIOS判断后隐藏该按钮。
  • 大文件提示:蓝牙分享大APK速度慢,可添加进度提示优化体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:55:16