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);
Спасибо!! - Пратидхвани