Android - запуск активности поверх других приложений

Предыстория: я пытаюсь создать приложение Launcher, которое ограничит пользователей только набором разрешенных приложений и не позволит им получить доступ к настройкам устройства и чему-либо, кроме разрешенных приложений.

Почему: Это проект для частной компании по распространению устройств для своих сотрудников с ограниченным использованием.

Проблема: я не могу обнаружить запуск других приложений, но не могу наложить поверх них свою активность. Ниже приведен код, я пытаюсь после получения трансляции недопустимого приложения.

private class BadAppReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context arg0, Intent arg1) {
         Intent i = new Intent(HomePage.this,ErrorClass.class);
         wh.topAct = wh.bad_app;
         HomePage.this.startActivity(i);
         Toast.makeText(HomePage.this, "Access to " + wh.bad_app + " is not allowed.",Toast.LENGTH_LONG).show();
     }

}

Интересный факт: у меня есть возможность наложения, если я просто запускаю другое приложение вместо того, чтобы пытаться открыть Activity из своего приложения. Использование этого решения сделает мое приложение зависимым от другого приложения и на несколько секунд останавливает экран.

Вопрос: Что я пропускаю или могу сделать, чтобы перенести мою активность в другие приложения.

Заранее спасибо и ваша помощь высоко ценится. - Пратидхвани

Спасибо Umer, я использовал ваше решение, но это то, что происходит сейчас, пользователь открывает настройки из трея, мое приложение получает трансляцию и запускает ErrorClass Activity, появляется тост, который у меня есть, но ErrorClass Activity не появляется. Таким образом, пользователь может получить доступ к настройкам, теперь, когда пользователь нажимает кнопку «Назад» в настройках, появляется ErrorClass.

это то, что я имею в ErrorClass onCreate

        super.onCreate(savedInstanceState);

         WindowManager.LayoutParams windowManagerParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY , 
                    WindowManager.LayoutParams. FLAG_DIM_BEHIND, PixelFormat.TRANSLUCENT);

         WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);

            LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
            View myView = inflater.inflate(R.layout.error, null);

         wm.addView(myView, windowManagerParams);

        wh = ((Launcher) getApplication()).getvar();
        mHandlerReg.removeCallbacks(mUpdatereg);
        mHandlerReg.postDelayed(mUpdatereg,2000);   

Спасибо!! - Пратидхвани

Ответы на вопрос(1)

Ваш ответ на вопрос