fix(mobile): use external storage for APK download and close app on install

- Change download path from getApplicationDocumentsDirectory to
  getExternalStorageDirectory for proper FileProvider support
- Add finishAffinity() after starting APK install intent

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-10 04:03:01 -08:00
parent fea90b7616
commit 88c59e92fd
2 changed files with 7 additions and 4 deletions

View File

@ -81,5 +81,8 @@ class MainActivity : FlutterActivity() {
intent.setDataAndType(apkUri, "application/vnd.android.package-archive")
startActivity(intent)
// 关闭当前应用,让系统完成安装
finishAffinity()
}
}

View File

@ -48,8 +48,8 @@ class DownloadManager {
_status = DownloadStatus.downloading;
_cancelToken = CancelToken();
// 使
final dir = await getApplicationDocumentsDirectory();
// 使FileProvider
final dir = await getExternalStorageDirectory() ?? await getApplicationSupportDirectory();
final savePath = '${dir.path}/app_update.apk';
final tempPath = '${dir.path}/app_update.apk.tmp';
final file = File(savePath);
@ -186,7 +186,7 @@ class DownloadManager {
/// APK
Future<void> cleanupDownloadedApk() async {
try {
final dir = await getApplicationDocumentsDirectory();
final dir = await getExternalStorageDirectory() ?? await getApplicationSupportDirectory();
final file = File('${dir.path}/app_update.apk');
final tempFile = File('${dir.path}/app_update.apk.tmp');
@ -206,7 +206,7 @@ class DownloadManager {
///
Future<void> clearPartialDownload() async {
try {
final dir = await getApplicationDocumentsDirectory();
final dir = await getExternalStorageDirectory() ?? await getApplicationSupportDirectory();
final tempFile = File('${dir.path}/app_update.apk.tmp');
if (await tempFile.exists()) {
await tempFile.delete();