我想创建一个始终位于其他活动之上的活动(如 Windows 中的模式窗口或任务管理器)。我怎样才能在安卓上做到这一点?谢谢
问问题
30108 次
4 回答
12
您可以在活动的重写 onStop 方法中使用以下代码:
@Override
protected void onStop(){
super.onStop();
Intent intent = new Intent(this, ClassNameOfYourActivity.class);
startActivity(intent);
}
美观问题:如果任何其他活动试图获得焦点,您的活动将再次弹出。所以它不是一个模态窗口。
而且很危险!您将无法处理 Android GUI,您将只能控制您的应用程序 GUI。例如,开关调试模式、杀死应用程序(仅通过 ADB)、达到系统设置等都是不可能的。如果您关闭 ADB 并将其与自动启动机制结合使用,那么您将陷入困境。
因此,如果您与 Play 分享,您将不会受欢迎 :)
于 2013-05-28T11:58:38.727 回答
5
根据您要执行的具体操作,您可能会对位于其他活动之上的窗口感到满意。
于 2012-10-15T14:23:00.330 回答
4
你不能。因为这是在 Android 系统中定义的。
于 2010-11-27T11:36:26.407 回答
0
按照步骤实现您的要求
- 创建一个将成为顶级活动的活动
在清单中添加以下代码
<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(); } }
于 2019-10-31T09:36:52.170 回答