2012-02-15 2 views
1

Android 애플리케이션에 플러그인 패턴을 구현하려고합니다. 지금 내가 만든Android 플러그인 패턴

:

public abstract class PluginReceiver extends BroadcastReceiver 

외부 플러그인에서 클래스도 등 getIcon, getName과 같은 몇 가지 방법을 포함

public class SmsPluginReceiver extends PluginReceiver 

PluginReceiver 예를

을 위해 존재한다.

<receiver android:name=".plugin.sms.SmsPluginReceiver"> 
    <intent-filter> 
     <action android:name="hsz.project.plugin" /> 
    </intent-filter> 
</receiver> 

기본 응용 프로그램에서 내가 PackageManager와 함께 사용할 수있는 모든 플러그인을 찾고 있어요 :

SmsPluginReceiver은 특정 의도 필터 동작 수신기로 AndroidManifest.xml에 등록되어

PackageManager manager = getPackageManager(); 
Intent intent = new Intent("hsz.project.plugin"); 
List<ResolveInfo> matches = manager.queryBroadcastReceivers(intent, 0); 

나는 하나있어 ResolveInfo 개체.

어떻게해야합니까? - SmsPluginReceiver 데이터 (아이콘, 이름, ...)에 액세스하는 방법은 무엇입니까?

+0

가능한지 확실하지 않습니다. 등록 된 각 수신자로부터 이러한 종류의 정보를 검색하려면 순서가 지정된 브로드 캐스트를 전송해야 할 수 있습니다 (http://developer.android.com/reference/android/content/Context.html#sendOrderedBroadcast%28android.content.Intent). , % 20java.lang.String, % 20android.content.BroadcastReceiver, % 20android.os.Handler, % 20int, % 20java.lang.String, % 20android.os.Bundle % 29. 그렇지 않으면 자신의 수신자 레지스트리를 설정해야 할 수도 있습니다. –

답변

2

안드로이드의 플러그인 아키텍처는 정말 까다 롭습니다. 얼마나 까다로운가는 어떤 접근 방식이 필요한지에 달려 있습니다. 나는 플러그인 플러그인을 메인 앱 활동에 통합하고자하는 프로젝트를 가졌다. 이러한 접근 방식을 취하면 플러그인은 기본 앱과 동일한 키로 서명해야합니다.

단순히 활동을 시작하여 플러그인을 통합 할 수 있다면 PendingIntents를 사용하는 것이 좋습니다. 어떻게 든, PendingIntents를 플러그인 슬롯에 등록하여 활성화 할 수 있도록 플러그인을 가져와야합니다. 패키지 관리자를 사용하여 새 플러그 인을 식별하고 자체 등록을 지시하는 의도를 보낸 다음 자체 등록 할 수 있도록 ContentProvider를 노출했습니다. 그런 다음 PendingIntent를 등록하여 앱 경험에 통합했습니다.

정보가 궁금하십니까?