【问题标题】:How to let user know he/she needs to install another app that my app depends on如何让用户知道他/她需要安装我的应用所依赖的另一个应用
【发布时间】:2011-08-30 16:12:36
【问题描述】:
我正在开发一个应用程序,它定义了一些意图过滤器(以操作字符串的形式,例如 com.example.project.UPLOAD)供其他应用程序使用。考虑一个没有我的应用程序但有使用我的意图过滤器的应用程序的设备,创建的意图将无法通过文档中描述的操作测试。有什么方法可以防止这种情况发生或提供更好的用户体验?以下是一些我能想到但不知道是否可行的方法:
- 在安装依赖于其他应用程序来处理某些 Intent 的应用程序时,建议用户安装可以处理 Intent 的应用程序
- 动态确定是否可以处理意图。如果没有,请启动市场以显示可以处理意图的应用程序
处理此问题的最佳方法是什么?如果可能,请提供一些实现参考。
【问题讨论】:
标签:
android
android-intent
【解决方案1】:
您可以尝试调用 Intent 并捕获 ActivityNotFoundException(如果它被抛出)。如果它确实被抛出,你知道它不存在,所以你可以实现你的备份代码。
【解决方案2】:
除了在 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;
}
至少我会这样做。