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

如何使用Flutter获取设备当前正在运行的应用名称

实现获取前台运行应用并执行对应操作的方案

以下按主流平台分别给出实现逻辑:

Android 平台

前置权限配置

在AndroidManifest.xml中添加权限申请:

<!-- 获取应用使用情况权限 -->
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
<!-- 修改系统音量权限 -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

首次使用前需要引导用户跳转至设置页,开启「应用使用情况访问权限」。

获取前台运行应用代码示例(Kotlin)

fun getForegroundAppPackageName(context: Context): String? {
    val usageStatsManager = context.getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
    val endTime = System.currentTimeMillis()
    val startTime = endTime - 1000 * 60 // 查询过去1分钟的应用使用记录
    val stats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, startTime, endTime)
    if (stats.isNullOrEmpty()) return null
    // 按最后使用时间排序取最近的应用
    return stats.sortedByDescending { it.lastTimeUsed }.firstOrNull()?.packageName
}

匹配应用并调整音量

fun adjustVolumeIfMusicAppRunning(context: Context) {
    val foregroundPkg = getForegroundAppPackageName(context) ?: return
    // 常见音乐应用包名列表,可按需扩展
    val musicAppPkgs = listOf(
        "com.netease.cloudmusic", // 网易云音乐
        "com.tencent.qqmusic", // QQ音乐
        "com.kugou.android" // 酷狗音乐
    )
    if (musicAppPkgs.contains(foregroundPkg)) {
        val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
        // 将媒体音量调至最大值
        val maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, 0)
    }
}

iOS 平台

非越狱设备受苹果沙箱机制限制,无法获取其他应用的前台运行状态,仅可监听自身App的激活状态执行对应操作。
如果是越狱设备,可通过libactivator私有接口获取前台应用的Bundle ID,匹配音乐应用后调用AVAudioSession相关接口调整系统音量。

Windows 平台

获取前台进程名称示例(C++)

#include <windows.h>
#include <psapi.h>

std::wstring getForegroundProcessName() {
    HWND hwnd = GetForegroundWindow();
    DWORD pid = 0;
    GetWindowThreadProcessId(hwnd, &pid);
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
    if (hProcess == NULL) return L"";
    WCHAR processName[MAX_PATH] = {0};
    GetModuleBaseNameW(hProcess, NULL, processName, MAX_PATH);
    CloseHandle(hProcess);
    return processName;
}

调整系统音量

可通过Windows Core Audio API获取音量控制对象,调用SetMasterVolumeLevelScalar接口将音量设置为1.0(最大值)。

注意事项

  • 不同系统版本的权限规则存在差异,部署前需要做好对应版本的兼容测试
  • 音乐类应用包名/进程名不统一,可根据实际需求维护匹配列表
  • 修改系统音量需要提前申请对应的系统权限,否则会执行失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:54:07