Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getPackageName()返回null_Java_Android_Accessibilityservice - Fatal编程技术网

Java getPackageName()返回null

Java getPackageName()返回null,java,android,accessibilityservice,Java,Android,Accessibilityservice,我正在注册AccessibilityService以侦听应用程序更改。它适用于我测试过的所有手机,但在Android 5.0的Galaxy A3上失败,因为AccessibilityEvent.getPackageName()返回null。应该设置packageName,因为它是一个常规应用程序,从GooglePlay下载,并与用户交互 有人知道这是为什么以及如何修复吗 下面是我代码的相关部分 <service android:name=".presentation.view.se

我正在注册AccessibilityService以侦听应用程序更改。它适用于我测试过的所有手机,但在Android 5.0的Galaxy A3上失败,因为AccessibilityEvent.getPackageName()返回null。应该设置packageName,因为它是一个常规应用程序,从GooglePlay下载,并与用户交互

有人知道这是为什么以及如何修复吗

下面是我代码的相关部分

<service
    android:name=".presentation.view.services.LockService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/accessibility_service_config"/>

    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService"/>
    </intent-filter>
 </service>

由于文档没有具体解释这一点,我将尝试提供一些我在使用
AccessibilityService
之后想到的东西。我写这篇文章是为了以防万一,因为
event.getPackageName()
总是返回
null
,但不要认为我的话是理所当然的

从易访问性服务的文档中,我看到您可以设置属性
android:packageNames=“@strings/blah_-blah”
,其中
blah_-blah
是我们的服务将观察到的以逗号分隔的包名列表

在指定此属性的情况下,我们将只收到那些特定包的通知,
event.getPackageName()
将返回正确的包名

如果我们不设置此属性,或者专门将其设置为
null
,我们将收到发生的所有事件的通知,但我们将无法识别“生成”可访问性事件的特定包

由于可以动态设置此
AccessibilityServiceInfo
属性,因此理论上,您可以获取当前安装的软件包列表,并将其设置为服务将监视的
packageNames

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    AccessibilityServiceInfo info = getServiceInfo();
    // your other assignments
    info.packageNames = new String[]{...};
    setServiceInfo(info);
}
@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    AccessibilityServiceInfo info = getServiceInfo();
    // your other assignments
    info.packageNames = new String[]{...};
    setServiceInfo(info);
}