编程语言
首页 > 编程语言> > 将文本转换委派给“插件”Android应用程序,事先并不知道

将文本转换委派给“插件”Android应用程序,事先并不知道

作者:互联网

上下文

我们的应用程序向用户显示HTML flashcard.
我们添加了几层“过滤器”以满足不同的用户群:

>为了满足国际象棋爱好者的需要,我们将任何{FEN:rnbqkbnr / pp1ppppp / 8 / 2p5 / 4P3 / 5N2 / PPPP1PPP / RNBQKB1R b KQkq – 1 2}块转换为代表棋盘的HTML表格,棋盘位于正确位置
>为了满足中国语言学习者,我们将字词转换为< ruby​​>字< rt>zì< / rt>< / ruby​​>
> ……

原始HTML→国际象棋转换→中文转换→…→最终HTML显示

问题

过滤器数量不断增加,导致出现问题:

>较慢的演绎
>更重要的下载
>维护更大的源代码
>更多错误/崩溃
>维护负担

因此,我们希望制作这些可单独安装的应用程序.
例如,国际象棋中国爱好者将安装3个应用程序:

> TheApp
> TheApp Chess插件
> TheApp中文插件

TheApp将自动发现安装了哪些插件,并依次调用它们(顺序无关紧要).

我正在考虑使用一个意图THEAPPTRANSFORM,但我如何才能收到具有< intent-filter>的应用列表.对于THEAPPTRANSFORM,并依次打电话给他们?

速度是一项主要要求.我已经读过Intents are 10+ times slower than direct callsParcelable会在这里帮忙吗?

如果不可能,还有其他解决方案吗?

解决方法:

要了解使用THEAPPTRANSFORM作为过滤器的广播接收器的应用程序,您可以使用下面的代码

PackageManager pm = getPackageManager();
    Intent intent = new Intent("THEAPPTRANSFORM");
    List<ResolveInfo> info = pm.queryBroadcastReceivers(intent, 0);
    for (ResolveInfo resolveInfo : info) {

        Log.e("apps", "packages = " + resolveInfo.activityInfo.packageName);
    }

标签:android,plugins,android-intent,intentfilter
来源: https://codeday.me/bug/20190830/1771429.html