MSe*_*iz5 6 notifications android logcat accessibilityservice
我正在玩辅助功能服务。我知道如何从通知中读取数据,也知道如何将输入的文本打印到 logcat 中。
问题 当我收到朋友发来的 WhatsApp 消息时,我会通过通知打开该消息。(见下图)之后我可以在聊天中输入任何文本,但在 logcat 中我没有得到输出。当我正常打开 whatsapp 应用程序时,我在聊天中输入的所有内容都可以在 logcat 中看到。
当我通过通知打开消息时,为什么没有记录数据?
服务
public class MyAccessibilityService2 extends AccessibilityService {
protected void onServiceConnected() {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED | AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED | AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
info.notificationTimeout = 100;
setServiceInfo(info);
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
Log.d("Notification","Recieved event");
Parcelable data = event.getParcelableData();
if (data instanceof Notification) {
Log.d("Notification","Recieved notification");
Notification notification = (Notification) data;
Log.d("Notification","ticker: " + notification.tickerText);
Log.d("Notification","icon: " + notification.icon);
Log.d("Notification", "notification: "+ event.getText());
Log.d("Notification", "text: "+ notification.extras.getCharSequence(Notification.EXTRA_TEXT).toString());
}
}else if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
Log.d("TEST", "HELLO");
}else if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) {
Log.d("Text: ", "-> "+event.getText().toString());
}
}
@Override
public void onInterrupt() {
// TODO Auto-generated method stub
}
}
Run Code Online (Sandbox Code Playgroud)
显现
<service
android:name=".MyAccessibilityService2"
android:enabled="true"
android:exported="true"
android:accessibilityFeedbackType="feedbackGeneric"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
正常打开应用时的输出
2020-07-17 14:24:59.782 9589-9589/com.android.rechner D/Text:: -> [T]
2020-07-17 14:25:00.046 9589-9589/com.android.rechner D/Text:: -> [Te]
2020-07-17 14:25:00.295 9589-9589/com.android.rechner D/Text:: -> [Tes]
2020-07-17 14:25:00.443 9589-9589/com.android.rechner D/Text:: -> [Test]
2020-07-17 14:25:00.958 9589-9589/com.android.rechner D/Text:: -> [Testm]
2020-07-17 14:25:01.155 9589-9589/com.android.rechner D/Text:: -> [Testme]
2020-07-17 14:25:01.381 9589-9589/com.android.rechner D/Text:: -> [Testmes]
2020-07-17 14:25:01.525 9589-9589/com.android.rechner D/Text:: -> [Testmess]
2020-07-17 14:25:01.740 9589-9589/com.android.rechner D/Text:: -> [Testmessa]
2020-07-17 14:25:01.858 9589-9589/com.android.rechner D/Text:: -> [Testmessag]
2020-07-17 14:25:01.959 9589-9589/com.android.rechner D/Text:: -> [Testmessage]
Run Code Online (Sandbox Code Playgroud)
通过通知打开应用程序时的输出
logcat 中没有输出:-(
收到通知的输出
2020-07-17 14:27:36.272 9589-9589/com.android.rechner D/Notification: Recieved event
2020-07-17 14:27:36.273 9589-9589/com.android.rechner D/Notification: Recieved notification
2020-07-17 14:27:36.273 9589-9589/com.android.rechner D/Notification: ticker: Nachricht von Mami
2020-07-17 14:27:36.273 9589-9589/com.android.rechner D/Notification: icon: 2131231578
2020-07-17 14:27:36.273 9589-9589/com.android.rechner D/Notification: notification: [Nachricht von Patrick]
2020-07-17 14:27:36.276 9589-9589/com.android.rechner D/Notification: text: Test
Run Code Online (Sandbox Code Playgroud)
小智 1
我尝试了你的代码,它对我来说工作得很好,我在你的代码中看到的唯一问题是我无法在你的 Android 清单中看到service_config你的设置。AccessibilityService它应该看起来像这样:
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/service_config" />
Run Code Online (Sandbox Code Playgroud)
你的 service_config 应该是这样的:
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:packageNames="com.example.android.apis"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"/>
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请参阅此页面。
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |