标签: accessibilityservice

每次调试运行时都禁用辅助功能服务

每次启动新的调试实例时,我的辅助功能服务都会重置为禁用状态.

是否有任何方法可以在连续的调试运行中保持启用(因为每次启用调试服务都很长很无聊)?

我在真实设备和模拟器上有相同的行为.
服务中没有异常,我在事件处理程序中尝试了没有代码的事件.

我的日志中有可疑的行:

10:47:32.801 31669-31669/? E/AffinityControl: AffinityControl: registerfunction enter
10:47:32.821 3650-3690/? I/ActivityManager: Force stopping com.test.testaccessibilityservice appid=10241 user=0: from pid 31669
10:47:32.821 3650-3690/? I/ActivityManager: Killing 31271:com.test.testaccessibilityservice/u0a241 (adj 1): stop com.test.testaccessibilityservice cause from pid     
10:47:32.821 3650-3690/? W/ActivityManager: Scheduling restart of crashed service com.test.testaccessibilityservice/.MyAccessibilityService in 1000ms
10:47:32.821 3650-3690/? I/ActivityManager:   Force stopping service ServiceRecord{3f5e1fc4 u0 com.test.testaccessibilityservice/.MyAccessibilityService}
Run Code Online (Sandbox Code Playgroud)

因此服务被强制停止并且从未重新启动.

笔记:

  • 如果我重新启动手机,则启动该服务.
  • 我对ApiDemos示例和ClockBackService(QueryBackService)也有相同的行为:

    18:07:15.871 3523-4251/? I/ActivityManager: Force stopping com.example.android.apis appid=10242 user=0: from pid 19382
    18:07:15.871 3523-4251/? I/ActivityManager: Killing 16542:com.example.android.apis/u0a242 (adj 1): stop com.example.android.apis …
    Run Code Online (Sandbox Code Playgroud)

debugging android accessibilityservice

52
推荐指数
1
解决办法
2317
查看次数

如何使用 AccessibilityService 在 Android 上执行拖动(基于 X、Y 鼠标坐标)?

我想知道如何基于 X、Y 鼠标坐标在 android 上执行拖动?考虑两个简单的例子,Team Viewer/QuickSupport分别在远程智能手机和Windows Paint的Pen上绘制“密码模式”。

在此处输入图片说明

在此处输入图片说明

我所能做的就是模拟触摸(使用dispatchGesture()AccessibilityNodeInfo.ACTION_CLICK)。

我找到了这些相关链接,但不知道它们是否有用:

下面是我的工作代码,用于将鼠标坐标(在PictureBox控制范围内)发送到远程电话并模拟触摸。

