从 Apache Cordova 应用程序调用 API 无效 (Android)

Calling API from Apache Cordova app not working (Android)

我正在开发一个 Apache Cordova 应用程序,它在尝试加载地图时卡住了。它适用于 android 4.2.2,但不适用于更新的版本 7.0.0/7.1.1。

我尝试从我的 index.html 文件中调用它,下一行:

<script type="text/javascript" src="http://api.cercalia.com/api/cercalia.js?key=[key]&theme=red"></script>

我还使用 API 在线代码在我的 JS 文件夹中创建了一个测试文件,它运行良好。

我怀疑 whitelist 插件可能无法正常工作。

关于如何解决这个问题有什么想法吗?

显然我只需要在 index.html 标题上添加下一个元标记:

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src  'self' 'unsafe-inline' *">

这将正确加载地图。

好的,所以我找到了问题。

window.cordova.plugins

未定义。这是在以前的 cordova 版本中放置插件的标准或常见位置,但在 corvoda 7 中没有定义。

我发现这行代码导致了问题:

if (window.cordova && window.cordova.plugins.firebase && window.cordova.plugins.firebase.analytics) {

我不知道为什么在错误消息中显示 -

您需要互联网权限

转到应用程序 -> 源代码 -> 主 -> AndroidManifest.xml。

添加以下代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.java2blog.helloworldapp">
<uses-permission android:name="android.permission.INTERNET" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".HelloWorldActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>