Android
安卓端与桌面端共享同一下载引擎,本页说明安卓特有的权限、后台保活和已知限制。
Ghost Downloader 的安卓端不是功能阉割版。它和桌面端编译自同一套业务引擎代码,支持多协议下载、直播录制、可选文件、Revive、浏览器扩展配对等全部核心能力。
本页只写安卓端与桌面端不同的部分。桌面端已有文档的功能(任务草稿、可选文件、浏览器扩展配对等)不再重复。
权限
存储权限
首次启动时,屏幕顶部会出现横幅「未授予存储权限,下载到公共目录将失败」("Storage permission not granted, downloads to public directories may fail"),点击「去授权」("Grant Permission")跳转系统设置。
- Android 11+(API 30+):需要授予「所有文件访问权限」(MANAGE_EXTERNAL_STORAGE),否则无法向
/storage/emulated/0/Download等公共目录写入文件。 - Android 10(API 29):请求的是传统 WRITE_EXTERNAL_STORAGE 权限,清单中已声明
requestLegacyExternalStorage,授权后行为与旧版本 Android 一致。
未授权时,点击 + 按钮新建任务会被拦截,并弹出提示「需要存储权限」("Storage permission required")。
通知权限
如果通知权限未开启,顶部会出现第二条横幅「未开启通知权限,下载完成后将无法提醒」("Notification permission not enabled, you will not be notified when downloads complete")。
通知权限影响两件事:
- 任务完成时的系统通知
- 后台下载时状态栏的常驻通知(前台服务通知)
电池优化
应用启动时会自动请求系统忽略电池优化(ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)。这是为了防止系统在后台杀死下载进程。如果你在弹窗中拒绝了,后台下载可能被系统中断。
后台下载
工作原理
有任务正在下载或浏览器扩展处于连接状态时,应用会启动一个前台服务(KeepAliveService),在状态栏显示常驻通知。通知文本会实时显示当前下载速度;无下载任务但浏览器扩展在线时,显示「浏览器扩展已连接」("Browser Extension Connected")。所有任务完成且扩展断开后,前台服务自动停止。
下载期间还会持有 PARTIAL_WAKE_LOCK,保证息屏后 CPU 不休眠。锁在所有任务完成后释放。
国产 ROM 被杀后台
MIUI/HyperOS、ColorOS、OriginOS 等国产 ROM 的后台管理会主动杀死前台服务。如果你发现息屏后下载中断,需要手动将 Ghost Downloader 加入系统的「自启动」或「后台不限制」白名单。具体路径因品牌和系统版本不同,通常在「设置 → 应用管理 → Ghost Downloader → 省电策略」或「设置 → 电池 → 后台耗电管理」中。
按返回键不会终止下载
在安卓端按系统返回键不会退出应用——它会把应用切到后台(moveTaskToBack),下载继续进行。这是刻意的行为:直接退出会杀死下载进程。
文件存储
默认下载目录是 /storage/emulated/0/Download。可以在「设置」("Settings")中修改。
应用数据(配置、日志、任务记录)存储在应用私有目录,卸载时会被清除。日志文件路径为 <应用数据目录>/GhostDownloader.log。
分享接收
Ghost Downloader 注册了 Android 的分享接收 intent。从其他应用(浏览器、文件管理器等)「分享」以下内容时,Ghost Downloader 会出现在分享目标列表中:
- 纯文本:应用会从文本中提取 HTTP/HTTPS/FTP/magnet 链接,自动创建任务
- .torrent 文件:直接创建 BT 任务
- M3U8/MPD 播放列表文件:直接创建流媒体任务
支持单个和批量分享(ACTION_SEND 和 ACTION_SEND_MULTIPLE)。
已知限制
无法注册为系统默认下载器
Android 没有像桌面浏览器那样的「外部下载管理器」协议。在安卓浏览器中点击下载链接时,浏览器不会弹出「选择下载器」对话框——这是 Android 系统层面的限制,与 Ghost Downloader 无关。
替代方案:
- 在浏览器中长按链接 → 复制链接 → 回到 Ghost Downloader 粘贴
- 在浏览器中使用「分享」功能将链接发送到 Ghost Downloader
- 在桌面端安装浏览器扩展,通过配对令牌将任务推送到安卓端(安卓端支持浏览器扩展的 WebSocket 服务端,配对方式与桌面端相同)
横屏 / 平板适配
当前版本强制竖屏显示,尚未适配平板横屏布局。
设置页操控
安卓端的设置页中,滑动条(如「分片线程数」)在触屏上可能出现拖动不稳的情况。控件已针对窄屏做了纵向重排,但部分交互体验仍在优化中。