1。概要
11.0 romシステムの開発では、アプリ内でフローティングウィンドウ権限を付与することも一般的な機能ですが、デバイス製品のプレハブアプリではデフォルトでフローティングウィンドウ権限を付与する必要があるため、動的にフローティングウィンドウ権限を付与する必要はありません。アプリ内のフローティング ウィンドウのアクセス許可
. さて、この機能を実現するためにこれを分析してみましょう
2. パッケージ名に応じて、デフォルトでアプリにフローティング ウィンドウ権限を付与するコア クラス
packages\apps\Settings\src\com\android\settings\applications\appinfo\DrawOverlayDetails.java
frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java
3. パッケージ名に従って、コア機能の分析とアプリの実装、デフォルトで付与されるフローティング ウィンドウ権限
システムでは、アプリのフローティング ウィンドウ権限を動的に申請する場合、常にシステムが設定したフローティング ウィンドウ ページにジャンプし、手動でフローティング ウィンドウ権限を開きます。このとき、アプリはフローティング ウィンドウ機能を使用できます
。のため、システムから設定する必要があります。
3.1 フローティングウィンドウ機能におけるDrawOverlayDetails.javaの解析
public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenceChangeListener,
OnPreferenceClickListener {
private static final String KEY_APP_OPS_SETTINGS_SWITCH = "app_ops_settings_switch";
private static final String LOG_TAG = "DrawOverlayDetails";