2009-11-22 84 views
1

我正在編寫Android平臺的程序,我想實現已發現應用程序的代碼here在Android上使用應用程序內的應用程序

在我的應用程序菜單中有一個按鈕,顯示「在地圖上顯示朋友」,所以我希望此程序從按鈕按鈕開始。

有關更多詳細信息,我將給出一個小圖。

用戶啓動我的應用程序> User Presses "Menu" Key > User Presses "Show Friends on Map" > WAMF.apk(在上面的鏈接的應用程序)啓動

有沒有什麼辦法可以做到這一點?

回答

0

(我希望雷託•梅耶爾看到你的問題,因爲WAMF是他的應用程序)

嗯,在我看來,你有兩個主要選擇。

選項#1表示WAMF作爲單獨的應用程序安裝。這可能會很棘手,因爲目前還不清楚這個應用程序是否可以在任何地方分發(例如,Android電子市場)。但是,假設它是,並且假設用戶安裝了應用程序,那麼當用戶調用所需的菜單選項時,您需要使用Intent調用startActivity(),這將解析爲您希望顯示的WAMF中的任何內容。您也可以使用PackageManager來檢測是否安裝了WAMF(即查看是否有任何活動與您想要在startActivity()中使用的Intent相匹配) - 這樣,您可以禁用菜單選項或使其彈出告訴人們安裝WAMF的對話框等。

選項#2說,由於WAMF是自由軟件,因此您只需將相關代碼部分直接集成到您的應用程序中即可。另一方面,代碼是否存在也沒有問題。不過,如果邁爾先生更新一年前的WAMF,你將不得不重新整合他的改變。此外,他的應用程序在GPLv3下發布,這可能會或可能不適用於您自己的應用程序的授權計劃。

1

如果我理解正確,並且您想要做的是啓動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市場。如果不是,你運氣不好。

+0

我有點困惑上面的代碼行:pm.queryIntentActivities(opentableIntent,0).size()== 0? opentableIntent:marketIntent ...不應該讓我pm.queryIntentActivities(opentableIntent,0).size()== 0? marketIntent:opentableIntent ???如果軟件包管理器將大小返回爲零,那麼我們希望將用戶推向市場。或者我錯過了什麼?我在developer-android博客上看到了相同的代碼(由您鏈接到上面) – Viren

相關問題