コルドバ - XHRエミュレータでのAndroidの仕事上の要求はなく、携帯電話に

DDD:

私は、私は私のアプリは、私のサービスに接続できませんでしたと言ってより多くのサポートの問い合わせを得ていた前3日のように、かなりの時間のためのアプリケーションストアにされている既存のアプリを持っています。

今では最終的に私のAndroidデバイス上で私に起こった - すべてがiOS用完璧に動作しない、と完全にアンドロイドのためのエミュレータ上で - しかし、現実の世界では何も。

私はコルドバでステップ・デバッグすることにより、これまで私はできる限り見ていると、それは、ホワイトリストのテスト罰金を渡します。私の非常に最初のXHRリクエストは罰金を動作しますが、それ以降のものは、常にI完全に近いアプリと再オープンするまで失敗します。

私が使用しています[email protected]-私も試してみました[email protected]

私のContent-Security-Policyこのようになります

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' gap:; img-src http://*.my-site.com.au https://*.my-site.com.au https://*.my-site.com http://*.my-site.com https://*.googleusercontent.com http://*.googleapis.com  https://google.com https://*.google.com https://*.googleapis.com https://*.gstatic.com 'self' data:; style-src http://*.googleapis.com https://*.googleapis.com 'self' 'unsafe-inline'; script-src 'self' https://*.googleapis.com http://*.googleapis.com http://maps.google.com http://*.gstatic.com https://*.gstatic.com https://maps.google.com 'unsafe-inline' 'unsafe-eval'">

マイコルドバ設定あり

<allow-navigation href="*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />

私は上記の/すべての組み合わせを交換/追加/削除しようとした<access origin="*" />が、運。

私のXHR応答は常に次のようになります。

xhr.responseUrl = "http://my-site.com/?d=12343902i49"
xhr.status = 0
xhr.responseText = ""

私は私が出て、デバッグ段階で、コルドバのプラグインを持っている可能性が限りXHRリクエストをステップ・デバッグしているWhitelist.javaが、すべてのものを返します罰金とそれがラインに成功したことになります

// If we don't need to special-case the request, let the browser load it.
return null;

機能の

WebResourceResponse shouldInterceptRequest(WebView view, String url)

org.apache.cordova.engine.SystemWebViewClient.java

私のAndroidのマニフェストには、以下があります

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />

私は[email protected]、コルドバプラットフォーム[email protected]を使用しています

私は深く掘るしようとしているいくつかの時間を費やしてきた、私はここで何をしないのですか?任意の助けいただければ幸いです!

jcesarmobile:

あなたがtargetSDKを下げた場合、問題が消えると、それはおそらくだusesCleartextTrafficNidhin Josehpで言及しました。SDK 28以上をターゲットとする場合にのみアンドロイド8以降のデバイスに影響を与えます。

代わりに手動で編集するのでAndroidManifest.xml、彼は示唆として(手動コルドバのアプリでそれを編集することはありません)あなたはこれを追加することができますconfig.xml

<platform name="android">
  <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
      <application android:usesCleartextTraffic="true" />
  </edit-config>
</platform>

あなたには、あなたのウィジェットのタグを変更する必要がありますconfig.xml。このような外観のものに:

<widget id="com.your.app.id" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets" 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">

(添加がありますxmlns:android="http://schemas.android.com/apk/res/android"

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=229559&siteId=1