某些安全管理类具有程序锁功能,大致功能是这样的:安全管理程序列出系统中的所有应用,用户选定一些想锁定的程序,并设置好密码,这样以后,再运行那些程序会跳转到一个权限页面,要求输入密码访问,或者不访问并推出。如何实现呢?
第一个想法就是写一个service监测activity 栈,如果栈顶有更改,则判断其是否为受保护的程序,是,就intent转向自己定义的认证授权activity;否,则什么都不做。
找来找去,sdk没有提供某个回调方法或事件、广播之类的api,只能自己一直while中检测。
于是寻找第二种方法,在源码中找所有service和aidl,也没发现callback或者broadcast,activitymanager除了更改源码,无法在外部让它具有此类功能。
native层?暂不考虑。
现在把示例代码写出来,谁知道不用while的方式去检测activity栈顶情况的方法,请告诉我,谢了。
service 中的代码:
import java.util.List;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter