我正在編寫Android平臺的程序,我想實現已發現應用程序的代碼here。在Android上使用應用程序內的應用程序
在我的應用程序菜單中有一個按鈕,顯示「在地圖上顯示朋友」,所以我希望此程序從按鈕按鈕開始。
有關更多詳細信息,我將給出一個小圖。
用戶啓動我的應用程序> User Presses "Menu" Key > User Presses "Show Friends on Map" > WAMF.apk
(在上面的鏈接的應用程序)啓動
有沒有什麼辦法可以做到這一點?
我正在編寫Android平臺的程序,我想實現已發現應用程序的代碼here。在Android上使用應用程序內的應用程序
在我的應用程序菜單中有一個按鈕,顯示「在地圖上顯示朋友」,所以我希望此程序從按鈕按鈕開始。
有關更多詳細信息,我將給出一個小圖。
用戶啓動我的應用程序> User Presses "Menu" Key > User Presses "Show Friends on Map" > WAMF.apk
(在上面的鏈接的應用程序)啓動
有沒有什麼辦法可以做到這一點?
(我希望雷託•梅耶爾看到你的問題,因爲WAMF是他的應用程序)
嗯,在我看來,你有兩個主要選擇。
選項#1表示WAMF作爲單獨的應用程序安裝。這可能會很棘手,因爲目前還不清楚這個應用程序是否可以在任何地方分發(例如,Android電子市場)。但是,假設它是,並且假設用戶安裝了應用程序,那麼當用戶調用所需的菜單選項時,您需要使用Intent
調用startActivity()
,這將解析爲您希望顯示的WAMF中的任何內容。您也可以使用PackageManager
來檢測是否安裝了WAMF(即查看是否有任何活動與您想要在startActivity()
中使用的Intent
相匹配) - 這樣,您可以禁用菜單選項或使其彈出告訴人們安裝WAMF的對話框等。
選項#2說,由於WAMF是自由軟件,因此您只需將相關代碼部分直接集成到您的應用程序中即可。另一方面,代碼是否存在也沒有問題。不過,如果邁爾先生更新一年前的WAMF,你將不得不重新整合他的改變。此外,他的應用程序在GPLv3下發布,這可能會或可能不適用於您自己的應用程序的授權計劃。
如果我理解正確,並且您想要做的是啓動WAMF,請參閱this blog post。
在它下面的代碼,這將檢測是否OpenTable的(或WAMF,在這個問題上)安裝,如果是這樣調用它,否則將用戶帶到了Android Market下載OpenTable的:
public void showReserveButton() {
// setup the Intent to call OpenTable
Uri reserveUri = Uri.parse(String.format("reserve://opentable.com/%s?refId=5449",
opentableId));
Intent opentableIntent = new Intent("com.opentable.action.RESERVE", reserveUri);
// setup the Intent to deep link into Android Market
Uri marketUri = Uri.parse("market://search?q=pname:com.opentable");
Intent marketIntent = new Intent(Intent.ACTION_VIEW).setData(marketUri);
opentableButton.setVisibility(opentableId > 0 ? View.VISIBLE : View.GONE);
opentableButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
PackageManager pm = getPackageManager();
startActivity(pm.queryIntentActivities(opentableIntent, 0).size() == 0 ?
opentableIntent : marketIntent);
}
});
}
正如commonsware所說,這是假設WAMF可用於Android市場。如果不是,你運氣不好。
我有點困惑上面的代碼行:pm.queryIntentActivities(opentableIntent,0).size()== 0? opentableIntent:marketIntent ...不應該讓我pm.queryIntentActivities(opentableIntent,0).size()== 0? marketIntent:opentableIntent ???如果軟件包管理器將大小返回爲零,那麼我們希望將用戶推向市場。或者我錯過了什麼?我在developer-android博客上看到了相同的代碼(由您鏈接到上面) – Viren