簡體   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