Ionic 3 android权限互联网

时间:2018-11-23 07:27:55

标签: cordova ionic-framework ionic3 android-permissions ionic-native

我正在编写一个将请求发送到REST API的应用。

API调用可在网络浏览器中运行,但不能在模拟器中,也不能在设备上运行。

离子CLI 4.4.0

科尔多瓦8.1.2

我做了什么:

我在此side上使用android权限:

app.modules.ts

import { AndroidPermissions } from '@ionic-native/android-permissions';
@NgModule({
  declarations: [
  ],
  imports: [
  ],
  entryComponents: [
  ],
  providers: [
    AndroidPermissions
  ],
  bootstrap: [IonicApp]
})
export class AppModule {}

api-call.ts

import { AndroidPermissions } from '@ionic-native/android-permissions';
export class ApiCallPage {

    constructor(private androidPermissions: AndroidPermissions) {
        this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.INTERNET).then(
            result => console.log('Has permission?', result.hasPermission),
            err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.INTERNET)
        );
    }
}

目标设备(AVD管理器中的设备和仿真器)具有 API 22(Android 5.1)

config.xml

<access origin="*" />
<preference name="android-minSdkVersion" value="19" />
<plugin name="cordova-plugin-android-permissions" spec="1.0.0" />
<engine name="android" spec="^7.1.1" />

最后一个(引擎名称)可能是cordova-android版本的,不一定是5.1。在 package.json 中,其依赖项为"cordova-android": "^7.1.1"

  • /platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
  • /platforms/android/app/src/main/AndroidManifest.xml

...两个文件都包含(不是手写的):

<uses-permission android:name="android.permission.INTERNET" />

不是CORS问题。 REST API在与网络浏览器不同的服务器上运行,并且可以与网络浏览器一起使用。

我想我做了一切。有什么遗漏或有问题吗?

要访问Ionic(科尔多瓦)互联网,您需要做什么?

[UPDATE] 该应用程序信息向我显示该应用程序具有完全网络访问权限。现在我很茫然。

screenshot CAT S30 App-Info

在API中,我在引导时记录了每个请求。来自设备的应用程序请求未到达。浏览器中的应用程序到达。

1 个答案:

答案 0 :(得分:0)

这是一个CORS问题,但不是在API方面,而是在客户端。

在config.xml <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />中解决了我的问题。

看看github ionic-team issue

对我来说,它是Android 5.1和8.0。