1

我将在我的 Android 应用程序中实现插件模式。

现在我已经创建了:

public abstract class PluginReceiver extends BroadcastReceiver

例如,在外部插件中

public class SmsPluginReceiver extends PluginReceiver

PluginReceiver类还包含一些方法,如getIcon,getName等等。

SmsPluginReceiver注册AndroidManifest.xml为具有指定意图过滤器操作的接收器:

<receiver android:name=".plugin.sms.SmsPluginReceiver">
    <intent-filter>
        <action android:name="hsz.project.plugin" />
    </intent-filter>
</receiver>

在主应用程序中,我正在搜索所有可用的插件PackageManager

PackageManager manager = getPackageManager();
Intent intent = new Intent("hsz.project.plugin");
List<ResolveInfo> matches = manager.queryBroadcastReceivers(intent, 0);

我得到了一个ResolveInfo对象。

我完全不知道我应该用它做什么 - 如何访问SmsPluginReceiver数据(图标、名称、...)?

4

1 回答 1

2

Android 中的插件架构可能非常棘手。有多棘手取决于您需要什么方法。我有一个项目,他们想将插件片段集成到主应用程序 Activity 中。如果您采用这种方法,插件将必须使用与主应用程序相同的密钥进行签名。

如果您可以通过简单的启动活动来集成插件,那么我建议使用 PendingIntents。不知何故,您必须让您的插件将 PendingIntents 注册到插件插槽中才能激活它们。我使用包管理器来识别新插件,向它发送一个指示它自己注册的意图,然后公开一个 ContentProvider 以便它可以注册自己。然后我调用了它注册的 PendingIntent 以将其集成到应用程序体验中。

这是您要查找的信息吗?

于 2012-02-15T13:38:23.690 回答