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