2009-11-22 248 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

相关问题