10

Serviceを拡張するandroid を作成しましたAccessibilityService。my から、Activityそれにバインドしたいと思いServiceます。Serviceからに情報を送信する必要があるためActivityです。サンプルコードが必要です。私はグーグルを検索しましたが、似たようなものは見つかりませんでした。誰かが例へのリンクを貼ってください。

4

2 に答える 2

21

アクティビティからの AccessibilityService とのバインドは可能ですが、サービスに渡すことができるのは AccessibilityEvents だけです。これは、AccessibilityService.onBind() が final と宣言されているためです。つまり、新しいメソッドをバインダーに追加することはできません。

ただし、いくつかの代替ソリューションがあります。

アクティビティとサービスが同じプロセス内で実行されている場合 (これは通常、同じ APK 内にある場合に当てはまります)、アクセシビリティ サービスの静的インスタンスと通信できます。これがどのように機能するかの例を次に示します。

MyAccessibilityService.java:

private static MyAccessibilityService sSharedInstance;

protected void onServiceConnected() {
    . . .
    sSharedInstance = this;
}

public boolean onUnbind(Intent intent) {
    sSharedInstance = null;
    . . .
}

public static MyAccessibilityService getSharedInstance() {
    return sSharedInstance;
}

MyActivity.java

protected void onCreate() {
    . . .
    mAccessibilityService = MyAccessibilityService.getSharedInstance();
    if (mAccessibilityService != null) {
        // The service is running and connected.
        mAccessibilityService.doSomething();
    }
}

サービスとアクティビティが別々のプロセス (別々の APK など) にある場合でも、いくつかのオプションがあります。

  • IntentをアクティビティからサービスのBroadcastReceiverにブロードキャストすることで通信します
  • アクティビティを、静的インスタンスと通信する AccessibilityService のプロセス内の「プロキシ」サービスにバインドします (上記のように)。

これらのいずれかについて詳しく説明する必要がある場合は、コメントを残してください。

于 2012-09-24T01:07:54.867 に答える