これは一種のハックで、ユーザー補助サービスを使用して電話を受けることができます。アクセシビリティ サービスを有効にするには、[設定] - [アクセシビリティ] - [サービス] でサービスを有効にする必要があります。
まず、typeWindowContentChanged を accessibilityEventTypes に追加します。
<accessibility-service
android:accessibilityEventTypes="typeViewClicked|typeViewFocused|typeViewScrolled|typeWindowContentChanged|typeWindowStateChanged"
android:packageNames="com.example.android.myFirstApp, com.example.android.mySecondApp"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:settingsActivity="com.example.android.apis.accessibility.TestBackActivity"
android:canRetrieveWindowContent="true"
/>
そして、イベントや「表示されるテキスト」や「内容説明」で何かをする。
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// Do something with Click or Focused event
final int eventType = event.getEventType();
String eventText = null;
switch(eventType) {
case AccessibilityEvent.TYPE_VIEW_CLICKED:
eventText = "Focused: ";
break;
case AccessibilityEvent.TYPE_VIEW_FOCUSED:
eventText = "Focused: ";
break;
}
eventText = eventText + event.getContentDescription();
// Traverse all items in screen.
// Do something with text.
AccessibilityNodeInfo info = getRootInActiveWindow();
int index;
int count = info.getChildCount();
AccessibilityNodeInfo child;
for (index = 0; index < count; index++) {
child = info.getChild(index);
if (child.getText() != null)
Log.d(TAG, "text: " + child.getText().toString() + " " + child.getContentDescription());
// perform Click
//if (child.isClickable());
//child.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
はい、これが問題を解決するための適切な方法ではないことは承知しています。これは一種のハックです。