極楽とんぼのロボット製作記

情報工学系大学院生がロボットとその周辺技術や身の回りの出来事について紹介するブログ

「画面のオーバーレイを検出」AndroidをMarshmallow(6.0)にしたらひどい目にあった件


とある休日にスマホをいじっていると、"ソフトウェアアップデート"の通知が来た。特にやることも無く暇な日であったし、新機能も気になったのでAndroid Lollipop(5.0)からAndroid Marshmallow(6.0)にしてみることにした。やることはアップデートボタンを押すだけだと、この時まで本当に信じ込んでいた。このワンタップが私のスマホ環境を徹底的に不便にすることなど、この時の私には想像もつかなかった。
アップデートが終了し、Twitterに飯テロ画像でもアップしようと思ったその矢先、それは起こった。
f:id:gokuraku104robot:20170726222239p:plain:w200
なんだ、いつものアクセス権限の認証かと思って「許可」を押すと、
f:id:gokuraku104robot:20170726222325p:plain:w200
画面オーバーレイの検出!?何のことだ?
ググると以下のサイトで解説されている。ブルーライトカットを行うアプリやリンクをタップすると自動でブラウザが起動するようなアプリはこの画面オーバーレイに相当する。要するに他のアプリの上に表示できるようなアプリということだ。
Androidの「画面オーバーレイを検出」の表示オフにする方法!
画面オーバーレを検出が消えないのを消す方法 | スターミント
「画面オーバーレイを検出」エラーが表示されるときに確認すべきこと | TeraDas-テラダス


こうしたアプリはその性質上、ユーザに上書きされた画面を見せながら意図したものとは別の操作を行えてしまうとして、権限の変更時にはこれらのアプリが使用できないようになっている(なら権限設定変更時のみ自動的に画面オーバーレイを行っているアプリを強制終了してくれればよいのだが...)。したがって、設定変更する際には手動で画面オーバーレイをしているアプリを終了する必要がある。

方法1:画面オーバーレイしているアプリを1つずつ終了させる

先程の画面オーバーレイを検出のダイアログで「設定を開く」をタップすると
f:id:gokuraku104robot:20170726223149p:plain:w200
ここで他のアプリの上に表示が許可されているアプリをユーザが1つ1つ丁寧に確認して他のアプリの上に表示を"不可"にする。現在起動中の画面オーバーレイアプリ全てを終了させることができればユーザの勝利だ。私はスマホに入っている150近いアプリを1つ1つ確認することにした。何せ暇だった。ところが程なくして壁に突き当たる。画面オーバーレイを不可にできないアプリが存在するのだ。これを見てほしい。
f:id:gokuraku104robot:20170726223957p:plain:w200
ドコモデータコピー、おそらくスマホの引っ越しをする際にドコモが使用を推奨しているアプリなのだろう。こういった購入時にデフォルトで入っているアプリは設定がほとんど変更できない。私のスマホにはこうしたアプリが20以上は確認できた。こうしたアプリが現在起動中なのかどうか、それらを1つ1つ調べる気には到底なれず、別の方法を調べることにした。

方法2:設定の許可から直接権限を変更する

設定→アプリから権限を変更したいアプリ(今回はTwitter)を選択する。
f:id:gokuraku104robot:20170726224618p:plain:w200
ここから「許可」を選択する
f:id:gokuraku104robot:20170726224804p:plain:w200
ストレージが不可になっているため、許可する。多くの解説サイトはここですんなりと権限を許可することができている。だが、私のスマホでは再び画面オーバーレイが検出され、私は振り出しに戻された。
f:id:gokuraku104robot:20170726225139p:plain:w200

ユーザが求めているのはオーバーレイしているアプリの設定を変更することじゃない、使いたいアプリの設定を変更することなんだ!

誰が好き好んで設定変更のための設定変更をするんだ。俺はTwitterで飯テロ画像を上げたいだけなんだ。それともこれは飯テロを阻止するための何者かの謀略なのか!

Marshmallowとの別れ

私は彼と過ごした3時間を忘れない。私の貴重な休日をいとも簡単に奪い去った彼を一生忘れない。どうしてこんな致命的な欠陥を抱えたままリリースしてしまったのか理解できない。私は彼に別れを告げ、新天地を目指すことにした。

方法3:Nougat(7.0)にする

このオーバーレイ検出の問題はMarshmallowのみで確認されている。私はMarshmallowよりまだ見ぬNougatの方が使いやすくなっていることを信じて、アップデートボタンをタップした。
f:id:gokuraku104robot:20170727224756p:plain:w200
アップデート終了後、無事アプリの権限が変更できるようになっていることを確認した。これでようやくTwitterに画像をアップできる。