如何为Flutter应用添加本地APK蓝牙分享与Play Store链接分享按钮
Flutter实现两个分享按钮:蓝牙分享APK + 分享Play Store链接
一、分享Play Store链接
用share_plus插件就能快速实现,它会唤起系统分享选择器,用户可直接选蓝牙等渠道分享链接。
实现步骤:
- 添加依赖到
pubspec.yaml:
dependencies: share_plus: ^7.2.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
实现步骤:
- 声明资产(APK在项目中时)
在pubspec.yaml里添加资产路径:
assets: - assets/app-release.apk # 替换成你的APK实际路径
- 复制资产到本地存储
写个工具函数把资产里的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; }
- 请求存储权限
Android需要存储权限才能读写文件,添加权限请求逻辑:
import 'package:permission_handler/permission_handler.dart'; Future<bool> _requestStoragePermission() async { final permissionStatus = await Permission.storage.request(); return permissionStatus.isGranted; }
- 分享按钮代码
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
相关产品推荐
相关产品推荐

