Шаблон плагина для Android - PullRequest
       14

Шаблон плагина для Android

1 голос
/ 15 февраля 2012

Я собираюсь реализовать шаблон плагина в своем приложении для 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 данным (значок, имя, ...)?

1 Ответ

2 голосов
/ 15 февраля 2012

Архитектура плагинов в Android может быть очень сложной. Насколько сложно, зависит от того, какой подход вам нужен. У меня был проект, в котором они хотели интегрировать фрагменты плагинов в основные приложения Activity. Если вы выберете такой подход, плагины должны быть подписаны тем же ключом, что и основное приложение.

Если вы можете интегрировать плагины, просто запуская действия, то я бы порекомендовал использовать PendingIntents. Так или иначе, вы должны получить свой плагин для регистрации PendingIntents в слотах плагинов, чтобы они могли быть активированы. Я использовал менеджер пакетов для определения новых плагинов, отправил ему намерение дать ему указание зарегистрироваться, а затем открыл ContentProvider, чтобы он мог зарегистрироваться. Затем я позвонил в зарегистрированный PendingIntent, чтобы интегрировать его в приложение.

Это та информация, которую вы ищете?

...