androidはhttp通信が許可されていない
webAPIをpost/getするアンドロイドアプリを実装したのですが、
1 |
Cleartext communication to 10.0.2.2 not permitted by network security policy |
とのエラーが発生 このときの対処法をメモ
環境
- Android Studio 3.4
- Android 9 (API level 28)
原因
android9 API level 28からはHTTP通信がデフォルトで無効になっている様
なので、httpsじゃない通信は全て失敗してしまう。
webAPIサーバーをnodejsで立てて、ローカル環境でテストする際などは、通信することが不可能!なので、httpでも通信できる様にマニュフェストを変更します
対策は、以下
対策
対策は、以下のAndroidManifest.xmlにusesCleartextTrafficをtrueに設定するだけ
アプリケーションタグ内に
1 |
android:usesCleartextTraffic="true" |
を追加してください。そうすることで、httpsでなくても、http通信も許可されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.apitest"> <uses-permission android:name="android.permission.INTERNET"/> <application android:usesCleartextTraffic="true" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.ApiTest"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
2022/5/4更新