如何判断是否可以在我的应用程序中使用服务

时间:2011-02-17 04:16:43

标签: android

我希望这个术语是正确的,因为我对Android App开发相对较新,但是......

我该如何判断以下内容:

1)如果另一个应用程序提供了我的应用程序可以使用的“服务”? 2)如何访问它?

这是我正在谈论的一个例子。

假设我知道提供餐馆位置的应用程序(我认为有一些),我创建了一个评估意大利餐馆的应用程序。用户输入意大利餐厅的名称(进入我的应用程序),我的应用程序吐出评论,并且还使用“餐厅定位器应用程序”提供的信息向用户显示该餐厅所在的位置。

我的问题是:我如何知道'餐厅定位器应用程序'是否为我的应用程序提供此信息,并且 - 如果是 - 我该如何访问它?

此处不寻找代码示例 - 只是一般性解释。

谢谢!

2 个答案:

答案 0 :(得分:0)

技术存在,它被称为内容提供商。请参阅用于客户端访问的ContentResolver类的文档,用于实现服务的ContentProvider。

现有的餐厅定位器应用程序是否实际上有应用程序可以调用的内容提供商是另一个重要问题。相当不可能,恕我直言。即使他们这样做,架构也很可能在应用程序之间有所不同。

要列出特定应用程序具有的提供程序,请使用PackageInfo类。

答案 1 :(得分:0)

有点切向,但是我使用了以下内容来查看是否有任何可以响应意图动作的内容:

public static boolean doesIntentHaveServices(final Context context,
            final String action) {
        final PackageManager packageManager = context.getPackageManager();
        final Intent intent = new Intent(action);
        final List<ResolveInfo> list = packageManager.queryIntentServices(intent, 0);
        return list.size() > 0;
    }

您可以将queryIntentServices更改为queryBroadcastReceivers等。 See the PackageManager documentation.