2012-02-28 33 views
4

我正在開發一個應用程序,我需要打開設備中安裝的FM收音機。 這只是「FM收音機」而不是「互聯網FM收音機」。從Android應用程序打開FM收音機

我知道如何使用意圖

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); 

打開另一個應用程序,但我需要在每個設備中的FM無線電廣播應用的包名, 有沒有什麼辦法可以查詢包名稱,打開調頻無線電應用。

現在我在這個設備使用三星Galaxy S..the FM廣播包的名字是

com.sec.android.app.fm 

這是包的名字都是一樣的每一個Android設備。

任何一個請幫助..

回答

4

的CyanogenMod使用com.android.fm例如。我不確定其他廠商特定的廣播應用程序,但我會說他們的軟件包名稱很可能會有所不同。

眼下二,不一定是相互排斥的選項浮現在腦海中:

  1. 使用啓發式方法來收集對無線應用的軟件包名稱*
  2. 可能的候選人要求用戶選擇從無線電應用要包含在你的下一個版本

如果您的應用程序有互聯網的權限,你也可以收集使用上述兩種方法編譯包名的靜態列表發現了這個包名所有已安裝包的列表,在希望讓新用戶不必手動選擇他們的電臺應用程序。

*) 使用PackageManager.getInstalledApplications(...)和掃描返回List".fm."".fm"等事件,你也許能夠得到可能的候選人名單。

+0

Thanks Buddy ..i認爲這樣做..但是如果有任何包像「com.fmanager.xyz」這將打開該包..正確.. – John 2012-03-01 07:02:35

+1

嗯,是的,這可能是一個問題。一種選擇是基於他們可能成爲fm應用程序的可能性,將分數應用於可能的候選人,即* .fm。*將得到高於.fm *的分數,或者以.fm結尾的程序包獲得最高分數。另外請記住,他們可能根本不包含「fm」,但可能是「收音機」或類似的東西! 這種啓發式方法可能看起來相當花哨,當然更安全的選擇是選項#2,要求用戶在第一次啓動時選擇一個電臺應用程序.... – caspase 2012-03-01 08:22:10

相關問題