在项目开发中碰到一个问题,需要监听到任意一个app打开,不管是手动打开还是自动跳转到别的apk,都可以捉取到启动信息。参考了一些资料发现有两种方式。第一种:实现IActivityController.Stub这个类,系统本身有这个接口可以调用的,但是因为系统是隐藏该接口的,所以需要自己实现它。继承了这个类后它会重写activityStarting,这个可以抓取任意启动的app的包名。代码如下:
public class ServiceTest extends Service{
privatestatic final String HIDE_ACTION = "com.jsr.HIDE_FLOATVIEW";
IActivityManagermgr;
@Override
publicIBinder onBind(Intent arg0) {
//TODO Auto-generated method stub
returnnull;
}
@Override
publicvoid onCreate() {
//TODO Auto-generated method stub
super.onCreate();
Log.i("liting", "oncreate");
mgr= ActivityManagerNative.getDefault();
try{
mgr.setActivityController(new ActivityController());
}catch(RemoteExceptione){
}
}
privateclass ActivityController extendsIActivityController.Stub{