如何使活动窗口始终保持最佳状态

时间:2010-11-27 11:15:48

标签: android android-activity window always-on-top

我想创建一个始终位于其他活动之上的活动(如Windows中的模式窗口或任务管理器)。 我该如何在Android上执行此操作?感谢

4 个答案:

答案 0 :(得分:10)

您可以在活动的重写onStop方法中使用以下代码:

@Override
protected void onStop(){
    super.onStop();
    Intent intent = new Intent(this, ClassNameOfYourActivity.class);
    startActivity(intent);
}

美容问题:如果任何其他活动试图获得焦点,您的活动将再次弹出。所以它不是一个模态窗口。

这很危险!您将无法处理Android GUI,您将只能控制您的应用程序GUI。例如,开关调试模式,杀死应用程序(仅限ADB),达到系统设置等是不可能的。如果您关闭ADB并将其与自动启动机制结合使用,那么您将处于陷阱状态。

如果你与Play分享它,你将不会受欢迎:)

答案 1 :(得分:4)

你做不到。这是在Android系统中定义的。

答案 2 :(得分:4)

根据您的具体操作,您可能会对保持在其他活动之上的窗口感到满意。

Super Video客户端& Floating Notes能够在其他活动上方显示浮动窗口。这些问题可能会指出您正确的方向:

答案 3 :(得分:0)

按照步骤实现要求

  1. 创建一个将成为首要活动的活动
  2. 在清单中添加以下代码

    uses-permission android:name =“ android.permission.SYSTEM_ALERT_WINDOW”

  3. 使用以下代码获取用户的重叠权限

    if(Build.VERSION.SDK_INT> = 23){ 如果(!Settings.canDrawOverlays(this)){ 新的AlertDialog.Builder(this) .setTitle(“权限请求”) .setMessage(“此应用需要您的许可才能覆盖系统应用”“) .setPositiveButton(“打开设置”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog,int which){ 意图myIntent =新意图(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); startActivityForResult(myIntent,101); } }) .setNegativeButton(android.R.string.no,null) 。节目(); } }