2017-04-03 4 views
0

これは私のコードです。私のカスタムAccessibilityServiceでは、すべてTextViewの方法でonAccessibilityEventを取得してから、テキストをマークしたいと思います。私はAccessibilityEvent.getSource()を使用してTextViewを取得します.TextViewのテキストを変更するために何かしますか?

public void onAccessibilityEvent(AccessibilityEvent event) { 

    AccessibilityNodeInfo source = event.getSource(); 
     if (source == null) { 
      return; 
     } 

    for (int i = 0; i < source.getChildCount(); i++) { 
     AccessibilityNodeInfo node = source.getChild(i); 
     if (TEXTVIEW.equals(node.getClassName())) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
      Bundle arguments = new Bundle(); 
        arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, 
          node.getText().toString()+1);//just want to mark 
        node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments); 
       } 

      } 
     } 

    } 
+0

私の行うことは効果がありません – jeepc

+0

達成したいことは何ですか?より明確にしてください!発表を変更したい場合は、正確なテキストのアクセシビリティアナウンスを表示に設定してください – Mundroid

+0

私は他のアプリのTextViewを変更したいと思いますか? – jeepc

答えて

0

このコードはうまく機能します。

「アンドロイド」というテキストを編集可能なテキストコンテナに配置してください。 AH、今、TextViewのテキストを変更したい場合、これは試してやるのは違法です。 TextViewのテキストは読み取り専用のプロパティです。編集することはできません。アクセス可能ノード情報は、レンダリングされたビューのアクセシビリティサービス表現である。 TextViewのテキストを変更するようアプリケーションに依頼することはできません。これには、セキュリティに大きな影響があります。パスワードフィールドがユーザー名フィールドで、その逆の場合は誰にでも伝えるサービスがありますか?それは便利ではないですか?基本的には、編集可能なビューのテキストのみを編集することができます。

言われていることは、あなたがフィードバックを提供するときに、テキストがあなたがそれを伝えたいものであることをユーザーに伝えることができます。そうではなく、階層内のすべてのビューに対して「子猫」と言われるアクセシビリティサービスを使用します...しかし、あなたのユースケース/達成したいことははっきりしていません。 「これは私が達成したいことです...」の代わりに「これは私が試したものです、なぜそれは機能しないのですか?」と尋ねる別の質問をします。私は喜んでお手伝いします。