安卓插件模式

标签 android plugin-pattern

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

现在我已经创建了:

public abstract class PluginReceiver extends BroadcastReceiver

在外部插件中有例如

public class SmsPluginReceiver extends PluginReceiver

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

SmsPluginReceiverAndroidManifest.xml 中注册为具有指定 intent-filter 操作的接收器:

<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 数据(图标、名称、...)?

最佳答案

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

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

这就是您要查找的信息吗?

关于安卓插件模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293657/

相关文章:

安卓 : Paypal Express checkout integration not working

Android如何防止调整scrollview大小时scrollview的内容跳转?

没有接口(interface)的 C# 插件模式

Java插件模式

java - 在通知区域显示加载 Activity 进度条

java - 不幸的是MyApp已停止。我该如何解决?

android - Phonegap后台问题