这个项目从开始,到现在慢慢熟悉花了我三天的时间。终于有点成果了,给大家展示一哈
1.配置文件
<?xml version="1.0" encoding="UTF-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault"
android:canRequestTouchExplorationMode="true"
android:canRetrieveWindowContent="true"
android:description="@string/accessibility_service_description"
android:notificationTimeout="100" />
<!-- android:packageNames="com.example.android.apis" -->
在这里搞死我了,针对单独安装的不能添加android:packageNames="
com.example.android.apis" 我估计是这个导致的,我把这个删除了,果然 好了
注册文件
<service
android:name="com.z.autoinstallationappaccessibilityservices.AutoInstallationAppAccessibilityservices"
android:label="@string/accessibility_server_name"
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/accessibility_service_config" /> <!-- 注意此处 -->
</service>
千篇一律。。。
核心代码
private void processinstallApplication(AccessibilityEvent event) {
if (event.getSource() != null) {
checkTitle(event.getSource(), "BuildingAccessibilityServices");
if (event.getPackageName().equals("com.android.packageinstaller")) {
List<AccessibilityNodeInfo> unintall_nodes = event.getSource().findAccessibilityNodeInfosByText("安装");
if (unintall_nodes != null && !unintall_nodes.isEmpty()) {
AccessibilityNodeInfo node;
for (int i = 0; i < unintall_nodes.size(); i++) {
node = unintall_nodes.get(i);
if (node.getClassName().equals("android.widget.Button") && node.isEnabled()) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
List<AccessibilityNodeInfo> next_nodes = event.getSource().findAccessibilityNodeInfosByText("下一步");
if (next_nodes != null && !next_nodes.isEmpty()) {
AccessibilityNodeInfo node;
for (int i = 0; i < next_nodes.size(); i++) {
node = next_nodes.get(i);
if (node.getClassName().equals("android.widget.Button") && node.isEnabled()) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
List<AccessibilityNodeInfo> ok_nodes = event.getSource().findAccessibilityNodeInfosByText("打开");
if (ok_nodes != null && !ok_nodes.isEmpty()) {
AccessibilityNodeInfo node;
for (int i = 0; i < ok_nodes.size(); i++) {
node = ok_nodes.get(i);
if (node.getClassName().equals("android.widget.Button") && node.isEnabled()) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
<span style="white-space:pre"> </span>//取消删除安装包
<span style="white-space:pre"> </span>List<AccessibilityNodeInfo> cancel_nodes = event.getSource().findAccessibilityNodeInfosByText("取消");
<span style="white-space:pre"> </span>if (cancel_nodes != null && !cancel_nodes.isEmpty()) {
<span style="white-space:pre"> </span>AccessibilityNodeInfo node;
<span style="white-space:pre"> </span>for (int i = 0; i < cancel_nodes.size(); i++) {
<span style="white-space:pre"> </span>node = cancel_nodes.get(i);
<span style="white-space:pre"> </span>if (node.getClassName().equals("android.widget.Button") && node.isEnabled()) {
<span style="white-space:pre"> </span>node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
}
}
}
我是我在网上看的第一种方法,如果下面的方法试验成功我会在我的博客体现。。。