2

假设我有一个名为“显示”的菜单选项,我的应用程序 com.android.display 正在执行显示图片的任务。现在如果设备上没有安装 apk com.android.display,菜单选项“显示”就会出现但它没有用。所以我希望只有当这个apk安装在设备上时才会出现“显示”菜单选项。有什么办法可以在 Android 操作系统上实现这一点吗?

4

2 回答 2

1

这个特殊的解决方案是在Android How To on Google Sites

如果您需要知道用户设备上是否安装了特定应用程序,您可以使用 PackageManager。您可以从上下文类(例如活动或服务)调用 getPackageManager()。这为您提供了多种方法,其中之一是 getPackageInfo()。以下是您可能会使用的方法。你可以这样称呼它:

isAppInstalled("com.simexusa.campusmaps_full");

private boolean isAppInstalled(String uri) {
   PackageManager pm = getPackageManager();
   boolean installed = false;
   try {
      pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
      installed = true;
   } catch (PackageManager.NameNotFoundException e) {
      installed = false;
   }
   return installed;
}
于 2012-08-08T04:56:59.153 回答
0

有几种方法可以解决这个问题。

第一个,也可能是最好的,是在所有情况下都显示该选项。如果未安装其他 APK,当您尝试激活它时,通过向其发送意图,Android 将抛出异常。只需捕获此异常,并提供将用户引导到可以安装缺失应用程序的市场。这样,用户就会意识到他们可以选择额外的功能,并且可以相当容易地安装它。

如果你坚持你原来的路线,我不会采用上面的解决方案,因为有可能不止一个 APK 提供相同的功能。如果您检查特定的 APK,那么用户可能有另一个 APK 处理相同的意图,并且您没有向他们提供功能,尽管它受到支持。

相反,我会检查特定意图是否有处理程序。您可以在此处找到执行此操作的代码。

沙查尔

于 2012-08-08T05:02:45.070 回答