2010-03-25 60 views
6

我想发布我的应用程序(ABC)。它是一个有声读物文件(只是例如。)包装为apk。当用户安装这个应用程序时,它需要检查是否已经安装了另一个应用程序(XYZ)。如果不让用户知道他们必须在安装ABC之前先安装应用程序XYZ。Android在安装过程中检查依赖应用程序?

在此先感谢

拉杰什

回答

18

如果你知道你正在寻找应用程序的软件包名称可以使用PackageManager来测试应用程序的存在。

try{ 
    ApplicationInfo info = getPackageManager() 
          .getApplicationInfo("com.myproject", 0); 
    //-- application exists 
    } catch(PackageManager.NameNotFoundException e){ 
    //-- application doesn't exist 
} 
+1

虽然我不认为你可以这样做“安装”。您需要在第一次运行该应用时最有可能。 – 2010-03-25 20:14:46

+0

正确...我不认为有可能在安装时运行此代码。也就是说,你可以在安装过程中采取什么行动?第一次有人真正运行你的应用程序时,检查是否存在另一个应用程序会更好吗? – JeremyFromEarth 2010-03-25 20:47:43

+6

“这就是说,你可以在安装过程中采取什么行动?”什么都没有 - 你不能在用户的控制下首先启动你的应用程序。 “在第一次有人真正运行你的应用程序时,检查是否存在另一个应用程序会更好吗?”没有选择 - 这是唯一的选择。我曾经争论过APK的一个依赖系统来处理这种情况,并且响应一直是......不堪设想的。 – CommonsWare 2010-03-25 21:01:03

2

如果XYZ是共享库,你可以建立你的应用程序,以防止用户无需安装XYZ ABC的Android清单。 请使用ABC,的AndroidManifest.xml中内部的元素时指出:

<uses-library android:name="package name of XYZ" android:required="true" /> 

希望这有助于你的问题。

+1

此方法是否通知用户该应用程序无法安装,因为它需要依赖应用程序?如果是这样,它会把他们带到市场? – Bear 2012-01-02 01:02:38

+2

* uses-library *设置的效果是应用程序将被市场过滤掉,因此如果* XYZ *尚未安装在设备中,用户将无法看到应用程序* ABC *:[市场过滤器](http://developer.android.com/guide/appendix/market-filters.html) – Livio 2012-01-02 13:56:57

相关问题