detect com.android.launcher3 as launcher (previously only com.android.systemui),

also detect launcher from root.getPackageName(), see #19
support for Samsung Browser
This commit is contained in:
Philipp Crocoll
2017-10-04 22:44:17 +02:00
parent 2da577bc94
commit 15065fb5a0
3 changed files with 32 additions and 9 deletions

View File

@@ -58,18 +58,18 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />

View File

@@ -69,12 +69,19 @@ public class AutoFillService extends AccessibilityService {
}
}
boolean isLauncherPackage(CharSequence packageName)
{
return "com.android.systemui".equals(packageName)
|| "com.android.launcher3".equals(packageName);
}
@TargetApi(21)
class SystemUiCondition implements NodeCondition
{
@Override
public boolean check(AccessibilityNodeInfo n) {
return (n.getViewIdResourceName() != null) && (n.getViewIdResourceName().startsWith("com.android.systemui"));
return (n.getViewIdResourceName() != null) && (
(n.getViewIdResourceName().startsWith("com.android.systemui")) || (n.getViewIdResourceName().startsWith("com.android.launcher3")));
}
}
@@ -127,14 +134,14 @@ public class AutoFillService extends AccessibilityService {
{
CharSequence packageName = event.getPackageName();
android.util.Log.d(_logTag, "event: " + event.getEventType() + ", package = " + packageName);
if ( "com.android.systemui".equals(event.getPackageName()) )
if ( isLauncherPackage(event.getPackageName()) )
{
android.util.Log.d(_logTag, "return.");
return; //avoid that the notification is cancelled when pulling down notif drawer
}
else
{
android.util.Log.d(_logTag, "no com.android.systemui");
android.util.Log.d(_logTag, "event package is no launcher");
}
if ((packageName != null)
@@ -145,6 +152,17 @@ public class AutoFillService extends AccessibilityService {
}
AccessibilityNodeInfo root = getRootInActiveWindow();
if ( isLauncherPackage(root.getPackageName()) )
{
android.util.Log.d(_logTag, "return, root is from launcher.");
return; //avoid that the notification is cancelled when pulling down notif drawer
}
else
{
android.util.Log.d(_logTag, "root package is no launcher");
}
int eventWindowId = event.getWindowId();
if ((ExistsNodeOrChildren(root, new WindowIdCondition(eventWindowId)) && !ExistsNodeOrChildren(root, new SystemUiCondition())))
{
@@ -158,6 +176,11 @@ public class AutoFillService extends AccessibilityService {
url = urlFromAddressFields(urlFields, url);
}
else if (packageName == "com.sec.android.app.sbrowser")
{
List<AccessibilityNodeInfo> urlFields = root.findAccessibilityNodeInfosByViewId("com.sec.android.app.sbrowser:id/location_bar_edit_text");
url = urlFromAddressFields(urlFields, url);
}
else if ("com.android.browser".equals(root.getPackageName()))
{
List<AccessibilityNodeInfo> urlFields = root.findAccessibilityNodeInfosByViewId("com.android.browser:id/url");