Android - uruchamianie aktywności na innych aplikacjach

Tło: Próbuję zbudować aplikację Launcher, która ograniczy użytkowników tylko do zestawu dozwolonych aplikacji i nie pozwoli im na dostęp do ustawień urządzenia i niczego innego niż dozwolone aplikacje.

Dlaczego: Jest to projekt dla prywatnej firmy do dystrybucji urządzeń dla swoich pracowników z ograniczonym wykorzystaniem.

Problem: jestem w stanie wykryć uruchomienie innych aplikacji, ale nie jestem w stanie nakładać na siebie mojej aktywności. Poniżej znajduje się kod, próbuję po otrzymaniu transmisji niedozwolonej aplikacji.

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();
     }

}

Interesujący fakt: jestem w stanie nałożyć nakładkę, jeśli po prostu uruchomię inną aplikację, zamiast próbować otworzyć działanie z mojej aplikacji. Dzięki temu rozwiązaniu moja aplikacja będzie zależna od innej aplikacji i zamrozi ekran na kilka sekund.

Pytanie: Czego mi brakuje lub co mogę zrobić, aby aktywować moją aktywność w innych aplikacjach.

Z góry dziękujemy, a twoja pomoc jest wysoko ceniona. - Pratidhwani

Dzięki Umer, użyłem twojego rozwiązania, ale to właśnie dzieje się teraz, użytkownik otwiera ustawienia z zasobnika, moja aplikacja pobiera transmisję i strzela ErrorClass Activity, pojawia się Toast, który mam na miejscu, ale ErrorClass Activity nie pojawia się. Użytkownik może uzyskać dostęp do ustawień, teraz gdy użytkownik naciśnie przycisk Wstecz na ustawieniach, pojawi się ErrorClass.

to jest to, co mam w 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);   

Dzięki!! - Pratidhwani

questionAnswers(1)

yourAnswerToTheQuestion