SecretChallenge

Step1.Task1

  • 自启动Receiver需要在Manifest中定义,设置接收BOOT_COMPLETE的权限以及 设置intent-filter
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
<!--    <action android:name="android.intent.action.MAIN"/>-->
</intent-filter>
  • Android10 后需要设置前台服务类型,以及向用户请求获得权限
<service
    ...
    android:foregroundServiceType="location" >
    ...
</service>

---

if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, pers, 1);
}
  • 位置方面遇到的问题是似乎没能够更新位置信息

Step1.Task2

  • 似乎并不需要在子线程中更新UI,但是在Task1中也有代码完成类似功能

Step1.Task3

  • Step1_Task3_classes.jar复制到libs/classes.jar并在gradle.build中导入

反射时需要使用getDeclaredMethodgetMethod会提示没有此方法。 另对method和field都需要设置Accessible为true否则会报错。

看起来我们需要知道要调用的类有的东西才可以。

Step2.Task1

  • 这里使用smali命令进行编译
smali assemble -o dexName.dex ../../Resources/smali/