繁体   English   中英

如何使活动窗口始终在最前面

[英]How to make an activity window stay always on top

我想创建一个始终位于其他活动顶部的活动(如 Windows 中的模式窗口或任务管理器)。 我怎样才能在 Android 上做到这一点? 谢谢

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

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

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

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

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

根据您究竟要做什么,您可能会对位于其他活动之上的窗口感到满意。

超级视频客户端和浮动笔记等应用程序能够在其他活动上方显示浮动窗口。 这些问题可能会为您指明正确的方向:

你不能。 因为这是在Android系统中定义的。

按照步骤来实现您的要求

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

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  3. 使用以下代码获取用户的覆盖权限

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (!Settings.canDrawOverlays(this)) { new AlertDialog.Builder(this) .setTitle("Permission Request") .setMessage("This app needs your permission to overlay the system apps") .setPositiveButton("Open settings", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); startActivityForResult(myIntent, 101); } }) .setNegativeButton(android.R.string.no, null) .show(); } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM