启动另一个应用程序时,使用服务启动活动

时间:2014-11-15 17:36:09

标签: android android-intent service taskmanager activity-manager

当我检测到一个新的应用程序(不在白名单中)被启动时,我正在尝试创建一个打开活动或某种窗口的服务。这样我想阻止人们访问像浏览器这样的应用程序,他们无法通过我的自定义启动程序访问,但使用应用程序,他们可以从启动器访问(例如应用程序中的链接,应该允许他们使用)。

我的代码工作正常,如果不应该启动的应用程序本身(我的自定义启动器),但如果另一个应用程序不在白名单上,我启动它它不会做任何事情。

public class AppLockerService extends Service {
public AppLockerService() {
}



@Override
public int onStartCommand(Intent intent, int flags, int startId) {


    final List whitelist = Arrays.asList(R.array.WhitelistedApps);


    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {


            ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            List<ActivityManager.RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses();
            for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
                try {
                    if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                        String openedApp = (String) appProcess.pkgList[0];
                        if (whitelist.contains(openedApp)) {
                            Intent launchIntent = new Intent(AppLockerService.this, ForbiddenApp.class);
                            launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(launchIntent);
                        }
                    }

                } catch (Exception e) {
                }

            }







        }
    }, 0, 1000);
    return START_STICKY;
}





@Override
public void onCreate() {
    // The service is being created
}


@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onDestroy() {
    super.onDestroy();
    Intent intent = new Intent(this, AppLockerService.class);
    startService(intent);
}


}

我猜,这个bug与Intent不正确有关,但我不知道它是怎么回事。我还尝试打开一个完全其他的应用程序而不是forbiddenapp.class但它仍然只有在坏应用程序是服务所属的应用程序时才有效。

提前多多感谢!

PS:也欢迎完全不同的aproaches!

0 个答案:

没有答案