Android-在其他应用程序之上启动活动

Android-在其他应用程序之上启动活动,android,android-activity,android-launcher,Android,Android Activity,Android Launcher,背景:我正在尝试构建一个启动器应用程序,它将用户限制为仅允许的一组应用程序,并且不允许他们访问设备设置&除允许的应用程序之外的任何其他应用程序 原因:这是一个私人公司向其员工分发设备的项目,使用受到限制 问题:我能够检测到其他应用程序的启动,但我无法将我的活动覆盖在它们之上。下面是代码,我在收到不允许应用程序的广播后正在尝试 private class BadAppReceiver extends BroadcastReceiver { @Override public v

背景:我正在尝试构建一个启动器应用程序,它将用户限制为仅允许的一组应用程序,并且不允许他们访问设备设置&除允许的应用程序之外的任何其他应用程序

原因:这是一个私人公司向其员工分发设备的项目,使用受到限制

问题:我能够检测到其他应用程序的启动,但我无法将我的活动覆盖在它们之上。下面是代码,我在收到不允许应用程序的广播后正在尝试

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

}
有趣的事实:如果我只是启动另一个应用程序,而不是试图从我的应用程序中打开一个活动,我就能够覆盖。使用此解决方案将使我的应用程序依赖于另一个应用程序,并将屏幕冻结几秒钟

问题:我遗漏了什么,或者我可以做什么来将我的活动置于其他应用之上

提前感谢,非常感谢您的帮助。 -普拉蒂德瓦尼

谢谢你,乌默尔, 我已经使用了你的解决方案,但这就是现在正在发生的事情,用户从托盘打开设置,我的应用程序获得广播并拍摄ErrorClass活动,我准备好的祝酒词会出现,但ErrorClass活动不会出现。所以用户可以访问设置,现在当用户按下设置上的后退按钮时,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);   
谢谢!!
-Pratidhwani

如果您想将一个应用程序覆盖在其他应用程序之上,请添加以下代码

 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.youractivity, null);

 wm.addView(myView, windowManagerParams);
向Android清单添加权限:


SYSTEM\u ALERT\u WINDOW

您好,在使用您的解决方案后,我在上面的帖子中添加了结果。请你看看,让我知道我做错了什么。谢谢你的帮助!!你的应用程序的图片视图/示例将有助于了解你的问题我能够解决我的问题,你的解决方案对我有效。我在活动中使用了它,所以它不起作用,现在我在服务中使用了它,效果非常好。非常感谢。请注意,要使用上述解决方案,您的应用程序必须具有-android.permission.SYSTEM\u ALERT\u WINDOW权限。@Pratidhwani顺便问一下,您正在制作什么样的应用程序?