我试图在android中实现服务来制作app locker。
我试图检查前台正在运行的活动以及它是否已锁定,将其转发到我的Locker活动。
我也在清单中添加了服务,但它根本不起作用。 这是代码`
private static Timer timer = new Timer();
public Boolean userAuth = false;
private Context mContext;
public String pActivity = "";
public IBinder onBind(Intent arg0) {
return null;
}
public void onCreate() {
super.onCreate();
mContext = this;
startService();
}
private void startService() {
timer.scheduleAtFixedRate(new mainTask(), 0, 500);
}
private class mainTask extends TimerTask {
public void run() {
toastHandler.sendEmptyMessage(0);
}
}
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Stopped ...", Toast.LENGTH_SHORT).show();
}
private final Handler toastHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
String activityOnTop;
ActivityManager manager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> tasks = manager.getRunningAppProcesses();
//Getting the foreground activity name
activityOnTop=tasks.get(0).processName;
//Checking it against the app I need to lock
if (activityOnTop.equalsIgnoreCase("com.droiddigger.techmanik")) {
Intent lockIntent = new Intent(mContext, Lockscreen.class);
lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(lockIntent);
} else if(activityOnTop.equalsIgnoreCase("com.droiddigger.applocker")){
}else{
}
}
};
答案 0 :(得分:0)
您必须启动该服务。它可以在Activity或BroadcastReceiver中完成。
startService(new Intent(this, UpdaterServiceManager.class));
例如:
public class MyActivity extends Activity {
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startService(new Intent(this, YourService.class));
finish();
}
}
修改强>
您始终会检索名为 tasks 的列表中的项目0。查看SDK文档,可以说没有指定列表顺序:https://developer.android.com/reference/android/app/ActivityManager.html#getRunningAppProcesses()
返回RunningAppProcessInfo记录的列表,如果有,则返回null 没有正在运行的进程(它不会返回空列表)。 此列表 未指定订购。
您必须以其他方式获取当前可见的活动。我建议使用AccessibilityService