【发布时间】:2010-11-27 11:15:48
【问题描述】:
我想创建一个始终位于其他活动之上的活动(如模式窗口或 Windows 中的任务管理器)。 我怎样才能在安卓上做到这一点?谢谢
【问题讨论】:
-
我会尝试这样做。谢谢:)
-
您可以在 WindowManager 类的帮助下做到这一点。
标签: android android-activity window always-on-top
我想创建一个始终位于其他活动之上的活动(如模式窗口或 Windows 中的任务管理器)。 我怎样才能在安卓上做到这一点?谢谢
【问题讨论】:
标签: android android-activity window always-on-top
您可以在 Activity 的重写 onStop 方法中使用以下代码:
@Override
protected void onStop(){
super.onStop();
Intent intent = new Intent(this, ClassNameOfYourActivity.class);
startActivity(intent);
}
美感问题:如果任何其他活动试图获得焦点,您的活动将再次弹出。所以它不是模态窗口。
而且很危险!您将无法处理 Android GUI,您将只能控制您的应用程序 GUI。例如,开关调试模式、杀死应用程序(仅通过 ADB)、达到系统设置等都是不可能的。如果您关闭 ADB 并将其与自动启动机制结合使用,那么您将陷入困境。
因此,如果您与 Play 分享,您将不会受欢迎:)
【讨论】:
根据您要执行的具体操作,您可能会对位于其他活动之上的窗口感到满意。
Super Video 客户端和Floating Notes 等应用程序能够在其他活动上方显示浮动窗口。这些问题可能会为您指明正确的方向:
【讨论】:
你不能。这是在 Android 系统中定义的。
【讨论】:
按照步骤实现您的要求
在清单中添加以下代码
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
使用以下代码获取用户的覆盖权限
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();
}
}
【讨论】: