概要
絶対に忘れちゃいそうなので、ここにメモメモ。Flutterに限ることではないですが。
FlutterでAndroidアプリつくっていて、外部と通信する処理(例えばREST-APIを呼び出し)する場合
以下のパーミッションをマニフェストに追加しておかないと、実機インストールで動かした場合に
動きません。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxx.xxx.xxx.xxx"> <!-- https://flutter.dev/docs/development/data-and-backend/networking --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application
これ、USBケーブルで実機を接続している状況とかだとパーミッション設定してなくても通信できるんですよね・・。
LogCat で見て、やっと分かりました。
んで、ちゃんとFlutterのドキュメント見るとしっかりと書いてありましたw
Android apps must declare their use of the internet in the Android manifest (AndroidManifest.xml )
Android側のドキュメントにもしっかりと書いてありました。
アプリでネットワーク オペレーションを行うには、マニフェストに次の権限を含める必要があります。
注: Internet 権限と ACCESS_NETWORK_STATE 権限はどちらも標準の権限です。つまり、インストール時に付与され、実行時にリクエストする必要はありません。
要は、「ちゃんとドキュメント読め」ってことでした。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場