2012-02-16 18 views
13

私はAccessibilityServiceの起動方法は?

Intent mailAccessabilityIntent = new Intent(this, EmailAccessabilityService.class); 
startService(mailAccessabilityIntent); 

私の問題を使用してAccessibilityServiceの私の実装を開始しようとしているがonServiceConnected()と呼ばれていませんでした。 このサービスを正しく開始するにはどうすればよいですか?

答えて

1

私は今これをやっています。サービスが作成され、アクセシビリティインテントフィルタを使用してマニフェストファイルに正しくリストされます。あなたのサービスはsettings-accessibility-servicesの下に表示されます。あなたはそれをクリックしてからそれをトグルすることによってそれを開始します。私は、たとえそれが可能であったとしても、意図を介してそれを始める方法を知らない。私はあなたのボタンを開始するためにユーザーを移動することができますその李GPSだと思います。

24

アクセシビリティサービスは、画面上のコンテンツを探索したり操作したりすることができるため、設定>アクセシビリティで明示的にサービスを有効にする必要があります。サービスが有効になると、システムは自動的にサービスを開始し、アクセシビリティAPIにバインドします。

、あなたのアプリケーションマニフェストにあなたのサービスを宣言していることを確認してください:

<service android:name=".MyAccessibilityService" 
     android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> 
    <intent-filter> 
     <action android:name="android.accessibilityservice.AccessibilityService" /> 
    </intent-filter> 
    . . . 
</service> 

あなたはまた、あなたのサービスのためのコンフィギュレーションを提供する必要があります、どちらかsetServiceInfo(AccessibilityServiceInfo)をオーバーライドまたはメタデータ属性とXMLを追加することにより、設定ファイル。

メタデータ属性が<インテントフィルタ>タグの後にあなたの<サービス>宣言で行くとこのようになります:あなたは(この場合は、accessibilityserviceを参照している

<meta-data android:name="android.accessibilityservice" 
      android:resource="@xml/accessibilityservice" /> 

XML設定.xmlの)次のようになります。

<accessibility-service 
    android:accessibilityEventTypes="typeViewClicked|typeViewFocused" 
    android:packageNames="foo.bar, foo.baz" 
    android:accessibilityFeedbackType="feedbackSpoken" 
    android:notificationTimeout="100" 
    android:accessibilityFlags="flagDefault" 
    android:settingsActivity="foo.bar.TestBackActivity" 
    android:canRetrieveWindowContent="true" 
    . . . 
/> 

あなたはhttp://developer.android.com/reference/android/R.styleable.html#AccessibilityService

で使用できるタグの詳細があります3210
+1

あなたは本当に多くのupvotesを値する。 http://developer.android.com/guide/topics/ui/accessibility/services.htmlでドキュメントが間違っているためです。 – gaurav414u

+1

@alanv「サービスが有効になると、システムはそれを自動的に開始し、アクセシビリティAPIにバインドします。」私は質問があり、私のアクセシビリティサービスはかつて仕事を可能にしました。ビットがクラッシュした場合、それはトゥー設定で有効になりますが、実行サービスにはなりません。クラッシュ後にシステムがサービスを再起動しないのに、まだ有効になっているのはなぜですか? – Hoper

+2

@ v1sc3rr4kシステムにリンクされたサービス(アクセシビリティサービスなど)がクラッシュすると、権限がリセットされるか、OSが再起動されるまで、システムによって再起動されません。権限を取り消してもう一度有効にすると、サービスが再び開始されます。それが役に立てば幸い。 – abhinav

関連する問題