Windows 窗体应用程序:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    foreach (ListViewItem item in lvConnections.SelectedItems)
    {
        // Remote screen resolution
        string[] tokens = item.SubItems[5].Text.Split('x'); // Ex: 1080x1920

        int xClick = (e.X * int.Parse(tokens[0].ToString())) / (pictureBox1.Size.Width);
        int yClick = (e.Y * int.Parse(tokens[1].ToString())) / (pictureBox1.Size.Height);

        Client client = (Client)item.Tag;

        if (e.Button == MouseButtons.Left)
            client.sock.Send(Encoding.UTF8.GetBytes("TOUCH" + xClick + "<|>" + …
Run Code Online (Sandbox Code Playgroud)

c# java android mouse-coordinates accessibilityservice

42
推荐指数
1
解决办法
2648
查看次数

检测我的辅助功能服务是否已启用

我想知道如何检测我自己的服务是否已启用.所以我可以检查我的服务是否未启用,然后告诉用户启用它.

service android accessibility accessibilityservice

23
推荐指数
2
解决办法
1万
查看次数

如何阅读窗口内容(使用accessibilityService)并使用绘制来激活UI而不是Android中的其他应用程序权限?

我关于同一主题的最后一个问题不够明确,并被社区搁置,后来被自动删​​除.所以,我正在以详细的方式解释该问题,以便社区能够以更好的方式理解和帮助.

我想要类似于Voodoo AppMySmartPrice优惠的功能.

现在他们做了什么

第1步:当我们第一次打开Voodoo应用程序时,他们会显示一个小教程.在教程结束时,有一个"立即激活"按钮,按下后,将我们带到辅助功能设置屏幕.

第2步:在辅助功能屏幕中,它进一步指导如何查找和无法使用Voodoo服务.

第3步:当我们启用它时,它还要求授予"观察您的操作"和"检索窗口内容"权限.

第4步:完成授予可访问性屏幕权限,移动到某个购物应用程序或通过浏览器访问购物网站并到达产品页面后,将自动弹出voodoo浮动按钮.

第5步:点击它后,它会显示其他应用或网站上可用的相同/相关/类似产品的价格,以便用户可以检查最佳可用交易.

参考Voodoo的屏幕截图

巫毒屏幕1

辅助功能屏幕

辅助功能屏幕2

权限授予屏幕

巫毒屏幕2

产品页面上的巫毒浮动按钮

Voodoo结果借助于绘制其他应用程序

现在我想知道形式社区:

  1. 如何在"辅助功能"屏幕和产品详细信息页面上显示我的帮助UI.
  2. 如何检测产品页面何时出现在屏幕上并唤起我的浮动按钮.
  3. 如何获取屏幕上显示的产品名称.
  4. 如何仅为某些应用限制此屏幕阅读功能?(因为我不想在某些版权问题上结束)
  5. 有没有可以帮助我的教程?虽然我已经尝试过谷歌的任何直接教程,但没有取得任何成功.

现在为什么我需要这些信息:

我正计划为学生提供一个应用程序,如果它可以在我的服务器上或在一些可用的网站上,它们将帮助他们免费获得所需(或类似)书籍(电子书).我想仅限于某些应用程序的功能,因为某些书籍的版权问题.

现在我从我的研究中了解到这个主题(但我不确定我是否在正确的轨道上)

java android accessibility accessibilityservice android-accessibility

22
推荐指数
1
解决办法
1万
查看次数

如何使用辅助功能服务"为用户采取行动"?

背景

遥想几年前,我问的TeamViewer如何允许用户控制设备,而无需与设备正常交互.我被告知这是一个特殊的"后门",制造商专门为这个应用程序提供,并且只能使用root权限用于其他应用程序.

看到像"飞行模式快捷方式"这样的应用程序允许切换飞行模式,通过自动导航到其屏幕并切换开关,它让我意识到这种情况已经改变.

问题

文档中说:

从Android 4.0(API级别14)开始,辅助功能服务可以代表用户执行操作,包括更改输入焦点和选择(激活)用户界面元素.在Android 4.1(API级别16)中,操作范围已扩展为包括滚动列表和与文本字段交互.辅助功能服务还可以执行全局操作,例如导航到主屏幕,按"返回"按钮,打开通知屏幕和最近的应用程序列表.Android 4.1还包括一种新型焦点Accessibilty Focus,它使所有可见元素都可由辅助功能服务选择.

这些新功能使辅助功能服务的开发人员可以创建替代导航模式,如手势导航,并为残障用户提供对其Android设备的更好控制.

但是没有关于如何使用它的更多信息.只有我发现的样本位于底部,但这些样本非常陈旧,是apiDemos包的一部分.

这个问题

如何创建可以查询,聚焦,单击,输入文本以及执行其他UI相关操作的服务?

android accessibilityservice

12
推荐指数
1
解决办法
4172
查看次数

AccessibilityService已启动,但未在JellyBean上接收AccessibilityEvents

我有一个AccessibilityService,它将读出任何传入的通知.它在ICS及以下版本中运行良好,但已停止使用JB.

以下是清单和代码:

<service
        android:name=".Services.InstantMessengerJb"
        android:enabled="@bool/is_post_jb"
        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
        tools:ignore="ExportedService" >
        <meta-data
            android:name="android.accessibilityservice"
            android:resource="@xml/accessibility_service_config" />

        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService" />
        </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    SettingsClass.logMe(tag, "New event!");
    new AccessibilityProcessing(this, event);
}

@Override
protected void onServiceConnected() {
    if (isInit) {
        return;
    }
    SettingsClass.logMe(tag, "We are connected!");
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
    setServiceInfo(info);
    isInit = true;
}
Run Code Online (Sandbox Code Playgroud)

如前所述,它确实适用于所有preJB设备,如魅力,但在JB上服务启动(我得到"我们已连接"),但没有一个事件被触发.

代码有什么问题吗?

android accessibilityservice android-4.2-jelly-bean

11
推荐指数
1
解决办法
9236
查看次数

如何在Android中使用Accessibility收听点击并获取视图?

我想在我的Android应用程序中实现一个辅助功能服务,它可以执行以下操作:

=>获取任何应用的屏幕点击/点击.

=>获取点击/点击的视图.

最初我认为由于安全原因这样做是不可能的,但在做一些研究时我遇到了一个应用程序(本机剪贴板),它可以执行以下操作:

=> EditText从任何应用程序检测s 上的点击

=>为那些EditTexts 添加值(字符串).

我还看到了谷歌的对讲,无论你点什么,它都会说话.要说它,它需要跨应用程序访问视图(获取文本).

这些应用程序显然使用"辅助功能服务"来实现,但我想知道如何实现它?

我主要为我需要实现的东西找到教程或内容,但我正在努力寻找一些实现我的应用程序的辅助功能服务.我确实访问了Android官方文档,这对于像我这样的新手来说太技术了.(我最初更喜欢向Youtube,SO和教程网站学习).如果你能指出我介绍其他一些涵盖这些内容的教程,那也很棒.

android accessibility accessibility-api accessibilityservice android-accessibility

11
推荐指数
1
解决办法
1737
查看次数

Android:是否有可能获得其他应用通知信息?

我对Android中的辅助功能服务有疑问.
我可以在状态栏中捕获通知并从通知中获取信息吗?

我的目的是捕获Viber,Skype等应用程序的通知.

那可能吗?

android android-notifications accessibilityservice

10
推荐指数
2
解决办法
9236
查看次数

Android 13 - 为不是从 Google Play 安装的 APK 启用辅助功能服务

Android 13 的 Beta 版本上,用户无法从“设置”应用启用辅助功能。当用户尝试执行此操作时,会出现错误:

受限设置
为了您的安全,此设置目前不可用。

如何在 Android 13 上启用辅助功能?

android accessibilityservice android-13

10
推荐指数
1
解决办法
6万
查看次数

应用程序更新后未绑定辅助功能服务

我有一个完美运行的应用程序与可访问性服务.到目前为止,它一直在按预期工作.当我尝试构建新的更新版本时,问题出现了.与可访问性服务相关的代码中没有任何更改.但该服务不再绑定到更新的应用程序.日志中没有错误或警告.这是manifest.xml的一部分:

...
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />

<application
    android:name=".AppState"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:allowBackup="true">

    // ... several activities, services and bootup receiver goes here...

    <service android:name=".ForegroundMonitor"
      android:label="@string/foreground_monitor_label"
      android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
      <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
      </intent-filter>
      <meta-data android:name="android.accessibilityservice" android:resource="@xml/serviceconfig" />
    </service>
</application>
Run Code Online (Sandbox Code Playgroud)

这是serviceconfig.xml:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
   android:accessibilityEventTypes="typeViewClicked|typeViewFocused|typeWindowStateChanged"
     android:accessibilityFeedbackType="feedbackGeneric"
     android:notificationTimeout="1000"
     android:canRetrieveWindowContent="false"
     android:description="@string/foreground_monitor_about"
/>
Run Code Online (Sandbox Code Playgroud)

可访问性服务是根据系统注册的,可以启动或停止,如果我在应用程序中更改它们并重新安装应用程序,服务设置会更改.

但该服务不再绑定到我的应用程序了.该onServiceConnected方法ForegroundMonitor不叫.

我在SO上发现了一些类似的问题:

我已经尝试了唯一的建议解决方案,但它在我的情况下不起作用.

根据我的测试,问题只出现在Android 5.0.1上.在Android 2.3.3上,该应用程序正常运行,服务绑定成功.

有人可以共享这个问题的解决方案,这可能是一个Android错误吗?

UPDATE

我刚刚找到了一个解决方法:重命名扩展的类AccessibilityService(在我的情况下为ForegroundMonitor)就足够了,例如通过添加版本控制后缀.此方法的缺点是用户必须重新启用系统中的新辅助功能服务,因为它被视为另一个.理想情况下,如果服务一旦启用,应用程序的更新不应要求此项.

所以我仍然对解决方案感兴趣 - 更方便的解决方案.

提前致谢.

android accessibilityservice android-5.0-lollipop

9
推荐指数
0
解决办法
1506
查看次数