从android应用程序打开调频收音机

从android应用程序打开调频收音机,android,audio,Android,Audio,我正在开发一个应用程序,需要打开安装在设备中的调频收音机。 这只是“调频收音机”而不是“互联网调频收音机” 我知道如何使用intent打开另一个应用程序 Intent i = new Intent(Intent.ACTION_MAIN); PackageManager manager = getPackageManager(); i = manager.getLaunchIntentForPackage("com.sec.android.app.fm"); i.addCategory(I

我正在开发一个应用程序,需要打开安装在设备中的调频收音机。 这只是“调频收音机”而不是“互联网调频收音机”

我知道如何使用intent打开另一个应用程序

 Intent i = new Intent(Intent.ACTION_MAIN);
 PackageManager manager = getPackageManager();
 i = manager.getLaunchIntentForPackage("com.sec.android.app.fm");
 i.addCategory(Intent.CATEGORY_LAUNCHER);
 startActivity(i);
但我需要每个设备上的调频收音机应用程序包名, 是否有任何方法可以查询包名并打开调频收音机应用程序

目前我使用的是三星galaxy S。该设备中的调频收音机组件名称为

com.sec.android.app.fm
每个安卓设备的软件包名称都是相同的


任何人请帮忙。

CyanogenMod使用
com.android.fm
例如。我不确定其他特定于供应商的无线电应用程序,但我认为它们的软件包名称很可能不同

现在我想到了两个不一定相互排斥的选择:

  • 使用启发式方法收集无线电应用程序包名称的可能候选项*
  • 要求用户从所有已安装软件包的列表中选择radio应用程序
  • 如果你的应用程序具有internet权限,你还可以收集使用任何一种方法发现的包名,以编译一个静态包名列表,并将其包含在下一版本中,希望新用户不必手动选择他们的广播应用程序

    *)
    使用
    PackageManager.getInstalledApplications(…)
    并扫描返回的
    列表中出现的
    “.fm.”
    “.fm”
    等,您可能会得到一个可能的候选程序列表。

    谢谢老兄。。我想这就可以了。。但是如果有像“com.fmanager.xyz”这样的包的话这将打开那个包…对…是的,那可能是个问题。一种选择是根据可能的候选人成为fm应用程序的可能性(即fm)将分数应用于他们。将获得高于.fm*的分数,或以.fm结尾的包获得最高分数。还请记住,它们可能根本不包含“fm”,但可能包含“radio”或类似的内容!这种启发式方法可能看起来相当奇特,更安全的选择当然是选项2,要求用户在首次发布时选择一个广播应用程序。。。。