- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序使用无障碍服务来收听通知。它可以正常工作,直到用户重新启动。如果您重新启动,则必须从辅助功能服务菜单中禁用/重新启用该服务。
为什么 App 重启后收不到事件?
@Override
protected void onServiceConnected() {
pMan = new PreferencesManager(this);
bulbManager = new BulbManager(((Context) this), pMan.getBridge());
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.notificationTimeout = 100;
info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK;
setServiceInfo(info);
Log.d("OMG, STARTED FINALLY!", "RIGHT NOW!");
}
和 xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeNotificationStateChanged"
android:packageNames="com.t3hh4xx0r.huenotifier"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="100"
android:accessibilityFlags="flagDefault"
android:settingsActivity="com.t3hh4xx0r.huenotifier.activities.LoadingSplashActivity"
android:canRetrieveWindowContent="false"
android:description="@string/app_name" />
和 list
<service
android:name="com.t3hh4xx0r.huenotifier.MyAccessibilityService"
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/service_info" />
</service>
最佳答案
我遇到了同样的问题。经过大量尝试后,我发现旧版本的 android(例如 Jellybean)会出现此问题。当设备关闭时,服务将被解除绑定(bind)。但它不会重新绑定(bind) on_Boot_Completed
。由于这个问题没有出现在较新版本的 android 上,我认为它是一个 android 错误。因为重新激活服务的唯一方法是关闭并重新启动服务,所以我使用 sharedPreference
来跟踪我的服务状态。当 onUnbind
onRebind
或 onServiceConnected
被调用时,我用我为它关联的值更新我的 sharedPreference
。现在,在使用服务之前,我会检查服务是否调用了 onRebind
或 onServiceConnected
,如果没有,我会告诉用户重新启动服务或开始使用我的服务。
如果你很困惑,那么你可以在你的无障碍服务中包含下面的代码。
public static String AccessibilityPreference="AccessibilityPreference";
public static String isServiceBinded="isServiceBinded";
@Override
public void onServiceConnected() {
Log.e(TAG, "ACC::onServiceConnected:************************* ");
SharedPreferences p=getSharedPreferences(AccessibilityPreference,Context.MODE_PRIVATE);
SharedPreferences.Editor e=p.edit();
e.putBoolean(isServiceBinded,true);
e.commit();
}
@Override
public boolean onUnbind(Intent intent) {
Log.e("onUnbind","onUnbind Called***************************************************");
SharedPreferences p=getSharedPreferences(AccessibilityPreference,Context.MODE_PRIVATE);
SharedPreferences.Editor e=p.edit();
e.putBoolean(isServiceBinded,false);
e.commit();
return super.onUnbind(intent);
}
@Override
public void onRebind(Intent intent) {
Log.e("onRebind","onRebind Called***************************************************");
SharedPreferences p=getSharedPreferences(AccessibilityPreference,Context.MODE_PRIVATE);
SharedPreferences.Editor e=p.edit();
e.putBoolean(isServiceBinded,true);
e.commit();
super.onRebind(intent);
}
public static boolean isServiceBinded(SharedPreferences preferences){
return preferences.getBoolean(isServiceBinded,true);
}
然后在开始使用服务之前检查服务是否有效,如下所示,
if(AccessibilityWorkService.isServiceBinded(getSharedPreferences(AccessibilityWorkService.AccessibilityPreference, Context.MODE_PRIVATE))){
//start working
}else {
//tell user to restart service
}
关于java - AccessibilityService 在重启时停止接收事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513327/
我在应用程序中使用辅助功能服务向用户读出自定义文本。这是我的服务类别: class GlobalAccessibilityService: AccessibilityService() { o
背景 SAW(系统警报窗口)权限可用于在其他应用程序之上绘制内容。 很久以前有人告诉我,无障碍服务也可以做到这一点,但我从未找到任何教程、示例、文档甚至是应用程序……直到最近: https://pla
在我的 MainActivity 中,我使用 AccessibilityService 在另一个应用程序上执行单击事件,当我打开该应用程序并将其显示在屏幕上时,它会起作用。但是我想在不打开应用程序的情
我正在尝试让 AccessibilityService 收到有关剪贴板复制事件的通知。 到目前为止,我已经尝试解决问题,因此在弹出窗口中单击“复制”按钮后会通知服务,但在这种情况下不会引发任何事件,我
我有一个应用程序使用无障碍服务来收听通知。它可以正常工作,直到用户重新启动。如果您重新启动,则必须从辅助功能服务菜单中禁用/重新启用该服务。 为什么 App 重启后收不到事件? @Override p
一旦用户连接了辅助功能服务,它是否会在启动/重启时自动重新启动?这似乎是我正在修改的应用程序的情况。在官方文档中找不到任何信息后,我想确定一下。 最佳答案 这是预期的行为。如果用户依靠辅助技术来使用他
我在一个类似于 Team View QuickSupport 的项目中工作我想知道是否AccessibilityService允许在可以提取保护设备密码的远程屏幕上执行滑动吗? 我来尝试以下代码,但没
背景 我有一个应用程序有一个 AccessibilityService . Android 似乎保持 AccessibilityService它一直在运行,但我只需要运行我的有时。 (具体来说,如果用
我编写了一个需要使用 AccessibilityService 的 Android 应用程序。 .我知道如何检查手机上的辅助功能是否已启用或禁用,但我无法确定我的应用是否已在辅助功能菜单中特别启用。
Path clickPath = new Path(); clickPath.moveTo(x, y); GestureDescription.StrokeDescription clickStrok
在 doc's它说这是关于 UiAutomation Class for interacting with the device's UI by simulation user actionsand
我的程序目的:触发服务中的 BACK 按钮 我尝试了很多方法,没有人可以达到这个目的,最后我发现了AccessibilityService,它可能是实现这个功能的最可能的方法。 我创建了这个 Acce
我想使用辅助功能服务在屏幕上执行滑动操作。我尝试过这个,但这只执行一次触摸。我知道这是可能的,因为当在设备上启用我的服务时,它说该服务可以执行滑动、触摸、捏合等操作。 Point position=n
关于 fingerprint accessibility service 的 Android Api 指南,写下下面这句话: Declare the USE_FINGERPRINT permissio
我正在尝试使用 AccessibilityService 在屏幕上模拟点击和操纵杆移动。 此外,我还从游戏 handle Controller 设备获取输入。做水龙头就可以了。我的问题是模拟屏幕上的操
permission prompt image 我正在尝试使用应用程序的辅助功能服务来单击“设置中允许”。我查看了 AccessibilityNode,但在 TextView 中没有看到任何可交互的内
以前,FingerprintManager 可用于处理指纹身份验证,并且不依赖于 Activity 来通过系统对话框。它可以像任何传感器管理器一样在任何地方使用。 现在,谷歌已经在https://de
我在 Android 7 上使用 AccessibilityService。可以通过调用 getEventTime() 获取每个 AccessibilityEvent 的时间戳。根据文档,此方法“获取
我正在尝试从另一个以这种方式扩展 Service 的类中调用一个扩展 AccessibilityService 的类中的方法: MyAccessibility access = new MyAcces
我正在使用 AccessibilityService OnKeyEvent 来捕获 Headsethook。这样一来,即使我的应用程序未处于焦点状态,我也可以在按下键和按下键时触发事件。 但是,一旦屏
我是一名优秀的程序员,十分优秀!