自动打开国航APP并签到

分析需求

1、需求

  • 国航APP签到可以送里程,写一个Demo自动打开国航,并且跳转签到页面,自动签到

2、 主要步骤

  • 启动国航APP
  • 自动点击:(1)点击底部button跳转到签到页面;(2)点击“签到”
  • 开机启动Demo

启动国航APP

1、首先需要知道APP的包名:

在手机打开国航APP,然后通过adb命令dump当前Activity:

adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' --color=always

结果如下:

mCurrentFocus=Window{473be9d u0 com.rytong.airchina/com.neu.airchina.HomeActivity}
mFocusedApp=AppWindowToken{bd1eb7 token=Token{685c1b6 ActivityRecord{8952551 u0 com.rytong.airchina/com.neu.airchina.HomeActivity t579}}}

Activity名称前面即为包名:com.rytong.airchina

2、调用Context.getPackageManager.getLaunchIntentForPackage(APP_PACKAGE_NAME),启动APP

public static void launchApp(Context context) {
    if (isAppInstalled(context, APP_PACKAGE_NAME)) {
        context.startActivity(context.getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME));
    } else {
        Toast.makeText(context, "The App is not installed", Toast.LENGTH_SHORT);
    }
}

自动点击

实际上是实现Android的模拟点击:可以采用AccessibilityService

具体参考 minggo620 自动点击[模拟点击、辅助服务、反射遍历破解]

主要原理有两点:

1、通过resource-id获取对应的View

nodeInfo.findAccessibilityNodeInfosByViewId(resId)

2、执行AccessibleService的指定方法实现点击

targetNode.performAction(AccessibilityNodeInfo.ACTION_CLICK);

可以通过DDMS>>Dump View Hierarchy查找View的ID, 结果如下, id = ll_home_me

开启启动Demo

主要原理:注册开机广播android.intent.action.BOOT_COMPLETED,在onReceive方法启动Demo

public class BootBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction().toString();
    if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
        Toast.makeText(context, "收到开机广播", Toast.LENGTH_LONG);
        Intent mIntent = new Intent(context, MainActivity.class);
        mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(mIntent);
    }
    }
}

参考Android 开机自启动应用

Demo没有安装在手机内存,但是如果手机关机之前,Demo在后台,那么重启手机时,Demo可以自动启动。

Demo地址

https://github.com/BuddyZH/OpenAirChina

目前设置启动国航APP后等待9秒,点击底部ME按钮ll_home_me,然后等待2秒,点击个人中心的“签到”fl_sign_up,最后等待5秒,点击签到页面的“签到”rl_sign_up_sign

猜你喜欢

转载自blog.csdn.net/zhanhong39/article/details/78696932