有沒有一種方法可以在任何android應用程序之上繪製覆蓋窗口?在Android系統中繪製覆蓋圖(系統範圍)
我正在使用Android x86端口並擁有系統權限。
@編輯:覆蓋下面的視圖應該會收到所有事件。
有沒有一種方法可以在任何android應用程序之上繪製覆蓋窗口?在Android系統中繪製覆蓋圖(系統範圍)
我正在使用Android x86端口並擁有系統權限。
@編輯:覆蓋下面的視圖應該會收到所有事件。
這是可能做到這一點通過創建一個Service
,增加了當前WindowManager
的觀點:
public class OverlayService extends Service {
@Override
public void onCreate() {
super.onCreate();
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
View overlay = /* create your overlay here */;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
windowManager.addView(overlay , params);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
但你需要這個額外的權限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
然後就是登記服務清單:
<service android:name=".OverlayService" ></service>
and st藝術它:
startService(new Intent(this, OverlayService.class));
AFAIK在SDK中沒有合法的方式來做到這一點。然而市場上的一些應用程序已經設法完成了它。 如果你確實找到一種方法,我不會指望它永遠在工作,他們選擇不包含一個公開的API爲此有效的安全原因。 – FoamyGuy
不適用於Android市場。我想修改Android本身。 – Friedrich