🔒

showWhenLockedがtrueになっていたのでAndroidアプリでスリープから解除するとロック画面より先にアプリが表示されていた

2023/12/29に公開

Flutterでアプリを開発していた時にハマったので備忘として残しておきます。

ロック画面が出てこない

アプリを実装していく中で、Androidで
スマホをスリープ→スマホを起動
とすると、ロック画面より先にアプリが表示されていました。

期待していた動作

アプリ表示中→スマホをスリープ→スマホを起動→ロック画面表示→ロック画面解除→直前に起動していたアプリが表示される

自分が実装しているアプリの動作

アプリ表示中→スマホをスリープ→スマホを起動→直前に起動していたアプリが表示される→ホームボタン押下→ロック画面表示→ロック画面解除→ホーム画面表示

原因

showWhenLockedtrue に設定されていたことが原因でした。
https://source.android.com/docs/core/display/multi_display/lock-screen?hl=ja

android/app/src/main/AndroidManifest.xml
<manifest xmlns:android="XXX">
   <application
        android:label="sample"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <activity
             ...
	    <!-- 👇コイツ -->
            android:showWhenLocked="true"
            ...
            <meta-data
              ...
              />
            <intent-filter>
               ...
            </intent-filter>
        </activity>
        <meta-data
	    ...
		   />
    </application>
</manifest>

android:showWhenLocked="false"とするか、android:showWhenLocked="true"の一行を削除することでスマホ起動時にアプリより先にロック画面が表示されるようになりました。

Discussion