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中导入
反射时需要使用getDeclaredMethod
,getMethod
会提示没有此方法。
另对method和field都需要设置Accessible为true
否则会报错。
看起来我们需要知道要调用的类有的东西才可以。
Step2.Task1
- 这里使用smali命令进行编译
smali assemble -o dexName.dex ../../Resources/smali/