[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
質問
Android 8のユーザーから、私のアプリ(バックエンドのフィードを使用している)のコンテンツが表示されないという報告を受けました。調査の結果、Android 8では以下のような例外が発生することがわかりました。
08-29 12:03:11.246 11285-11285/ E/: [12:03:11.245, main]: Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted
at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.doConnection(AbstractHttpAsyncTask.java:207)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.extendedDoInBackground(AbstractHttpAsyncTask.java:102)
at com.deiw.android.generic.tasks.AbstractAsyncTask.doInBackground(AbstractAsyncTask.java:88)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
(パッケージ名やURLなど、識別可能なものは削除しています)
Android 7以下では、すべてうまくいきます。
android:usesCleartextTraffic
をマニフェストに設定する(そして、それを
true
は役に立ちません、どうせデフォルト値ですから)、Network Security Informationも使っていません。もし私が
NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted()
を返します。
false
はAndroid 8の場合です。
true
は、同じapkファイルを使用して、古いバージョンのために。
Android Oに関するGoogleの情報でこの件に関する記述を探したのですが、うまくいきませんでした。
解決方法を教えてください。
によると ネットワークセキュリティの設定 -
Android 9 (API level 28)からは、ClearTextサポートが無効になっています。 はデフォルトで使用されます。
もご覧ください。 Android Mとクリアテキスト・トラフィックとの戦い
コデラブス説明 Googleより
オプション1
まず、URLに "http://" ではなく "https://" と打ってみてください。
オプション2
ファイル res/xml/network_security_config.xml を作成する - 。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
</domain-config>
</network-security-config>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
オプション3
android:usesCleartextTraffic Doc.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
また、以下のように
david.sの回答
ご指摘
android:targetSandboxVersion
も問題になる可能性があります - 。
によると マニフェストドキュメント -
android:targetSandboxVersion
このアプリが使用するターゲットのサンドボックスです。サンドボックスのバージョンが高いほど の数値が大きいほど、セキュリティのレベルが高くなります。デフォルト値は1です。 この属性を2に設定すると、アプリは以下のように切り替わります。 別のSELinuxサンドボックス には、以下の制限があります。 レベル2のサンドボックス
- のデフォルト値は
usesCleartextTraffic
のネットワークセキュリティ設定はfalseです。- Uidの共有は許可されていません。
だから、オプション4は
もし、あなたが
android:targetSandboxVersion
で
<manifest>
にして、それを
1
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>
関連
-
[解決済み】Android - SDKバージョン23のアップデート後、ACTION-VIEWインテントフィルタを持つアクティビティを少なくとも1つ追加する。
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み】apkインストール時のINSTALL_FAILED_NO_MATCHING_ABIS
-
[解決済み】findViewByIDがnullを返す。
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パッケージ名(Google Analytics)に一致するクライアントが見つからない - 複数のproductFlavorsとbuildTypes
-
[解決済み】メソッド 'findViewById(int)' を解決できない。)
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み】sendUserActionEvent()がnullである。
-
[解決済み】Couldn't load memtrack module Logcat Error
-
[解決済み】googleコンソールエラー`OR-IEH-01`について
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] Android Fragment no view found for ID?
-
[解決済み] setBackgroundDrawable() 非推奨
-
[解決済み] HTTPSなのにWebViewにERR_CLEARTEXT_NOT_PERMITTEDが表示される [重複]。