Этого можно достичь с помощью функции специальных возможностей Android (как это делает приложение Universal copy).
Что вам нужно сделать, это реализовать класс AccessabilityService , который может получить доступ ко всем пользовательским интерфейсам экрана через прослушиватель.
Для того, чтобы что вам нужно объявить его в манифесте:
<service android:name=".MyAccessibilityService">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" />
файл @ XML/accessibilityservice где можно настроить службу, как в какой пакет слушать или какого рода события, которые вы хотите получить:
<accessibility-service
android:accessibilityEventTypes="typeViewClicked|typeViewFocused"
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) {
Log.v(TAG, String.format(
"onAccessibilityEvent: type = [ %s ], class = [ %s ], package = [ %s ], time = [ %s ], text = [ %s ]",
getEventType(event), event.getClassName(), event.getPackageName(),
event.getEventTime(), getEventText(event)));
}
В этом методе вы должны найти в пользовательском интерфейсе желаемый текст/TextView/EditText и извлечь из него текст, который вы хотите.
ПРИМЕЧАНИЕ: этот способ требовал разрешения на доступность, которое может предоставить только пользователь, и его невозможно выполнить во время выполнения.
Вы можете прочитать в документации Android о how to implement an AccessabilityService
те тексты в вашем приложении? –
@phuc_tran похоже, что он хочет поцарапать текст из любого приложения для Android. – aga
Нет, текст не будет из моего приложения, я хочу получить любой текст, отображаемый любым приложением на мобильном экране. – ZeekHuge