Cara mudah untuk menerapkannya adalah dengan menggunakan atribut ini ke AndroidManifest.xml
tempat Anda mengizinkan semua http
untuk semua permintaan:
<application android:usesCleartextTraffic="true">
</application>
Tetapi jika Anda menginginkan beberapa konfigurasi lagi untuk tautan yang berbeda misalnya, mengizinkan http
beberapa domain tetapi tidak domain lain Anda harus menyediakan res/xml/networkSecurityConfig.xml
file.
Untuk melakukan ini di Android 9 Pie, Anda harus menetapkan tag networkSecurityConfig
Manifest application
seperti ini:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>
Kemudian di xml
folder Anda, Anda sekarang harus membuat file dengan nama network_security_config
seperti yang Anda beri nama di Manifest dan dari sana konten file Anda harus seperti ini untuk mengaktifkan semua permintaan tanpa enkripsi:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
Dari sana Anda siap berangkat. Sekarang aplikasi Anda akan membuat permintaan untuk semua jenis koneksi. Untuk informasi tambahan tentang topik ini baca di sini .
The SOLUSI SEPENUHNYA KERJA untuk kedua
Android
atauReact-native
pengguna menghadapi masalah ini hanya menambahkan iniandroid:usesCleartextTraffic="true"
di AndroidManifest.xml file seperti ini:android:usesCleartextTraffic="true" tools:ignore="GoogleAppIndexingWarning"> <uses-library android:name="org.apache.http.legacy" android:required="false" />
di antara
<application>
..</application>
tag seperti ini:<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:allowBackup="false" android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:ignore="GoogleAppIndexingWarning"> <uses-library android:name="org.apache.http.legacy" android:required="false" /> <activity android:name=".MainActivity" android:label="@string/app_name"/> </application>
sumber
tools:ignore
kesalahan, pastikan untuk menambahkanxmlns:tools="http://schemas.android.com/tools"
di dalam fileapplication
. Seperti itu<application xmlns:tools="http://schemas.android.com/tools" ...
NSAppTransportSecurity
info.plist. stackoverflow.com/questions/38418998/…https url
bekerja dengan baik. Saya telah mencoba menambahkanandroid:usesCleartextTraffic="true"
danuses-library
berpisah, tetapi masih tidak berhasil :(Sebuah cara sederhana tersedia
android:usesCleartextTraffic="true"
untuk AndaAndroidManifest.xml
android:usesCleartextTraffic="true"
Anda
AndroidManifest.xml
terlihat seperti<?xml version="1.0" encoding="utf-8"?> <manifest package="com.dww.drmanar"> <application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:usesCleartextTraffic="true" android:theme="@style/AppTheme" tools:targetApi="m"> <activity android:name=".activity.SplashActivity" android:theme="@style/FullscreenTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Saya harap ini akan membantu Anda.
sumber
Jalan mudah
Tambahkan
usesCleartextTraffic
ke AndroidManifest.xml<application ... android:usesCleartextTraffic="true" ...>
Menunjukkan apakah aplikasi bermaksud menggunakan traffic jaringan cleartext, seperti HTTP cleartext. Nilai default untuk aplikasi yang menargetkan API level 27 atau lebih rendah adalah "true". Aplikasi yang menargetkan API level 28 atau lebih tinggi secara default ke "false".
sumber
Cukup setel
usesCleartextTraffic
tanda di tag aplikasiAndroidManifest.xml
file. Tidak perlu membuat file konfigurasi untuk Android.<application android:usesCleartextTraffic="true" . . .>
sumber
Untuk
React Native
aplikasi saat menjalankan debug, tambahkan yangxml block
disebutkan oleh @Xenolion kereact_native_config.xml
dalam<project>/android/app/src/debug/res/xml
Mirip dengan cuplikan berikut:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="false">localhost</domain> <domain includeSubdomains="false">10.0.2.2</domain> <domain includeSubdomains="false">10.0.3.2</domain> </domain-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
sumber
saya mendapat masalah yang sama dan saya perhatikan bahwa konfigurasi keamanan saya memiliki TAG yang berbeda seperti jawaban @Xenolion mengatakan
<network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> </domain-config> </network-security-config>
jadi saya mengubah TAGS "domain-config" untuk "base-config" dan bekerja, seperti ini:
<network-security-config> <base-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> </base-config> </network-security-config>
sumber
Anda dapat memeriksa apakah Anda mengirim clearText melalui Perbaikan HTTP: https://medium.com/@son.rommer/fix-cleartext-traffic-error-in-android-9-pie-2f4e9e2235e6
ATAU
Dalam Kasus klien HTTP Apache deprecation (Dari Google): Dengan Android 6.0, kami menghapus dukungan untuk klien HTTP Apache. Mulai Android 9, library tersebut dihapus dari bootclasspath dan tidak tersedia untuk aplikasi secara default. Untuk terus menggunakan klien HTTP Apache, aplikasi yang menargetkan Android 9 dan lebih tinggi dapat menambahkan yang berikut ini ke AndroidManifest.xml:
Sumber https://developer.android.com/about/versions/pie/android-9.0-changes-28
sumber