2012-02-15 7 views
1

Androidアプリケーションでプラグインパターンを実装します。今、私が作成したAndroidプラグインパターン

public abstract class PluginReceiver extends BroadcastReceiver 

外部プラグインでは、クラスでもそうでgetIcongetNameなどいくつかのメソッドが含まれてい

public class SmsPluginReceiver extends PluginReceiver 

PluginReceiver

のためにそこにあります。メインアプリケーションで

<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つを得た

SmsPluginReceiverは、指定されたインテントフィルタアクションを持つ受信機としてAndroidManifest.xmlに登録されていますResolveInfoオブジェクトです。

SmsPluginReceiverデータ(アイコン、名前、...)にアクセスするにはどうすればよいですか?

+0

可能かどうかはわかりません。登録済みの各受信者からこの種の情報を取得するためには、注文されたブロードキャストを送信する必要があります。http://developer.android.com/reference/android/content/Context.html#sendOrderedBroadcast%28android.content.Intent 、%20java.lang.String、%20andandroid.content.BroadcastReceiver、%20android.os.Handler、%20int、%20java.lang.String、%20android.os.Bundle%29。それ以外の場合は、受信者の独自のレジストリを設定する必要があります。 –

答えて

2

Androidのプラグインアーキテクチャは本当に面倒なことがあります。どのようなアプローチが必要なのかは、どれほど難しいか。私はプラグインフラグメントをメインのアプリケーションアクティビティに統合したいプロジェクトを持っていました。このアプローチをとると、プラグインはメインアプリと同じキーで署名する必要があります。

アクティビティを起動するだけでプラグインを統合できる場合は、PendingIntentsの使用をお勧めします。どういうわけか、PendingIntentsをプラグインスロットに登録してプラグインをアクティブにできるようにする必要があります。私はパッケージマネージャを使用して新しいプラグインを識別し、それ自体を登録するように指示したインテントを送信し、ContentProviderを公開して自身を登録できるようにしました。私はそれからPendingIntentを登録して、それをアプリの経験に統合しました。

この情報はお探しですか?

関連する問題