首页 > 解决方案 > Android - 播放声音的应用程序列表

问题描述

我有一个关于 Android Xamarin 的项目,我想获取正在播放声音的程序列表。我使用下面的代码,但无济于事。

Intent intent = new Intent(Intent.ActionView);
Android.Net.Uri uri = Android.Net.Uri.WithAppendedPath(MediaStore.Audio.Media.InternalContentUri, "1");
intent.SetData(uri);
intent.SetType("audio/*");
IList<ResolveInfo> apps = PackageManager.QueryIntentActivities(intent, 0);
foreach (ResolveInfo rInfo in apps)
{

}

还有其他选择吗?还是我做错了?

标签: androidxamarin

解决方案


我尝试过使用共享代码,在我的物理设备中运行,您应该注意设备是否包含正在播放的声音应用程序。如果不确定模拟器设备安装了音频应用程序,最好使用物理设备进行测试。

Intent intent = new Intent(Intent.ActionView);
Android.Net.Uri uri = Android.Net.Uri.WithAppendedPath(MediaStore.Audio.Media.InternalContentUri, "1");
intent.SetData(uri);
intent.SetType("audio/*");
IList<ResolveInfo> apps = PackageManager.QueryIntentActivities(intent, 0);
foreach (ResolveInfo rInfo in apps)
{
    Console.WriteLine("---" + rInfo);
}

控制台日志是:

03-24 14:19:40.117 I/mono-stdout( 1940): ---ResolveInfo{9002d72 cn.kuwo.player/.activities.EntryActivity m=0x608000}
03-24 14:19:40.119 I/mono-stdout( 1940): ---ResolveInfo{b1845c3 com.baidu.searchbox/.music.SearchMusicActivity m=0x608000}
03-24 14:19:40.119 I/mono-stdout( 1940): ---ResolveInfo{6694e40 com.qiyi.video/org.iqiyi.video.activity.PlayerActivity m=0x608000}
03-24 14:19:40.119 I/mono-stdout( 1940): ---ResolveInfo{62e0179 com.tencent.mobileqq/.activity.JumpActivity m=0x608000}

推荐阅读