1

Android アプリケーションにプラグイン パターンを実装します。

今私は作成しました:

public abstract class PluginReceiver extends BroadcastReceiver

外部プラグインには、たとえば

public class SmsPluginReceiver extends PluginReceiver

PluginReceiverクラスには、などのいくつかのメソッドも含まれてgetIcongetNameます。

SmsPluginReceiverAndroidManifest.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);

そして私は1つのResolveInfoオブジェクトを手に入れました。

どうすればいいのかまったくわかりません-SmsPluginReceiverデータ(アイコン、名前など)にアクセスする方法は?

4

1 に答える 1

2

Android のプラグイン アーキテクチャは非常に扱いにくい場合があります。どれだけトリッキーかは、必要なアプローチによって異なります。プラグインフラグメントをメインアプリのアクティビティに統合したいプロジェクトがありました。そのアプローチを取る場合、プラグインはメイン アプリと同じキーで署名する必要があります。

アクティビティを起動するだけでプラグインを統合できる場合は、PendingIntents を使用することをお勧めします。どういうわけか、PendingIntents をプラグイン スロットに登録して、プラグインを有効にする必要があります。パッケージ マネージャーを使用して新しいプラグインを識別し、自身を登録するよう指示するインテントをプラグインに送信し、ContentProvider を公開して自身を登録できるようにしました。次に、登録されている PendingIntent を呼び出して、アプリ エクスペリエンスに統合しました。

それはあなたが探している情報ですか?

于 2012-02-15T13:38:23.690 に答える