如何让用户知道他/她需要安装我的应用所依赖的其他应用

时间:2011-05-22 17:13:04

标签: android android-intent

我正在开发一个应用程序,它定义了一些意图过滤器(以动作字符串的形式,例如com.example.project.UPLOAD)供其他应用程序使用。考虑一个没有我的应用程序但使用我的intent过滤器的应用程序的设备,创建的Intent将无法按照文档中的描述进行操作测试。有没有办法防止这种情况发生或提供更好的用户体验?以下是我能想到的一些方法,但不知道是否有可行的方法:

  1. 在安装依赖于其他应用程序来处理某些意图的应用程序时,建议用户安装可以处理意图的应用程序
  2. 动态确定是否可以处理意图。如果没有,请启动显示可以处理意图的应用程序的市场
  3. 处理此问题的最佳方法是什么?如果可能,请提供一些实施参考。

3 个答案:

答案 0 :(得分:3)

除了在Marketplace中提及它之外,我不确定如何在应用程序安装期间显示消息,因为(据我所知),在安装时没有支持的方法来执行代码。

如果其他应用程序使用您的过滤器,则由他们来确保您的软件包已安装。没有安装你就无法给它们任何东西。

他们可以使用PackageManager测试是否安装了软件包,并调整其逻辑以在用户需要安装软件包时通知用户。示例:

private boolean isInstalled(){
    ComponentName comp = new ComponentName("com.yourpackagestuff", "com.yourpackagestuff.TestClass");
    Intent intentName = new Intent().setComponent(comp);
    List <ResolveInfo> list = ctx.getPackageManager().queryIntentActivities(intentName, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

至少我是这样做的。

答案 1 :(得分:0)

您可以尝试调用Intent并捕获ActivityNotFoundException(如果它被抛出)。如果它被抛出,你知道它不存在,所以你可以实现你的备份代码。

答案 2 :(得分:0)

此解决方案更快Android check for dependent application during installation?

getPackageManager().getApplicationInfo("com.myproject", 0 );

没有例外意味着它的确定